@burdenoff/microfe-devportal 2026.1108.1 → 2026.1108.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.
- package/dist/__tests__/utils/renderWithProviders.d.ts +0 -2
- package/dist/_virtual/_rolldown/runtime.js +4 -5
- package/dist/dev/main.d.ts +0 -1
- package/dist/devportal/AdminDevportalRoot.d.ts +0 -2
- package/dist/devportal/AdminDevportalRoot.js +9 -6
- package/dist/devportal/AdminDevportalRoot.js.map +1 -1
- package/dist/devportal/AdminDevportalRoutes.d.ts +1 -2
- package/dist/devportal/AdminDevportalRoutes.js +1 -2
- package/dist/devportal/AdminDevportalRoutes.js.map +1 -1
- package/dist/devportal/DevportalRoot.d.ts +0 -2
- package/dist/devportal/DevportalRoot.js +13 -10
- package/dist/devportal/DevportalRoot.js.map +1 -1
- package/dist/devportal/DevportalRoutes.d.ts +1 -2
- package/dist/devportal/DevportalRoutes.js +19 -17
- package/dist/devportal/DevportalRoutes.js.map +1 -1
- package/dist/devportal/components/AppCard.d.ts +0 -2
- package/dist/devportal/components/AppCard.js +21 -22
- package/dist/devportal/components/AppCard.js.map +1 -1
- package/dist/devportal/components/ConfirmDialog.d.ts +0 -2
- package/dist/devportal/components/ConfirmDialog.js +9 -10
- package/dist/devportal/components/ConfirmDialog.js.map +1 -1
- package/dist/devportal/components/DataTable.d.ts +1 -3
- package/dist/devportal/components/DataTable.js +20 -21
- package/dist/devportal/components/DataTable.js.map +1 -1
- package/dist/devportal/components/EmptyState.d.ts +0 -2
- package/dist/devportal/components/EmptyState.js +1 -2
- package/dist/devportal/components/EmptyState.js.map +1 -1
- package/dist/devportal/components/FeatureFlaggedRoute.d.ts +0 -2
- package/dist/devportal/components/FeatureFlaggedRoute.js +1 -2
- package/dist/devportal/components/FeatureFlaggedRoute.js.map +1 -1
- package/dist/devportal/components/FormField.d.ts +0 -2
- package/dist/devportal/components/FormField.js +23 -24
- package/dist/devportal/components/FormField.js.map +1 -1
- package/dist/devportal/components/GrantDelegationModal.d.ts +0 -2
- package/dist/devportal/components/GrantDelegationModal.js +1 -2
- package/dist/devportal/components/GrantDelegationModal.js.map +1 -1
- package/dist/devportal/components/ImageUploadField.d.ts +0 -2
- package/dist/devportal/components/ImageUploadField.js +1 -2
- package/dist/devportal/components/ImageUploadField.js.map +1 -1
- package/dist/devportal/components/LoadingState.d.ts +0 -2
- package/dist/devportal/components/LoadingState.js +6 -7
- package/dist/devportal/components/LoadingState.js.map +1 -1
- package/dist/devportal/components/ManifestViewer.d.ts +0 -2
- package/dist/devportal/components/ManifestViewer.js +1 -2
- package/dist/devportal/components/ManifestViewer.js.map +1 -1
- package/dist/devportal/components/MarkdownEditor.d.ts +0 -2
- package/dist/devportal/components/MarkdownEditor.js +1 -2
- package/dist/devportal/components/MarkdownEditor.js.map +1 -1
- package/dist/devportal/components/MultiSelectCombobox.d.ts +1 -2
- package/dist/devportal/components/MultiSelectCombobox.js +1 -2
- package/dist/devportal/components/MultiSelectCombobox.js.map +1 -1
- package/dist/devportal/components/NodeSmokePanel.d.ts +0 -2
- package/dist/devportal/components/NodeSmokePanel.js +17 -18
- package/dist/devportal/components/NodeSmokePanel.js.map +1 -1
- package/dist/devportal/components/OnboardingChecklist.d.ts +0 -2
- package/dist/devportal/components/OnboardingChecklist.js +15 -16
- package/dist/devportal/components/OnboardingChecklist.js.map +1 -1
- package/dist/devportal/components/PackageValidationPanel.d.ts +0 -2
- package/dist/devportal/components/PackageValidationPanel.js +12 -13
- package/dist/devportal/components/PackageValidationPanel.js.map +1 -1
- package/dist/devportal/components/PageLayout.d.ts +0 -2
- package/dist/devportal/components/PageLayout.js +16 -17
- package/dist/devportal/components/PageLayout.js.map +1 -1
- package/dist/devportal/components/PermissionGuard.d.ts +0 -2
- package/dist/devportal/components/PermissionGuard.js +5 -6
- package/dist/devportal/components/PermissionGuard.js.map +1 -1
- package/dist/devportal/components/RegisterPickupLocationModal.d.ts +0 -2
- package/dist/devportal/components/RegisterPickupLocationModal.js +13 -14
- package/dist/devportal/components/RegisterPickupLocationModal.js.map +1 -1
- package/dist/devportal/components/ReportOrderIssueModal.d.ts +0 -2
- package/dist/devportal/components/ReportOrderIssueModal.js +1 -2
- package/dist/devportal/components/ReportOrderIssueModal.js.map +1 -1
- package/dist/devportal/components/SecretDisplay.d.ts +0 -2
- package/dist/devportal/components/SecretDisplay.js +8 -9
- package/dist/devportal/components/SecretDisplay.js.map +1 -1
- package/dist/devportal/components/SectionNav.d.ts +0 -2
- package/dist/devportal/components/SectionNav.js +11 -12
- package/dist/devportal/components/SectionNav.js.map +1 -1
- package/dist/devportal/components/SelectionCheckbox.d.ts +1 -2
- package/dist/devportal/components/SelectionCheckbox.js +1 -2
- package/dist/devportal/components/SelectionCheckbox.js.map +1 -1
- package/dist/devportal/components/StatCard.d.ts +0 -2
- package/dist/devportal/components/StatCard.js +1 -2
- package/dist/devportal/components/StatCard.js.map +1 -1
- package/dist/devportal/components/StatusBadge.d.ts +0 -2
- package/dist/devportal/components/StatusBadge.js +18 -19
- package/dist/devportal/components/StatusBadge.js.map +1 -1
- package/dist/devportal/components/TelemetryErrorBoundary.d.ts +0 -2
- package/dist/devportal/components/TelemetryErrorBoundary.js +1 -2
- package/dist/devportal/components/TelemetryErrorBoundary.js.map +1 -1
- package/dist/devportal/components/index.d.ts +0 -1
- package/dist/devportal/components/index.js +22 -21
- package/dist/devportal/constants/appCategories.d.ts +0 -1
- package/dist/devportal/constants/appCategories.js +1 -2
- package/dist/devportal/constants/appCategories.js.map +1 -1
- package/dist/devportal/constants/developerLinks.d.ts +0 -1
- package/dist/devportal/constants/developerLinks.js +23 -23
- package/dist/devportal/constants/developerLinks.js.map +1 -1
- package/dist/devportal/constants/permissions.d.ts +0 -1
- package/dist/devportal/constants/permissions.js +1 -2
- package/dist/devportal/constants/permissions.js.map +1 -1
- package/dist/devportal/events/index.d.ts +0 -1
- package/dist/devportal/events/index.js +1 -2
- package/dist/devportal/events/index.js.map +1 -1
- package/dist/devportal/hooks/DevPortalProvider.d.ts +1 -3
- package/dist/devportal/hooks/DevPortalProvider.js +2 -3
- package/dist/devportal/hooks/DevPortalProvider.js.map +1 -1
- package/dist/devportal/hooks/index.d.ts +0 -1
- package/dist/devportal/hooks/index.js +6 -5
- package/dist/devportal/hooks/useCarrierPickupLocations.d.ts +0 -1
- package/dist/devportal/hooks/useCarrierPickupLocations.js +1 -2
- package/dist/devportal/hooks/useCarrierPickupLocations.js.map +1 -1
- package/dist/devportal/hooks/useGraphQL.d.ts +0 -2
- package/dist/devportal/hooks/useGraphQL.js +42 -53
- package/dist/devportal/hooks/useGraphQL.js.map +1 -1
- package/dist/devportal/hooks/useIsSellerSection.d.ts +0 -1
- package/dist/devportal/hooks/useIsSellerSection.js +1 -2
- package/dist/devportal/hooks/useIsSellerSection.js.map +1 -1
- package/dist/devportal/hooks/useOrganizationPickupAddresses.d.ts +0 -1
- package/dist/devportal/hooks/useOrganizationPickupAddresses.js +3 -8
- package/dist/devportal/hooks/useOrganizationPickupAddresses.js.map +1 -1
- package/dist/devportal/hooks/usePackageUpload.d.ts +0 -1
- package/dist/devportal/hooks/usePackageUpload.js +4 -4
- package/dist/devportal/hooks/usePackageUpload.js.map +1 -1
- package/dist/devportal/hooks/usePermission.d.ts +0 -2
- package/dist/devportal/hooks/usePermission.js +2 -3
- package/dist/devportal/hooks/usePermission.js.map +1 -1
- package/dist/devportal/hooks/useProducts.d.ts +0 -1
- package/dist/devportal/hooks/useProducts.js +1 -2
- package/dist/devportal/hooks/useProducts.js.map +1 -1
- package/dist/devportal/hooks/useSellerOrganization.d.ts +0 -1
- package/dist/devportal/hooks/useSellerOrganization.js +1 -2
- package/dist/devportal/hooks/useSellerOrganization.js.map +1 -1
- package/dist/devportal/index.d.ts +0 -1
- package/dist/devportal/index.js +13 -12
- package/dist/devportal/pages/AdminOrganizationVerificationPage.d.ts +0 -2
- package/dist/devportal/pages/AdminOrganizationVerificationPage.js +13 -13
- package/dist/devportal/pages/AdminOrganizationVerificationPage.js.map +1 -1
- package/dist/devportal/pages/AdminReviewPage.d.ts +0 -2
- package/dist/devportal/pages/AdminReviewPage.js +134 -135
- package/dist/devportal/pages/AdminReviewPage.js.map +1 -1
- package/dist/devportal/pages/AnalyticsDashboardPage.d.ts +0 -2
- package/dist/devportal/pages/AnalyticsDashboardPage.js +66 -67
- package/dist/devportal/pages/AnalyticsDashboardPage.js.map +1 -1
- package/dist/devportal/pages/ApiKeysPage.d.ts +0 -2
- package/dist/devportal/pages/ApiKeysPage.js +127 -128
- package/dist/devportal/pages/ApiKeysPage.js.map +1 -1
- package/dist/devportal/pages/AppLogsPage.d.ts +0 -2
- package/dist/devportal/pages/AppLogsPage.js +18 -19
- package/dist/devportal/pages/AppLogsPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationDetailPage.d.ts +0 -2
- package/dist/devportal/pages/ApplicationDetailPage.js +779 -778
- package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationVersionsPage.d.ts +0 -2
- package/dist/devportal/pages/ApplicationVersionsPage.js +482 -483
- package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
- package/dist/devportal/pages/ApplicationsPage.d.ts +0 -2
- package/dist/devportal/pages/ApplicationsPage.js +35 -36
- package/dist/devportal/pages/ApplicationsPage.js.map +1 -1
- package/dist/devportal/pages/CreateApiKeyPage.d.ts +0 -2
- package/dist/devportal/pages/CreateApiKeyPage.js +39 -39
- package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
- package/dist/devportal/pages/CreateApplicationPage.d.ts +0 -2
- package/dist/devportal/pages/CreateApplicationPage.js +136 -137
- package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
- package/dist/devportal/pages/CreateOAuthClientPage.d.ts +0 -2
- package/dist/devportal/pages/CreateOAuthClientPage.js +25 -24
- package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
- package/dist/devportal/pages/CreateOrganizationPage.d.ts +0 -2
- package/dist/devportal/pages/CreateOrganizationPage.js +32 -39
- package/dist/devportal/pages/CreateOrganizationPage.js.map +1 -1
- package/dist/devportal/pages/CreatePhysicalItemPage.d.ts +0 -2
- package/dist/devportal/pages/CreatePhysicalItemPage.js +102 -103
- package/dist/devportal/pages/CreatePhysicalItemPage.js.map +1 -1
- package/dist/devportal/pages/CreateWebhookPage.d.ts +0 -2
- package/dist/devportal/pages/CreateWebhookPage.js +31 -32
- package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
- package/dist/devportal/pages/DashboardPage.d.ts +0 -2
- package/dist/devportal/pages/DashboardPage.js +21 -22
- package/dist/devportal/pages/DashboardPage.js.map +1 -1
- package/dist/devportal/pages/DelegationsPage.d.ts +0 -2
- package/dist/devportal/pages/DelegationsPage.js +83 -84
- package/dist/devportal/pages/DelegationsPage.js.map +1 -1
- package/dist/devportal/pages/DocumentationPage.d.ts +0 -2
- package/dist/devportal/pages/DocumentationPage.js +1 -2
- package/dist/devportal/pages/DocumentationPage.js.map +1 -1
- package/dist/devportal/pages/EditApplicationPage.d.ts +0 -2
- package/dist/devportal/pages/EditApplicationPage.js +69 -70
- package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
- package/dist/devportal/pages/EditPhysicalItemPage.d.ts +0 -2
- package/dist/devportal/pages/EditPhysicalItemPage.js +334 -335
- package/dist/devportal/pages/EditPhysicalItemPage.js.map +1 -1
- package/dist/devportal/pages/InvitationDecisionPage.d.ts +0 -2
- package/dist/devportal/pages/InvitationDecisionPage.js +16 -17
- package/dist/devportal/pages/InvitationDecisionPage.js.map +1 -1
- package/dist/devportal/pages/ListingPreviewPage.d.ts +0 -2
- package/dist/devportal/pages/ListingPreviewPage.js +14 -15
- package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
- package/dist/devportal/pages/NodeLifecyclePage.d.ts +0 -2
- package/dist/devportal/pages/NodeLifecyclePage.js +216 -221
- package/dist/devportal/pages/NodeLifecyclePage.js.map +1 -1
- package/dist/devportal/pages/OAuthCallbackPage.d.ts +0 -2
- package/dist/devportal/pages/OAuthCallbackPage.js +4 -5
- package/dist/devportal/pages/OAuthCallbackPage.js.map +1 -1
- package/dist/devportal/pages/OAuthClientDetailPage.d.ts +0 -2
- package/dist/devportal/pages/OAuthClientDetailPage.js +17 -16
- package/dist/devportal/pages/OAuthClientDetailPage.js.map +1 -1
- package/dist/devportal/pages/OAuthClientsPage.d.ts +0 -2
- package/dist/devportal/pages/OAuthClientsPage.js +18 -19
- package/dist/devportal/pages/OAuthClientsPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationDetailPage.d.ts +0 -2
- package/dist/devportal/pages/OrganizationDetailPage.js +444 -450
- package/dist/devportal/pages/OrganizationDetailPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationMembersPage.d.ts +0 -2
- package/dist/devportal/pages/OrganizationMembersPage.js +240 -241
- package/dist/devportal/pages/OrganizationMembersPage.js.map +1 -1
- package/dist/devportal/pages/OrganizationsPage.d.ts +0 -2
- package/dist/devportal/pages/OrganizationsPage.js +34 -35
- package/dist/devportal/pages/OrganizationsPage.js.map +1 -1
- package/dist/devportal/pages/PublishPage.d.ts +0 -2
- package/dist/devportal/pages/PublishPage.js +90 -91
- package/dist/devportal/pages/PublishPage.js.map +1 -1
- package/dist/devportal/pages/PublisherPayoutsPage.d.ts +0 -2
- package/dist/devportal/pages/PublisherPayoutsPage.js +251 -258
- package/dist/devportal/pages/PublisherPayoutsPage.js.map +1 -1
- package/dist/devportal/pages/PublisherProfilePage.d.ts +0 -2
- package/dist/devportal/pages/PublisherProfilePage.js +26 -27
- package/dist/devportal/pages/PublisherProfilePage.js.map +1 -1
- package/dist/devportal/pages/ResourcesPage.d.ts +0 -2
- package/dist/devportal/pages/ResourcesPage.js +17 -18
- package/dist/devportal/pages/ResourcesPage.js.map +1 -1
- package/dist/devportal/pages/RevenueDashboardPage.d.ts +0 -2
- package/dist/devportal/pages/RevenueDashboardPage.js +308 -308
- package/dist/devportal/pages/RevenueDashboardPage.js.map +1 -1
- package/dist/devportal/pages/RevenueRedirectPage.d.ts +0 -2
- package/dist/devportal/pages/SellerDashboardPage.d.ts +0 -2
- package/dist/devportal/pages/SellerDashboardPage.js +14 -15
- package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
- package/dist/devportal/pages/SellerItemsPage.d.ts +0 -2
- package/dist/devportal/pages/SellerItemsPage.js +8 -9
- package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
- package/dist/devportal/pages/SellerOrdersPage.d.ts +0 -2
- package/dist/devportal/pages/SellerOrdersPage.js +10 -14
- package/dist/devportal/pages/SellerOrdersPage.js.map +1 -1
- package/dist/devportal/pages/SettingsPage.d.ts +0 -2
- package/dist/devportal/pages/SettingsPage.js +20 -21
- package/dist/devportal/pages/SettingsPage.js.map +1 -1
- package/dist/devportal/pages/SetupPage.d.ts +0 -2
- package/dist/devportal/pages/SetupPage.js +276 -277
- package/dist/devportal/pages/SetupPage.js.map +1 -1
- package/dist/devportal/pages/StoreSubmissionPage.d.ts +0 -2
- package/dist/devportal/pages/StoreSubmissionPage.js +4 -5
- package/dist/devportal/pages/StoreSubmissionPage.js.map +1 -1
- package/dist/devportal/pages/WebhookDetailPage.d.ts +0 -2
- package/dist/devportal/pages/WebhookDetailPage.js +62 -67
- package/dist/devportal/pages/WebhookDetailPage.js.map +1 -1
- package/dist/devportal/pages/WebhooksPage.d.ts +0 -2
- package/dist/devportal/pages/WebhooksPage.js +130 -131
- package/dist/devportal/pages/WebhooksPage.js.map +1 -1
- package/dist/devportal/providers/DevportalProvider.d.ts +0 -2
- package/dist/devportal/providers/DevportalProvider.js +2 -3
- package/dist/devportal/providers/DevportalProvider.js.map +1 -1
- package/dist/devportal/store/devportalStore.d.ts +0 -2
- package/dist/devportal/store/devportalStore.js +1 -2
- package/dist/devportal/store/devportalStore.js.map +1 -1
- package/dist/devportal/types/index.d.ts +0 -2
- package/dist/devportal/types/index.js +1 -2
- package/dist/devportal/types/index.js.map +1 -1
- package/dist/devportal/utils/cn.d.ts +0 -2
- package/dist/devportal/utils/cn.js +2 -3
- package/dist/devportal/utils/cn.js.map +1 -1
- package/dist/devportal/utils/constants.d.ts +0 -1
- package/dist/devportal/utils/constants.js +1 -2
- package/dist/devportal/utils/constants.js.map +1 -1
- package/dist/devportal/utils/currency.d.ts +0 -1
- package/dist/devportal/utils/currency.js +1 -2
- package/dist/devportal/utils/currency.js.map +1 -1
- package/dist/devportal/utils/developerOnboarding.d.ts +0 -1
- package/dist/devportal/utils/developerOnboarding.js +4 -5
- package/dist/devportal/utils/developerOnboarding.js.map +1 -1
- package/dist/devportal/utils/graphqlEndpoint.d.ts +0 -1
- package/dist/devportal/utils/graphqlEndpoint.js +1 -2
- package/dist/devportal/utils/graphqlEndpoint.js.map +1 -1
- package/dist/devportal/utils/i18n.d.ts +0 -1
- package/dist/devportal/utils/i18n.js +1 -2
- package/dist/devportal/utils/i18n.js.map +1 -1
- package/dist/devportal/utils/nodeLifecycle.d.ts +0 -2
- package/dist/devportal/utils/nodeLifecycle.js +6 -7
- package/dist/devportal/utils/nodeLifecycle.js.map +1 -1
- package/dist/devportal/utils/publisherPayouts.d.ts +0 -1
- package/dist/devportal/utils/publisherPayouts.js +14 -15
- package/dist/devportal/utils/publisherPayouts.js.map +1 -1
- package/dist/devportal/utils/recaptcha.d.ts +0 -1
- package/dist/devportal/utils/recaptcha.js +1 -2
- package/dist/devportal/utils/recaptcha.js.map +1 -1
- package/dist/devportal/utils/submitForReview.d.ts +0 -1
- package/dist/devportal/utils/submitForReview.js +15 -14
- package/dist/devportal/utils/submitForReview.js.map +1 -1
- package/dist/devportal/utils/uploadErrors.d.ts +0 -1
- package/dist/devportal/utils/uploadErrors.js +30 -30
- package/dist/devportal/utils/uploadErrors.js.map +1 -1
- package/dist/generated/global-operations.d.ts +2379 -2423
- package/dist/generated/global-operations.js +6 -5
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +2 -22
- package/dist/generated/global-types.js +1 -2
- package/dist/generated/global-types.js.map +1 -1
- package/dist/generated/wspace-operations.d.ts +31 -8
- package/dist/generated/wspace-operations.js +2 -3
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/generated/wspace-types.d.ts +4 -24
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -1
- package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js +1 -2
- package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +1 -1
- package/dist/node_modules/@apollo/client/errors/ServerError.js +1 -2
- package/dist/node_modules/@apollo/client/errors/ServerError.js.map +1 -1
- package/dist/node_modules/@apollo/client/errors/utils.js +1 -2
- package/dist/node_modules/@apollo/client/errors/utils.js.map +1 -1
- package/dist/node_modules/@apollo/client/link/core/ApolloLink.js +7 -8
- package/dist/node_modules/@apollo/client/link/core/ApolloLink.js.map +1 -1
- package/dist/node_modules/@apollo/client/link/subscriptions/index.js +16 -17
- package/dist/node_modules/@apollo/client/link/subscriptions/index.js.map +1 -1
- package/dist/node_modules/@apollo/client/link/utils/createOperation.js +5 -6
- package/dist/node_modules/@apollo/client/link/utils/createOperation.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/caching/sizes.js +0 -1
- package/dist/node_modules/@apollo/client/utilities/caching/sizes.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/graphql/print.js +4 -5
- package/dist/node_modules/@apollo/client/utilities/graphql/print.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/caches.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/caches.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/checkDocument.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/checkDocument.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js +2 -3
- package/dist/node_modules/@apollo/client/utilities/internal/getMainDefinition.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/getMemoryInternals.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/getOperationDefinition.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/getOperationName.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/globals/global.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/globals/global.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/globals/maybe.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/isNonNullObject.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/isNonNullObject.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/makeUniqueId.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/makeUniqueId.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/memoize.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/memoize.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js +1 -2
- package/dist/node_modules/@apollo/client/utilities/internal/stringifyForDisplay.js.map +1 -1
- package/dist/node_modules/@apollo/client/utilities/invariant/index.js +2 -3
- package/dist/node_modules/@apollo/client/utilities/invariant/index.js.map +1 -1
- package/dist/node_modules/@apollo/client/version.js +2 -3
- package/dist/node_modules/@apollo/client/version.js.map +1 -1
- package/dist/node_modules/@wry/caches/lib/weak.js +1 -2
- package/dist/node_modules/@wry/caches/lib/weak.js.map +1 -1
- package/dist/node_modules/@wry/trie/lib/index.js +2 -3
- package/dist/node_modules/@wry/trie/lib/index.js.map +1 -1
- package/dist/node_modules/clsx/dist/clsx.js +8 -7
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -1
- package/dist/node_modules/d3-array/dist/d3-array.js +204 -0
- package/dist/node_modules/d3-array/dist/d3-array.js.map +1 -0
- package/dist/node_modules/d3-color/dist/d3-color.js +388 -0
- package/dist/node_modules/d3-color/dist/d3-color.js.map +1 -0
- package/dist/node_modules/d3-format/dist/d3-format.js +186 -0
- package/dist/node_modules/d3-format/dist/d3-format.js.map +1 -0
- package/dist/node_modules/d3-interpolate/dist/d3-interpolate.js +185 -0
- package/dist/node_modules/d3-interpolate/dist/d3-interpolate.js.map +1 -0
- package/dist/node_modules/d3-path/{src/path.js → dist/d3-path.js} +39 -14
- package/dist/node_modules/d3-path/dist/d3-path.js.map +1 -0
- package/dist/node_modules/d3-scale/dist/d3-scale.js +622 -0
- package/dist/node_modules/d3-scale/dist/d3-scale.js.map +1 -0
- package/dist/node_modules/d3-shape/dist/d3-shape.js +901 -0
- package/dist/node_modules/d3-shape/dist/d3-shape.js.map +1 -0
- package/dist/node_modules/d3-time/dist/d3-time.js +241 -0
- package/dist/node_modules/d3-time/dist/d3-time.js.map +1 -0
- package/dist/node_modules/d3-time-format/{src/locale.js → dist/d3-time-format.js} +229 -174
- package/dist/node_modules/d3-time-format/dist/d3-time-format.js.map +1 -0
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.js +1 -2
- package/dist/node_modules/date-fns/_lib/addLeadingZeros.js.map +1 -1
- package/dist/node_modules/date-fns/_lib/defaultOptions.js +1 -2
- package/dist/node_modules/date-fns/_lib/defaultOptions.js.map +1 -1
- package/dist/node_modules/date-fns/_lib/format/formatters.js +29 -22
- package/dist/node_modules/date-fns/_lib/format/formatters.js.map +1 -1
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.js +3 -4
- package/dist/node_modules/date-fns/_lib/format/lightFormatters.js.map +1 -1
- package/dist/node_modules/date-fns/_lib/format/longFormatters.js +2 -5
- package/dist/node_modules/date-fns/_lib/format/longFormatters.js.map +1 -1
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js +2 -3
- package/dist/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js.map +1 -1
- package/dist/node_modules/date-fns/_lib/protectedTokens.js +1 -2
- package/dist/node_modules/date-fns/_lib/protectedTokens.js.map +1 -1
- package/dist/node_modules/date-fns/constants.js +5 -5
- package/dist/node_modules/date-fns/constants.js.map +1 -1
- package/dist/node_modules/date-fns/constructFrom.js +2 -3
- package/dist/node_modules/date-fns/constructFrom.js.map +1 -1
- package/dist/node_modules/date-fns/differenceInCalendarDays.js +2 -3
- package/dist/node_modules/date-fns/differenceInCalendarDays.js.map +1 -1
- package/dist/node_modules/date-fns/format.js +15 -16
- package/dist/node_modules/date-fns/format.js.map +1 -1
- package/dist/node_modules/date-fns/getDayOfYear.js +7 -8
- package/dist/node_modules/date-fns/getDayOfYear.js.map +1 -1
- package/dist/node_modules/date-fns/getISOWeek.js +8 -9
- package/dist/node_modules/date-fns/getISOWeek.js.map +1 -1
- package/dist/node_modules/date-fns/getISOWeekYear.js +8 -9
- package/dist/node_modules/date-fns/getISOWeekYear.js.map +1 -1
- package/dist/node_modules/date-fns/getWeek.js +8 -9
- package/dist/node_modules/date-fns/getWeek.js.map +1 -1
- package/dist/node_modules/date-fns/getWeekYear.js +9 -10
- package/dist/node_modules/date-fns/getWeekYear.js.map +1 -1
- package/dist/node_modules/date-fns/isDate.js +2 -3
- package/dist/node_modules/date-fns/isDate.js.map +1 -1
- package/dist/node_modules/date-fns/isValid.js +6 -7
- package/dist/node_modules/date-fns/isValid.js.map +1 -1
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +1 -2
- package/dist/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -1
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +1 -2
- package/dist/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -1
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js +1 -2
- package/dist/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +1 -1
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +1 -2
- package/dist/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +1 -2
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +1 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +1 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +1 -2
- package/dist/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +1 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/localize.js.map +1 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.js +0 -1
- package/dist/node_modules/date-fns/locale/en-US/_lib/match.js.map +1 -1
- package/dist/node_modules/date-fns/locale/en-US.js +2 -3
- package/dist/node_modules/date-fns/locale/en-US.js.map +1 -1
- package/dist/node_modules/date-fns/startOfDay.js +2 -3
- package/dist/node_modules/date-fns/startOfDay.js.map +1 -1
- package/dist/node_modules/date-fns/startOfISOWeek.js +2 -3
- package/dist/node_modules/date-fns/startOfISOWeek.js.map +1 -1
- package/dist/node_modules/date-fns/startOfISOWeekYear.js +5 -6
- package/dist/node_modules/date-fns/startOfISOWeekYear.js.map +1 -1
- package/dist/node_modules/date-fns/startOfWeek.js +2 -3
- package/dist/node_modules/date-fns/startOfWeek.js.map +1 -1
- package/dist/node_modules/date-fns/startOfWeekYear.js +6 -7
- package/dist/node_modules/date-fns/startOfWeekYear.js.map +1 -1
- package/dist/node_modules/date-fns/startOfYear.js +3 -4
- package/dist/node_modules/date-fns/startOfYear.js.map +1 -1
- package/dist/node_modules/date-fns/toDate.js +2 -3
- package/dist/node_modules/date-fns/toDate.js.map +1 -1
- package/dist/node_modules/decimal.js-light/decimal.js +33 -30
- package/dist/node_modules/decimal.js-light/decimal.js.map +1 -1
- package/dist/node_modules/eventemitter3/index.js +2 -3
- package/dist/node_modules/eventemitter3/index.js.map +1 -1
- package/dist/node_modules/fast-equals/dist/es/index.js +109 -79
- package/dist/node_modules/fast-equals/dist/es/index.js.map +1 -1
- package/dist/node_modules/graphql-ws/dist/client.js +76 -69
- package/dist/node_modules/graphql-ws/dist/client.js.map +1 -1
- package/dist/node_modules/graphql-ws/dist/common-CGW11Fyb.js +2 -3
- package/dist/node_modules/graphql-ws/dist/common-CGW11Fyb.js.map +1 -1
- package/dist/node_modules/lodash/_DataView.js +4 -5
- package/dist/node_modules/lodash/_DataView.js.map +1 -1
- package/dist/node_modules/lodash/_Hash.js +1 -2
- package/dist/node_modules/lodash/_Hash.js.map +1 -1
- package/dist/node_modules/lodash/_ListCache.js +1 -2
- package/dist/node_modules/lodash/_ListCache.js.map +1 -1
- package/dist/node_modules/lodash/_Map.js +4 -5
- package/dist/node_modules/lodash/_Map.js.map +1 -1
- package/dist/node_modules/lodash/_MapCache.js +1 -2
- package/dist/node_modules/lodash/_MapCache.js.map +1 -1
- package/dist/node_modules/lodash/_Promise.js +4 -5
- package/dist/node_modules/lodash/_Promise.js.map +1 -1
- package/dist/node_modules/lodash/_Set.js +4 -5
- package/dist/node_modules/lodash/_Set.js.map +1 -1
- package/dist/node_modules/lodash/_SetCache.js +1 -2
- package/dist/node_modules/lodash/_SetCache.js.map +1 -1
- package/dist/node_modules/lodash/_Stack.js +3 -3
- package/dist/node_modules/lodash/_Stack.js.map +1 -1
- package/dist/node_modules/lodash/_Symbol.js +1 -2
- package/dist/node_modules/lodash/_Symbol.js.map +1 -1
- package/dist/node_modules/lodash/_Uint8Array.js +1 -2
- package/dist/node_modules/lodash/_Uint8Array.js.map +1 -1
- package/dist/node_modules/lodash/_WeakMap.js +4 -5
- package/dist/node_modules/lodash/_WeakMap.js.map +1 -1
- package/dist/node_modules/lodash/_apply.js +1 -2
- package/dist/node_modules/lodash/_apply.js.map +1 -1
- package/dist/node_modules/lodash/_arrayEvery.js +1 -2
- package/dist/node_modules/lodash/_arrayEvery.js.map +1 -1
- package/dist/node_modules/lodash/_arrayFilter.js +1 -2
- package/dist/node_modules/lodash/_arrayFilter.js.map +1 -1
- package/dist/node_modules/lodash/_arrayIncludes.js +1 -2
- package/dist/node_modules/lodash/_arrayIncludes.js.map +1 -1
- package/dist/node_modules/lodash/_arrayIncludesWith.js +1 -2
- package/dist/node_modules/lodash/_arrayIncludesWith.js.map +1 -1
- package/dist/node_modules/lodash/_arrayLikeKeys.js +5 -6
- package/dist/node_modules/lodash/_arrayLikeKeys.js.map +1 -1
- package/dist/node_modules/lodash/_arrayMap.js +1 -2
- package/dist/node_modules/lodash/_arrayMap.js.map +1 -1
- package/dist/node_modules/lodash/_arrayPush.js +1 -2
- package/dist/node_modules/lodash/_arrayPush.js.map +1 -1
- package/dist/node_modules/lodash/_arraySome.js +1 -2
- package/dist/node_modules/lodash/_arraySome.js.map +1 -1
- package/dist/node_modules/lodash/_asciiToArray.js +1 -2
- package/dist/node_modules/lodash/_asciiToArray.js.map +1 -1
- package/dist/node_modules/lodash/_assocIndexOf.js +1 -2
- package/dist/node_modules/lodash/_assocIndexOf.js.map +1 -1
- package/dist/node_modules/lodash/_baseAssignValue.js +1 -2
- package/dist/node_modules/lodash/_baseAssignValue.js.map +1 -1
- package/dist/node_modules/lodash/_baseEach.js +1 -2
- package/dist/node_modules/lodash/_baseEach.js.map +1 -1
- package/dist/node_modules/lodash/_baseEvery.js +1 -2
- package/dist/node_modules/lodash/_baseEvery.js.map +1 -1
- package/dist/node_modules/lodash/_baseExtremum.js +1 -2
- package/dist/node_modules/lodash/_baseExtremum.js.map +1 -1
- package/dist/node_modules/lodash/_baseFindIndex.js +1 -2
- package/dist/node_modules/lodash/_baseFindIndex.js.map +1 -1
- package/dist/node_modules/lodash/_baseFlatten.js +1 -2
- package/dist/node_modules/lodash/_baseFlatten.js.map +1 -1
- package/dist/node_modules/lodash/_baseFor.js +1 -2
- package/dist/node_modules/lodash/_baseFor.js.map +1 -1
- package/dist/node_modules/lodash/_baseForOwn.js +4 -5
- package/dist/node_modules/lodash/_baseForOwn.js.map +1 -1
- package/dist/node_modules/lodash/_baseGet.js +1 -2
- package/dist/node_modules/lodash/_baseGet.js.map +1 -1
- package/dist/node_modules/lodash/_baseGetAllKeys.js +4 -5
- package/dist/node_modules/lodash/_baseGetAllKeys.js.map +1 -1
- package/dist/node_modules/lodash/_baseGetTag.js +1 -2
- package/dist/node_modules/lodash/_baseGetTag.js.map +1 -1
- package/dist/node_modules/lodash/_baseGt.js +1 -2
- package/dist/node_modules/lodash/_baseGt.js.map +1 -1
- package/dist/node_modules/lodash/_baseHasIn.js +1 -2
- package/dist/node_modules/lodash/_baseHasIn.js.map +1 -1
- package/dist/node_modules/lodash/_baseIndexOf.js +1 -2
- package/dist/node_modules/lodash/_baseIndexOf.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsArguments.js +1 -2
- package/dist/node_modules/lodash/_baseIsArguments.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsEqual.js +4 -5
- package/dist/node_modules/lodash/_baseIsEqual.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsEqualDeep.js +10 -11
- package/dist/node_modules/lodash/_baseIsEqualDeep.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsMatch.js +1 -2
- package/dist/node_modules/lodash/_baseIsMatch.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsNaN.js +1 -2
- package/dist/node_modules/lodash/_baseIsNaN.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsNative.js +5 -6
- package/dist/node_modules/lodash/_baseIsNative.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsTypedArray.js +4 -5
- package/dist/node_modules/lodash/_baseIsTypedArray.js.map +1 -1
- package/dist/node_modules/lodash/_baseIteratee.js +6 -7
- package/dist/node_modules/lodash/_baseIteratee.js.map +1 -1
- package/dist/node_modules/lodash/_baseKeys.js +1 -2
- package/dist/node_modules/lodash/_baseKeys.js.map +1 -1
- package/dist/node_modules/lodash/_baseLt.js +1 -2
- package/dist/node_modules/lodash/_baseLt.js.map +1 -1
- package/dist/node_modules/lodash/_baseMap.js +4 -5
- package/dist/node_modules/lodash/_baseMap.js.map +1 -1
- package/dist/node_modules/lodash/_baseMatches.js +1 -2
- package/dist/node_modules/lodash/_baseMatches.js.map +1 -1
- package/dist/node_modules/lodash/_baseMatchesProperty.js +7 -8
- package/dist/node_modules/lodash/_baseMatchesProperty.js.map +1 -1
- package/dist/node_modules/lodash/_baseOrderBy.js +11 -12
- package/dist/node_modules/lodash/_baseOrderBy.js.map +1 -1
- package/dist/node_modules/lodash/_baseProperty.js +1 -2
- package/dist/node_modules/lodash/_baseProperty.js.map +1 -1
- package/dist/node_modules/lodash/_basePropertyDeep.js +1 -2
- package/dist/node_modules/lodash/_basePropertyDeep.js.map +1 -1
- package/dist/node_modules/lodash/_baseRange.js +1 -2
- package/dist/node_modules/lodash/_baseRange.js.map +1 -1
- package/dist/node_modules/lodash/_baseRest.js +1 -2
- package/dist/node_modules/lodash/_baseRest.js.map +1 -1
- package/dist/node_modules/lodash/_baseSetToString.js +5 -6
- package/dist/node_modules/lodash/_baseSetToString.js.map +1 -1
- package/dist/node_modules/lodash/_baseSlice.js +1 -2
- package/dist/node_modules/lodash/_baseSlice.js.map +1 -1
- package/dist/node_modules/lodash/_baseSome.js +1 -2
- package/dist/node_modules/lodash/_baseSome.js.map +1 -1
- package/dist/node_modules/lodash/_baseSortBy.js +1 -2
- package/dist/node_modules/lodash/_baseSortBy.js.map +1 -1
- package/dist/node_modules/lodash/_baseTimes.js +1 -2
- package/dist/node_modules/lodash/_baseTimes.js.map +1 -1
- package/dist/node_modules/lodash/_baseToString.js +6 -7
- package/dist/node_modules/lodash/_baseToString.js.map +1 -1
- package/dist/node_modules/lodash/_baseTrim.js +1 -2
- package/dist/node_modules/lodash/_baseTrim.js.map +1 -1
- package/dist/node_modules/lodash/_baseUnary.js +1 -2
- package/dist/node_modules/lodash/_baseUnary.js.map +1 -1
- package/dist/node_modules/lodash/_baseUniq.js +7 -8
- package/dist/node_modules/lodash/_baseUniq.js.map +1 -1
- package/dist/node_modules/lodash/_cacheHas.js +1 -2
- package/dist/node_modules/lodash/_cacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_castPath.js +1 -2
- package/dist/node_modules/lodash/_castPath.js.map +1 -1
- package/dist/node_modules/lodash/_castSlice.js +1 -2
- package/dist/node_modules/lodash/_castSlice.js.map +1 -1
- package/dist/node_modules/lodash/_compareAscending.js +1 -2
- package/dist/node_modules/lodash/_compareAscending.js.map +1 -1
- package/dist/node_modules/lodash/_compareMultiple.js +1 -2
- package/dist/node_modules/lodash/_compareMultiple.js.map +1 -1
- package/dist/node_modules/lodash/_coreJsData.js +1 -2
- package/dist/node_modules/lodash/_coreJsData.js.map +1 -1
- package/dist/node_modules/lodash/_createBaseEach.js +1 -2
- package/dist/node_modules/lodash/_createBaseEach.js.map +1 -1
- package/dist/node_modules/lodash/_createBaseFor.js +1 -2
- package/dist/node_modules/lodash/_createBaseFor.js.map +1 -1
- package/dist/node_modules/lodash/_createCaseFirst.js +6 -7
- package/dist/node_modules/lodash/_createCaseFirst.js.map +1 -1
- package/dist/node_modules/lodash/_createFind.js +5 -6
- package/dist/node_modules/lodash/_createFind.js.map +1 -1
- package/dist/node_modules/lodash/_createRange.js +4 -5
- package/dist/node_modules/lodash/_createRange.js.map +1 -1
- package/dist/node_modules/lodash/_createSet.js +6 -7
- package/dist/node_modules/lodash/_createSet.js.map +1 -1
- package/dist/node_modules/lodash/_defineProperty.js +1 -2
- package/dist/node_modules/lodash/_defineProperty.js.map +1 -1
- package/dist/node_modules/lodash/_equalArrays.js +1 -2
- package/dist/node_modules/lodash/_equalArrays.js.map +1 -1
- package/dist/node_modules/lodash/_equalByTag.js +5 -6
- package/dist/node_modules/lodash/_equalByTag.js.map +1 -1
- package/dist/node_modules/lodash/_equalObjects.js +1 -2
- package/dist/node_modules/lodash/_equalObjects.js.map +1 -1
- package/dist/node_modules/lodash/_freeGlobal.js +1 -2
- package/dist/node_modules/lodash/_freeGlobal.js.map +1 -1
- package/dist/node_modules/lodash/_getAllKeys.js +1 -2
- package/dist/node_modules/lodash/_getAllKeys.js.map +1 -1
- package/dist/node_modules/lodash/_getMapData.js +1 -2
- package/dist/node_modules/lodash/_getMapData.js.map +1 -1
- package/dist/node_modules/lodash/_getMatchData.js +4 -5
- package/dist/node_modules/lodash/_getMatchData.js.map +1 -1
- package/dist/node_modules/lodash/_getNative.js +1 -2
- package/dist/node_modules/lodash/_getNative.js.map +1 -1
- package/dist/node_modules/lodash/_getPrototype.js +1 -2
- package/dist/node_modules/lodash/_getPrototype.js.map +1 -1
- package/dist/node_modules/lodash/_getRawTag.js +1 -2
- package/dist/node_modules/lodash/_getRawTag.js.map +1 -1
- package/dist/node_modules/lodash/_getSymbols.js +1 -2
- package/dist/node_modules/lodash/_getSymbols.js.map +1 -1
- package/dist/node_modules/lodash/_getTag.js +9 -10
- package/dist/node_modules/lodash/_getTag.js.map +1 -1
- package/dist/node_modules/lodash/_getValue.js +1 -2
- package/dist/node_modules/lodash/_getValue.js.map +1 -1
- package/dist/node_modules/lodash/_hasPath.js +8 -9
- package/dist/node_modules/lodash/_hasPath.js.map +1 -1
- package/dist/node_modules/lodash/_hasUnicode.js +1 -2
- package/dist/node_modules/lodash/_hasUnicode.js.map +1 -1
- package/dist/node_modules/lodash/_hashClear.js +1 -2
- package/dist/node_modules/lodash/_hashClear.js.map +1 -1
- package/dist/node_modules/lodash/_hashDelete.js +1 -2
- package/dist/node_modules/lodash/_hashDelete.js.map +1 -1
- package/dist/node_modules/lodash/_hashGet.js +1 -2
- package/dist/node_modules/lodash/_hashGet.js.map +1 -1
- package/dist/node_modules/lodash/_hashHas.js +1 -2
- package/dist/node_modules/lodash/_hashHas.js.map +1 -1
- package/dist/node_modules/lodash/_hashSet.js +1 -2
- package/dist/node_modules/lodash/_hashSet.js.map +1 -1
- package/dist/node_modules/lodash/_isFlattenable.js +5 -6
- package/dist/node_modules/lodash/_isFlattenable.js.map +1 -1
- package/dist/node_modules/lodash/_isIndex.js +6 -7
- package/dist/node_modules/lodash/_isIndex.js.map +1 -1
- package/dist/node_modules/lodash/_isIterateeCall.js +5 -6
- package/dist/node_modules/lodash/_isIterateeCall.js.map +1 -1
- package/dist/node_modules/lodash/_isKey.js +1 -2
- package/dist/node_modules/lodash/_isKey.js.map +1 -1
- package/dist/node_modules/lodash/_isKeyable.js +1 -2
- package/dist/node_modules/lodash/_isKeyable.js.map +1 -1
- package/dist/node_modules/lodash/_isMasked.js +1 -2
- package/dist/node_modules/lodash/_isMasked.js.map +1 -1
- package/dist/node_modules/lodash/_isPrototype.js +1 -2
- package/dist/node_modules/lodash/_isPrototype.js.map +1 -1
- package/dist/node_modules/lodash/_isStrictComparable.js +1 -2
- package/dist/node_modules/lodash/_isStrictComparable.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheClear.js +1 -2
- package/dist/node_modules/lodash/_listCacheClear.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheDelete.js +1 -2
- package/dist/node_modules/lodash/_listCacheDelete.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheGet.js +1 -2
- package/dist/node_modules/lodash/_listCacheGet.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheHas.js +1 -2
- package/dist/node_modules/lodash/_listCacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheSet.js +1 -2
- package/dist/node_modules/lodash/_listCacheSet.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheClear.js +1 -2
- package/dist/node_modules/lodash/_mapCacheClear.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheDelete.js +1 -2
- package/dist/node_modules/lodash/_mapCacheDelete.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheGet.js +1 -2
- package/dist/node_modules/lodash/_mapCacheGet.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheHas.js +1 -2
- package/dist/node_modules/lodash/_mapCacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheSet.js +1 -2
- package/dist/node_modules/lodash/_mapCacheSet.js.map +1 -1
- package/dist/node_modules/lodash/_mapToArray.js +1 -2
- package/dist/node_modules/lodash/_mapToArray.js.map +1 -1
- package/dist/node_modules/lodash/_matchesStrictComparable.js +2 -3
- package/dist/node_modules/lodash/_matchesStrictComparable.js.map +1 -1
- package/dist/node_modules/lodash/_memoizeCapped.js +1 -2
- package/dist/node_modules/lodash/_memoizeCapped.js.map +1 -1
- package/dist/node_modules/lodash/_nativeCreate.js +1 -2
- package/dist/node_modules/lodash/_nativeCreate.js.map +1 -1
- package/dist/node_modules/lodash/_nativeKeys.js +1 -2
- package/dist/node_modules/lodash/_nativeKeys.js.map +1 -1
- package/dist/node_modules/lodash/_nodeUtil.js +1 -2
- package/dist/node_modules/lodash/_nodeUtil.js.map +1 -1
- package/dist/node_modules/lodash/_objectToString.js +1 -2
- package/dist/node_modules/lodash/_objectToString.js.map +1 -1
- package/dist/node_modules/lodash/_overArg.js +1 -2
- package/dist/node_modules/lodash/_overArg.js.map +1 -1
- package/dist/node_modules/lodash/_overRest.js +1 -2
- package/dist/node_modules/lodash/_overRest.js.map +1 -1
- package/dist/node_modules/lodash/_root.js +1 -2
- package/dist/node_modules/lodash/_root.js.map +1 -1
- package/dist/node_modules/lodash/_setCacheAdd.js +4 -6
- package/dist/node_modules/lodash/_setCacheAdd.js.map +1 -1
- package/dist/node_modules/lodash/_setCacheHas.js +1 -2
- package/dist/node_modules/lodash/_setCacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_setToArray.js +1 -2
- package/dist/node_modules/lodash/_setToArray.js.map +1 -1
- package/dist/node_modules/lodash/_setToString.js +1 -2
- package/dist/node_modules/lodash/_setToString.js.map +1 -1
- package/dist/node_modules/lodash/_shortOut.js +8 -9
- package/dist/node_modules/lodash/_shortOut.js.map +1 -1
- package/dist/node_modules/lodash/_stackClear.js +1 -2
- package/dist/node_modules/lodash/_stackClear.js.map +1 -1
- package/dist/node_modules/lodash/_stackDelete.js +1 -2
- package/dist/node_modules/lodash/_stackDelete.js.map +1 -1
- package/dist/node_modules/lodash/_stackGet.js +1 -2
- package/dist/node_modules/lodash/_stackGet.js.map +1 -1
- package/dist/node_modules/lodash/_stackHas.js +1 -2
- package/dist/node_modules/lodash/_stackHas.js.map +1 -1
- package/dist/node_modules/lodash/_stackSet.js +1 -2
- package/dist/node_modules/lodash/_stackSet.js.map +1 -1
- package/dist/node_modules/lodash/_strictIndexOf.js +1 -2
- package/dist/node_modules/lodash/_strictIndexOf.js.map +1 -1
- package/dist/node_modules/lodash/_stringToArray.js +4 -5
- package/dist/node_modules/lodash/_stringToArray.js.map +1 -1
- package/dist/node_modules/lodash/_stringToPath.js +1 -2
- package/dist/node_modules/lodash/_stringToPath.js.map +1 -1
- package/dist/node_modules/lodash/_toKey.js +2 -3
- package/dist/node_modules/lodash/_toKey.js.map +1 -1
- package/dist/node_modules/lodash/_toSource.js +1 -2
- package/dist/node_modules/lodash/_toSource.js.map +1 -1
- package/dist/node_modules/lodash/_trimmedEndIndex.js +1 -2
- package/dist/node_modules/lodash/_trimmedEndIndex.js.map +1 -1
- package/dist/node_modules/lodash/_unicodeToArray.js +1 -2
- package/dist/node_modules/lodash/_unicodeToArray.js.map +1 -1
- package/dist/node_modules/lodash/constant.js +1 -2
- package/dist/node_modules/lodash/constant.js.map +1 -1
- package/dist/node_modules/lodash/debounce.js +1 -2
- package/dist/node_modules/lodash/debounce.js.map +1 -1
- package/dist/node_modules/lodash/eq.js +1 -2
- package/dist/node_modules/lodash/eq.js.map +1 -1
- package/dist/node_modules/lodash/every.js +7 -8
- package/dist/node_modules/lodash/every.js.map +1 -1
- package/dist/node_modules/lodash/find.js +1 -2
- package/dist/node_modules/lodash/find.js.map +1 -1
- package/dist/node_modules/lodash/findIndex.js +4 -5
- package/dist/node_modules/lodash/findIndex.js.map +1 -1
- package/dist/node_modules/lodash/flatMap.js +1 -2
- package/dist/node_modules/lodash/flatMap.js.map +1 -1
- package/dist/node_modules/lodash/get.js +1 -2
- package/dist/node_modules/lodash/get.js.map +1 -1
- package/dist/node_modules/lodash/hasIn.js +1 -2
- package/dist/node_modules/lodash/hasIn.js.map +1 -1
- package/dist/node_modules/lodash/identity.js +1 -2
- package/dist/node_modules/lodash/identity.js.map +1 -1
- package/dist/node_modules/lodash/isArguments.js +4 -5
- package/dist/node_modules/lodash/isArguments.js.map +1 -1
- package/dist/node_modules/lodash/isArray.js +1 -2
- package/dist/node_modules/lodash/isArray.js.map +1 -1
- package/dist/node_modules/lodash/isArrayLike.js +1 -2
- package/dist/node_modules/lodash/isArrayLike.js.map +1 -1
- package/dist/node_modules/lodash/isBoolean.js +1 -2
- package/dist/node_modules/lodash/isBoolean.js.map +1 -1
- package/dist/node_modules/lodash/isBuffer.js +1 -2
- package/dist/node_modules/lodash/isBuffer.js.map +1 -1
- package/dist/node_modules/lodash/isEqual.js +1 -2
- package/dist/node_modules/lodash/isEqual.js.map +1 -1
- package/dist/node_modules/lodash/isFunction.js +1 -2
- package/dist/node_modules/lodash/isFunction.js.map +1 -1
- package/dist/node_modules/lodash/isLength.js +4 -6
- package/dist/node_modules/lodash/isLength.js.map +1 -1
- package/dist/node_modules/lodash/isNaN.js +1 -2
- package/dist/node_modules/lodash/isNaN.js.map +1 -1
- package/dist/node_modules/lodash/isNil.js +1 -2
- package/dist/node_modules/lodash/isNil.js.map +1 -1
- package/dist/node_modules/lodash/isNumber.js +1 -2
- package/dist/node_modules/lodash/isNumber.js.map +1 -1
- package/dist/node_modules/lodash/isObject.js +1 -2
- package/dist/node_modules/lodash/isObject.js.map +1 -1
- package/dist/node_modules/lodash/isObjectLike.js +1 -2
- package/dist/node_modules/lodash/isObjectLike.js.map +1 -1
- package/dist/node_modules/lodash/isPlainObject.js +4 -5
- package/dist/node_modules/lodash/isPlainObject.js.map +1 -1
- package/dist/node_modules/lodash/isString.js +4 -5
- package/dist/node_modules/lodash/isString.js.map +1 -1
- package/dist/node_modules/lodash/isSymbol.js +1 -2
- package/dist/node_modules/lodash/isSymbol.js.map +1 -1
- package/dist/node_modules/lodash/isTypedArray.js +1 -2
- package/dist/node_modules/lodash/isTypedArray.js.map +1 -1
- package/dist/node_modules/lodash/keys.js +1 -2
- package/dist/node_modules/lodash/keys.js.map +1 -1
- package/dist/node_modules/lodash/last.js +1 -2
- package/dist/node_modules/lodash/last.js.map +1 -1
- package/dist/node_modules/lodash/map.js +6 -7
- package/dist/node_modules/lodash/map.js.map +1 -1
- package/dist/node_modules/lodash/mapValues.js +4 -5
- package/dist/node_modules/lodash/mapValues.js.map +1 -1
- package/dist/node_modules/lodash/max.js +5 -6
- package/dist/node_modules/lodash/max.js.map +1 -1
- package/dist/node_modules/lodash/memoize.js +1 -2
- package/dist/node_modules/lodash/memoize.js.map +1 -1
- package/dist/node_modules/lodash/min.js +5 -6
- package/dist/node_modules/lodash/min.js.map +1 -1
- package/dist/node_modules/lodash/noop.js +1 -2
- package/dist/node_modules/lodash/noop.js.map +1 -1
- package/dist/node_modules/lodash/now.js +1 -2
- package/dist/node_modules/lodash/now.js.map +1 -1
- package/dist/node_modules/lodash/property.js +6 -7
- package/dist/node_modules/lodash/property.js.map +1 -1
- package/dist/node_modules/lodash/range.js +1 -2
- package/dist/node_modules/lodash/range.js.map +1 -1
- package/dist/node_modules/lodash/some.js +7 -8
- package/dist/node_modules/lodash/some.js.map +1 -1
- package/dist/node_modules/lodash/sortBy.js +1 -2
- package/dist/node_modules/lodash/sortBy.js.map +1 -1
- package/dist/node_modules/lodash/stubArray.js +1 -2
- package/dist/node_modules/lodash/stubArray.js.map +1 -1
- package/dist/node_modules/lodash/stubFalse.js +1 -2
- package/dist/node_modules/lodash/stubFalse.js.map +1 -1
- package/dist/node_modules/lodash/throttle.js +4 -5
- package/dist/node_modules/lodash/throttle.js.map +1 -1
- package/dist/node_modules/lodash/toFinite.js +2 -3
- package/dist/node_modules/lodash/toFinite.js.map +1 -1
- package/dist/node_modules/lodash/toInteger.js +1 -2
- package/dist/node_modules/lodash/toInteger.js.map +1 -1
- package/dist/node_modules/lodash/toNumber.js +4 -5
- package/dist/node_modules/lodash/toNumber.js.map +1 -1
- package/dist/node_modules/lodash/toString.js +1 -2
- package/dist/node_modules/lodash/toString.js.map +1 -1
- package/dist/node_modules/lodash/uniqBy.js +1 -2
- package/dist/node_modules/lodash/uniqBy.js.map +1 -1
- package/dist/node_modules/lodash/upperFirst.js +1 -2
- package/dist/node_modules/lodash/upperFirst.js.map +1 -1
- package/dist/node_modules/object-assign/index.js +1 -2
- package/dist/node_modules/object-assign/index.js.map +1 -1
- package/dist/node_modules/prop-types/checkPropTypes.js +1 -2
- package/dist/node_modules/prop-types/checkPropTypes.js.map +1 -1
- package/dist/node_modules/prop-types/factoryWithThrowingShims.js +1 -2
- package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +1 -1
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +3 -3
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +1 -1
- package/dist/node_modules/prop-types/index.js +1 -2
- package/dist/node_modules/prop-types/index.js.map +1 -1
- package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +1 -2
- package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +1 -1
- package/dist/node_modules/prop-types/lib/has.js +1 -2
- package/dist/node_modules/prop-types/lib/has.js.map +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +1 -2
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +1 -2
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/index.js +2 -3
- package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +1 -1
- package/dist/node_modules/react-is/cjs/react-is.development.js +31 -32
- package/dist/node_modules/react-is/cjs/react-is.development.js.map +1 -1
- package/dist/node_modules/react-is/cjs/react-is.production.min.js +1 -2
- package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
- package/dist/node_modules/react-is/index.js +2 -3
- package/dist/node_modules/react-is/index.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/Animate.js +33 -41
- package/dist/node_modules/react-smooth/es6/Animate.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/AnimateManager.js +2 -5
- package/dist/node_modules/react-smooth/es6/AnimateManager.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/configUpdate.js +1 -2
- package/dist/node_modules/react-smooth/es6/configUpdate.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/easing.js +1 -2
- package/dist/node_modules/react-smooth/es6/easing.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/index.js +1 -2
- package/dist/node_modules/react-smooth/es6/index.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/setRafTimeout.js +1 -2
- package/dist/node_modules/react-smooth/es6/setRafTimeout.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/util.js +17 -16
- package/dist/node_modules/react-smooth/es6/util.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Bar.js +103 -104
- package/dist/node_modules/recharts/es6/cartesian/Bar.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Brush.js +35 -36
- package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js +60 -67
- package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js +45 -46
- package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js +20 -21
- package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Line.js +79 -80
- package/dist/node_modules/recharts/es6/cartesian/Line.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js +29 -30
- package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js +23 -24
- package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js +31 -32
- package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/XAxis.js +10 -11
- package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/YAxis.js +10 -11
- package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js +5 -6
- package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/getTicks.js +7 -8
- package/dist/node_modules/recharts/es6/cartesian/getTicks.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js +2 -5
- package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/BarChart.js +7 -8
- package/dist/node_modules/recharts/es6/chart/BarChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/LineChart.js +5 -6
- package/dist/node_modules/recharts/es6/chart/LineChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js +534 -533
- package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Cell.js +1 -2
- package/dist/node_modules/recharts/es6/component/Cell.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Cursor.js +17 -18
- package/dist/node_modules/recharts/es6/component/Cursor.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js +35 -36
- package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js +16 -17
- package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Label.js +85 -86
- package/dist/node_modules/recharts/es6/component/Label.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/LabelList.js +20 -21
- package/dist/node_modules/recharts/es6/component/LabelList.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Legend.js +26 -23
- package/dist/node_modules/recharts/es6/component/Legend.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js +16 -17
- package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Text.js +18 -21
- package/dist/node_modules/recharts/es6/component/Text.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Tooltip.js +16 -17
- package/dist/node_modules/recharts/es6/component/Tooltip.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js +3 -4
- package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js.map +1 -1
- package/dist/node_modules/recharts/es6/container/Layer.js +5 -6
- package/dist/node_modules/recharts/es6/container/Layer.js.map +1 -1
- package/dist/node_modules/recharts/es6/container/Surface.js +5 -6
- package/dist/node_modules/recharts/es6/container/Surface.js.map +1 -1
- package/dist/node_modules/recharts/es6/context/chartLayoutContext.js +21 -21
- package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Cross.js +4 -5
- package/dist/node_modules/recharts/es6/shape/Cross.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Curve.js +38 -49
- package/dist/node_modules/recharts/es6/shape/Curve.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Dot.js +3 -4
- package/dist/node_modules/recharts/es6/shape/Dot.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Rectangle.js +8 -9
- package/dist/node_modules/recharts/es6/shape/Rectangle.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Sector.js +33 -34
- package/dist/node_modules/recharts/es6/shape/Sector.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Symbols.js +26 -34
- package/dist/node_modules/recharts/es6/shape/Symbols.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Trapezoid.js +8 -9
- package/dist/node_modules/recharts/es6/shape/Trapezoid.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js +24 -25
- package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/BarUtils.js +10 -11
- package/dist/node_modules/recharts/es6/util/BarUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/CartesianUtils.js +33 -34
- package/dist/node_modules/recharts/es6/util/CartesianUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ChartUtils.js +231 -236
- package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js +1 -2
- package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/DOMUtils.js +1 -2
- package/dist/node_modules/recharts/es6/util/DOMUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/DataUtils.js +7 -8
- package/dist/node_modules/recharts/es6/util/DataUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js +20 -21
- package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/Events.js +0 -1
- package/dist/node_modules/recharts/es6/util/Events.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/Global.js +0 -1
- package/dist/node_modules/recharts/es6/util/Global.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js +1 -2
- package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/LogUtils.js +9 -8
- package/dist/node_modules/recharts/es6/util/LogUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/PolarUtils.js +4 -5
- package/dist/node_modules/recharts/es6/util/PolarUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ReactUtils.js +11 -12
- package/dist/node_modules/recharts/es6/util/ReactUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js +5 -6
- package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ShallowEqual.js +1 -2
- package/dist/node_modules/recharts/es6/util/ShallowEqual.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/TickUtils.js +4 -4
- package/dist/node_modules/recharts/es6/util/TickUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/calculateViewBox.js +0 -1
- package/dist/node_modules/recharts/es6/util/calculateViewBox.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js +7 -6
- package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js +1 -2
- package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js +1 -2
- package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js +1 -2
- package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/getLegendProps.js +9 -10
- package/dist/node_modules/recharts/es6/util/getLegendProps.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js +1 -2
- package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js +4 -5
- package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/tooltip/translate.js +3 -4
- package/dist/node_modules/recharts/es6/util/tooltip/translate.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/types.js +2 -3
- package/dist/node_modules/recharts/es6/util/types.js.map +1 -1
- package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js +2 -3
- package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js.map +1 -1
- package/dist/node_modules/recharts-scale/es6/index.js +1 -1
- package/dist/node_modules/recharts-scale/es6/util/arithmetic.js +1 -2
- package/dist/node_modules/recharts-scale/es6/util/arithmetic.js.map +1 -1
- package/dist/node_modules/recharts-scale/es6/util/utils.js +3 -4
- package/dist/node_modules/recharts-scale/es6/util/utils.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js +2 -3
- package/dist/node_modules/rxjs/dist/esm5/internal/NotificationFactories.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/Observable.js +41 -42
- package/dist/node_modules/rxjs/dist/esm5/internal/Observable.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/Subscriber.js +14 -15
- package/dist/node_modules/rxjs/dist/esm5/internal/Subscriber.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/Subscription.js +21 -18
- package/dist/node_modules/rxjs/dist/esm5/internal/Subscription.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/config.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/config.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/observable/empty.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/observable/empty.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js +2 -3
- package/dist/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/symbol/observable.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/symbol/observable.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/errorContext.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/util/errorContext.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/util/identity.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/util/isFunction.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/util/noop.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/pipe.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/util/pipe.js.map +1 -1
- package/dist/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js +1 -2
- package/dist/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js.map +1 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +229 -167
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -1
- package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js +2 -3
- package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +1 -1
- package/dist/node_modules/{rxjs/node_modules/tslib → tslib}/tslib.es6.js +1 -2
- package/dist/node_modules/tslib/tslib.es6.js.map +1 -0
- package/dist/node_modules/victory-vendor/es/d3-scale.js +28 -45
- package/dist/node_modules/victory-vendor/es/d3-scale.js.map +1 -1
- package/dist/test/happydom.d.ts +1 -0
- package/dist/translations/en.d.ts +0 -1
- package/dist/translations/en.js +1 -2
- package/dist/translations/en.js.map +1 -1
- package/dist/utils/nativeBridge.d.ts +0 -1
- package/dist/utils/nativeBridge.js +1 -2
- package/package.json +76 -60
- package/dist/__tests__/setup.d.ts +0 -2
- package/dist/__tests__/setup.d.ts.map +0 -1
- package/dist/__tests__/utils/renderWithProviders.d.ts.map +0 -1
- package/dist/dev/main.d.ts.map +0 -1
- package/dist/devportal/AdminDevportalRoot.d.ts.map +0 -1
- package/dist/devportal/AdminDevportalRoutes.d.ts.map +0 -1
- package/dist/devportal/DevportalRoot.d.ts.map +0 -1
- package/dist/devportal/DevportalRoutes.d.ts.map +0 -1
- package/dist/devportal/components/AppCard.d.ts.map +0 -1
- package/dist/devportal/components/ConfirmDialog.d.ts.map +0 -1
- package/dist/devportal/components/DataTable.d.ts.map +0 -1
- package/dist/devportal/components/EmptyState.d.ts.map +0 -1
- package/dist/devportal/components/FeatureFlaggedRoute.d.ts.map +0 -1
- package/dist/devportal/components/FormField.d.ts.map +0 -1
- package/dist/devportal/components/GrantDelegationModal.d.ts.map +0 -1
- package/dist/devportal/components/ImageUploadField.d.ts.map +0 -1
- package/dist/devportal/components/LoadingState.d.ts.map +0 -1
- package/dist/devportal/components/ManifestViewer.d.ts.map +0 -1
- package/dist/devportal/components/MarkdownEditor.d.ts.map +0 -1
- package/dist/devportal/components/MultiSelectCombobox.d.ts.map +0 -1
- package/dist/devportal/components/NodeSmokePanel.d.ts.map +0 -1
- package/dist/devportal/components/OnboardingChecklist.d.ts.map +0 -1
- package/dist/devportal/components/PackageValidationPanel.d.ts.map +0 -1
- package/dist/devportal/components/PageLayout.d.ts.map +0 -1
- package/dist/devportal/components/PermissionGuard.d.ts.map +0 -1
- package/dist/devportal/components/RegisterPickupLocationModal.d.ts.map +0 -1
- package/dist/devportal/components/ReportOrderIssueModal.d.ts.map +0 -1
- package/dist/devportal/components/SecretDisplay.d.ts.map +0 -1
- package/dist/devportal/components/SectionNav.d.ts.map +0 -1
- package/dist/devportal/components/SelectionCheckbox.d.ts.map +0 -1
- package/dist/devportal/components/StatCard.d.ts.map +0 -1
- package/dist/devportal/components/StatusBadge.d.ts.map +0 -1
- package/dist/devportal/components/TelemetryErrorBoundary.d.ts.map +0 -1
- package/dist/devportal/components/index.d.ts.map +0 -1
- package/dist/devportal/constants/appCategories.d.ts.map +0 -1
- package/dist/devportal/constants/developerLinks.d.ts.map +0 -1
- package/dist/devportal/constants/permissions.d.ts.map +0 -1
- package/dist/devportal/events/index.d.ts.map +0 -1
- package/dist/devportal/hooks/DevPortalProvider.d.ts.map +0 -1
- package/dist/devportal/hooks/index.d.ts.map +0 -1
- package/dist/devportal/hooks/useCarrierPickupLocations.d.ts.map +0 -1
- package/dist/devportal/hooks/useGraphQL.d.ts.map +0 -1
- package/dist/devportal/hooks/useIsSellerSection.d.ts.map +0 -1
- package/dist/devportal/hooks/useOrganizationPickupAddresses.d.ts.map +0 -1
- package/dist/devportal/hooks/usePackageUpload.d.ts.map +0 -1
- package/dist/devportal/hooks/usePermission.d.ts.map +0 -1
- package/dist/devportal/hooks/useProducts.d.ts.map +0 -1
- package/dist/devportal/hooks/useSellerOrganization.d.ts.map +0 -1
- package/dist/devportal/index.d.ts.map +0 -1
- package/dist/devportal/pages/AdminOrganizationVerificationPage.d.ts.map +0 -1
- package/dist/devportal/pages/AdminReviewPage.d.ts.map +0 -1
- package/dist/devportal/pages/AnalyticsDashboardPage.d.ts.map +0 -1
- package/dist/devportal/pages/ApiKeysPage.d.ts.map +0 -1
- package/dist/devportal/pages/AppLogsPage.d.ts.map +0 -1
- package/dist/devportal/pages/ApplicationDetailPage.d.ts.map +0 -1
- package/dist/devportal/pages/ApplicationVersionsPage.d.ts.map +0 -1
- package/dist/devportal/pages/ApplicationsPage.d.ts.map +0 -1
- package/dist/devportal/pages/CreateApiKeyPage.d.ts.map +0 -1
- package/dist/devportal/pages/CreateApplicationPage.d.ts.map +0 -1
- package/dist/devportal/pages/CreateOAuthClientPage.d.ts.map +0 -1
- package/dist/devportal/pages/CreateOrganizationPage.d.ts.map +0 -1
- package/dist/devportal/pages/CreatePhysicalItemPage.d.ts.map +0 -1
- package/dist/devportal/pages/CreateWebhookPage.d.ts.map +0 -1
- package/dist/devportal/pages/DashboardPage.d.ts.map +0 -1
- package/dist/devportal/pages/DelegationsPage.d.ts.map +0 -1
- package/dist/devportal/pages/DocumentationPage.d.ts.map +0 -1
- package/dist/devportal/pages/EditApplicationPage.d.ts.map +0 -1
- package/dist/devportal/pages/EditPhysicalItemPage.d.ts.map +0 -1
- package/dist/devportal/pages/InvitationDecisionPage.d.ts.map +0 -1
- package/dist/devportal/pages/ListingPreviewPage.d.ts.map +0 -1
- package/dist/devportal/pages/NodeLifecyclePage.d.ts.map +0 -1
- package/dist/devportal/pages/OAuthCallbackPage.d.ts.map +0 -1
- package/dist/devportal/pages/OAuthClientDetailPage.d.ts.map +0 -1
- package/dist/devportal/pages/OAuthClientsPage.d.ts.map +0 -1
- package/dist/devportal/pages/OrganizationDetailPage.d.ts.map +0 -1
- package/dist/devportal/pages/OrganizationMembersPage.d.ts.map +0 -1
- package/dist/devportal/pages/OrganizationsPage.d.ts.map +0 -1
- package/dist/devportal/pages/PublishPage.d.ts.map +0 -1
- package/dist/devportal/pages/PublisherPayoutsPage.d.ts.map +0 -1
- package/dist/devportal/pages/PublisherProfilePage.d.ts.map +0 -1
- package/dist/devportal/pages/ResourcesPage.d.ts.map +0 -1
- package/dist/devportal/pages/RevenueDashboardPage.d.ts.map +0 -1
- package/dist/devportal/pages/RevenueRedirectPage.d.ts.map +0 -1
- package/dist/devportal/pages/SellerDashboardPage.d.ts.map +0 -1
- package/dist/devportal/pages/SellerItemsPage.d.ts.map +0 -1
- package/dist/devportal/pages/SellerOrdersPage.d.ts.map +0 -1
- package/dist/devportal/pages/SettingsPage.d.ts.map +0 -1
- package/dist/devportal/pages/SetupPage.d.ts.map +0 -1
- package/dist/devportal/pages/StoreSubmissionPage.d.ts.map +0 -1
- package/dist/devportal/pages/WebhookDetailPage.d.ts.map +0 -1
- package/dist/devportal/pages/WebhooksPage.d.ts.map +0 -1
- package/dist/devportal/providers/DevportalProvider.d.ts.map +0 -1
- package/dist/devportal/store/devportalStore.d.ts.map +0 -1
- package/dist/devportal/types/index.d.ts.map +0 -1
- package/dist/devportal/utils/cn.d.ts.map +0 -1
- package/dist/devportal/utils/constants.d.ts.map +0 -1
- package/dist/devportal/utils/currency.d.ts.map +0 -1
- package/dist/devportal/utils/developerOnboarding.d.ts.map +0 -1
- package/dist/devportal/utils/graphqlEndpoint.d.ts.map +0 -1
- package/dist/devportal/utils/i18n.d.ts.map +0 -1
- package/dist/devportal/utils/nodeLifecycle.d.ts.map +0 -1
- package/dist/devportal/utils/publisherPayouts.d.ts.map +0 -1
- package/dist/devportal/utils/recaptcha.d.ts.map +0 -1
- package/dist/devportal/utils/submitForReview.d.ts.map +0 -1
- package/dist/devportal/utils/uploadErrors.d.ts.map +0 -1
- package/dist/generated/global-operations.d.ts.map +0 -1
- package/dist/generated/global-types.d.ts.map +0 -1
- package/dist/generated/wspace-operations.d.ts.map +0 -1
- package/dist/generated/wspace-types.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/node_modules/d3-array/src/ascending.js +0 -8
- package/dist/node_modules/d3-array/src/ascending.js.map +0 -1
- package/dist/node_modules/d3-array/src/bisect.js +0 -10
- package/dist/node_modules/d3-array/src/bisect.js.map +0 -1
- package/dist/node_modules/d3-array/src/bisector.js +0 -43
- package/dist/node_modules/d3-array/src/bisector.js.map +0 -1
- package/dist/node_modules/d3-array/src/descending.js +0 -8
- package/dist/node_modules/d3-array/src/descending.js.map +0 -1
- package/dist/node_modules/d3-array/src/max.js +0 -14
- package/dist/node_modules/d3-array/src/max.js.map +0 -1
- package/dist/node_modules/d3-array/src/min.js +0 -14
- package/dist/node_modules/d3-array/src/min.js.map +0 -1
- package/dist/node_modules/d3-array/src/number.js +0 -15
- package/dist/node_modules/d3-array/src/number.js.map +0 -1
- package/dist/node_modules/d3-array/src/quantile.js +0 -25
- package/dist/node_modules/d3-array/src/quantile.js.map +0 -1
- package/dist/node_modules/d3-array/src/quickselect.js +0 -26
- package/dist/node_modules/d3-array/src/quickselect.js.map +0 -1
- package/dist/node_modules/d3-array/src/range.js +0 -10
- package/dist/node_modules/d3-array/src/range.js.map +0 -1
- package/dist/node_modules/d3-array/src/sort.js +0 -17
- package/dist/node_modules/d3-array/src/sort.js.map +0 -1
- package/dist/node_modules/d3-array/src/ticks.js +0 -34
- package/dist/node_modules/d3-array/src/ticks.js.map +0 -1
- package/dist/node_modules/d3-color/src/color.js +0 -291
- package/dist/node_modules/d3-color/src/color.js.map +0 -1
- package/dist/node_modules/d3-color/src/define.js +0 -13
- package/dist/node_modules/d3-color/src/define.js.map +0 -1
- package/dist/node_modules/d3-format/src/defaultLocale.js +0 -15
- package/dist/node_modules/d3-format/src/defaultLocale.js.map +0 -1
- package/dist/node_modules/d3-format/src/exponent.js +0 -9
- package/dist/node_modules/d3-format/src/exponent.js.map +0 -1
- package/dist/node_modules/d3-format/src/formatDecimal.js +0 -13
- package/dist/node_modules/d3-format/src/formatDecimal.js.map +0 -1
- package/dist/node_modules/d3-format/src/formatGroup.js +0 -11
- package/dist/node_modules/d3-format/src/formatGroup.js.map +0 -1
- package/dist/node_modules/d3-format/src/formatNumerals.js +0 -12
- package/dist/node_modules/d3-format/src/formatNumerals.js.map +0 -1
- package/dist/node_modules/d3-format/src/formatPrefixAuto.js +0 -13
- package/dist/node_modules/d3-format/src/formatPrefixAuto.js.map +0 -1
- package/dist/node_modules/d3-format/src/formatRounded.js +0 -12
- package/dist/node_modules/d3-format/src/formatRounded.js.map +0 -1
- package/dist/node_modules/d3-format/src/formatSpecifier.js +0 -29
- package/dist/node_modules/d3-format/src/formatSpecifier.js.map +0 -1
- package/dist/node_modules/d3-format/src/formatTrim.js +0 -20
- package/dist/node_modules/d3-format/src/formatTrim.js.map +0 -1
- package/dist/node_modules/d3-format/src/formatTypes.js +0 -23
- package/dist/node_modules/d3-format/src/formatTypes.js.map +0 -1
- package/dist/node_modules/d3-format/src/identity.js +0 -8
- package/dist/node_modules/d3-format/src/identity.js.map +0 -1
- package/dist/node_modules/d3-format/src/locale.js +0 -86
- package/dist/node_modules/d3-format/src/locale.js.map +0 -1
- package/dist/node_modules/d3-format/src/precisionFixed.js +0 -9
- package/dist/node_modules/d3-format/src/precisionFixed.js.map +0 -1
- package/dist/node_modules/d3-format/src/precisionPrefix.js +0 -9
- package/dist/node_modules/d3-format/src/precisionPrefix.js.map +0 -1
- package/dist/node_modules/d3-format/src/precisionRound.js +0 -9
- package/dist/node_modules/d3-format/src/precisionRound.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/array.js +0 -15
- package/dist/node_modules/d3-interpolate/src/array.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/basis.js +0 -16
- package/dist/node_modules/d3-interpolate/src/basis.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/basisClosed.js +0 -13
- package/dist/node_modules/d3-interpolate/src/basisClosed.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/color.js +0 -25
- package/dist/node_modules/d3-interpolate/src/color.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/constant.js +0 -6
- package/dist/node_modules/d3-interpolate/src/constant.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/date.js +0 -11
- package/dist/node_modules/d3-interpolate/src/date.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/number.js +0 -10
- package/dist/node_modules/d3-interpolate/src/number.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/numberArray.js +0 -16
- package/dist/node_modules/d3-interpolate/src/numberArray.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/object.js +0 -14
- package/dist/node_modules/d3-interpolate/src/object.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/piecewise.js +0 -14
- package/dist/node_modules/d3-interpolate/src/piecewise.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/rgb.js +0 -19
- package/dist/node_modules/d3-interpolate/src/rgb.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/round.js +0 -10
- package/dist/node_modules/d3-interpolate/src/round.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/string.js +0 -28
- package/dist/node_modules/d3-interpolate/src/string.js.map +0 -1
- package/dist/node_modules/d3-interpolate/src/value.js +0 -18
- package/dist/node_modules/d3-interpolate/src/value.js.map +0 -1
- package/dist/node_modules/d3-path/src/path.js.map +0 -1
- package/dist/node_modules/d3-scale/src/band.js +0 -52
- package/dist/node_modules/d3-scale/src/band.js.map +0 -1
- package/dist/node_modules/d3-scale/src/constant.js +0 -10
- package/dist/node_modules/d3-scale/src/constant.js.map +0 -1
- package/dist/node_modules/d3-scale/src/continuous.js +0 -73
- package/dist/node_modules/d3-scale/src/continuous.js.map +0 -1
- package/dist/node_modules/d3-scale/src/diverging.js +0 -82
- package/dist/node_modules/d3-scale/src/diverging.js.map +0 -1
- package/dist/node_modules/d3-scale/src/identity.js +0 -20
- package/dist/node_modules/d3-scale/src/identity.js.map +0 -1
- package/dist/node_modules/d3-scale/src/init.js +0 -29
- package/dist/node_modules/d3-scale/src/init.js.map +0 -1
- package/dist/node_modules/d3-scale/src/linear.js +0 -36
- package/dist/node_modules/d3-scale/src/linear.js.map +0 -1
- package/dist/node_modules/d3-scale/src/log.js +0 -77
- package/dist/node_modules/d3-scale/src/log.js.map +0 -1
- package/dist/node_modules/d3-scale/src/nice.js +0 -10
- package/dist/node_modules/d3-scale/src/nice.js.map +0 -1
- package/dist/node_modules/d3-scale/src/number.js +0 -8
- package/dist/node_modules/d3-scale/src/number.js.map +0 -1
- package/dist/node_modules/d3-scale/src/ordinal.js +0 -31
- package/dist/node_modules/d3-scale/src/ordinal.js.map +0 -1
- package/dist/node_modules/d3-scale/src/pow.js +0 -37
- package/dist/node_modules/d3-scale/src/pow.js.map +0 -1
- package/dist/node_modules/d3-scale/src/quantile.js +0 -37
- package/dist/node_modules/d3-scale/src/quantile.js.map +0 -1
- package/dist/node_modules/d3-scale/src/quantize.js +0 -33
- package/dist/node_modules/d3-scale/src/quantize.js.map +0 -1
- package/dist/node_modules/d3-scale/src/radial.js +0 -39
- package/dist/node_modules/d3-scale/src/radial.js.map +0 -1
- package/dist/node_modules/d3-scale/src/sequential.js +0 -67
- package/dist/node_modules/d3-scale/src/sequential.js.map +0 -1
- package/dist/node_modules/d3-scale/src/sequentialQuantile.js +0 -30
- package/dist/node_modules/d3-scale/src/sequentialQuantile.js.map +0 -1
- package/dist/node_modules/d3-scale/src/symlog.js +0 -30
- package/dist/node_modules/d3-scale/src/symlog.js.map +0 -1
- package/dist/node_modules/d3-scale/src/threshold.js +0 -25
- package/dist/node_modules/d3-scale/src/threshold.js.map +0 -1
- package/dist/node_modules/d3-scale/src/tickFormat.js +0 -31
- package/dist/node_modules/d3-scale/src/tickFormat.js.map +0 -1
- package/dist/node_modules/d3-scale/src/time.js +0 -47
- package/dist/node_modules/d3-scale/src/time.js.map +0 -1
- package/dist/node_modules/d3-scale/src/utcTime.js +0 -19
- package/dist/node_modules/d3-scale/src/utcTime.js.map +0 -1
- package/dist/node_modules/d3-shape/src/area.js +0 -55
- package/dist/node_modules/d3-shape/src/area.js.map +0 -1
- package/dist/node_modules/d3-shape/src/array.js +0 -8
- package/dist/node_modules/d3-shape/src/array.js.map +0 -1
- package/dist/node_modules/d3-shape/src/constant.js +0 -10
- package/dist/node_modules/d3-shape/src/constant.js.map +0 -1
- package/dist/node_modules/d3-shape/src/curve/basis.js +0 -49
- package/dist/node_modules/d3-shape/src/curve/basis.js.map +0 -1
- package/dist/node_modules/d3-shape/src/curve/basisClosed.js +0 -50
- package/dist/node_modules/d3-shape/src/curve/basisClosed.js.map +0 -1
- package/dist/node_modules/d3-shape/src/curve/basisOpen.js +0 -46
- package/dist/node_modules/d3-shape/src/curve/basisOpen.js.map +0 -1
- package/dist/node_modules/d3-shape/src/curve/bump.js +0 -40
- package/dist/node_modules/d3-shape/src/curve/bump.js.map +0 -1
- package/dist/node_modules/d3-shape/src/curve/linear.js +0 -36
- package/dist/node_modules/d3-shape/src/curve/linear.js.map +0 -1
- package/dist/node_modules/d3-shape/src/curve/linearClosed.js +0 -25
- package/dist/node_modules/d3-shape/src/curve/linearClosed.js.map +0 -1
- package/dist/node_modules/d3-shape/src/curve/monotone.js +0 -94
- package/dist/node_modules/d3-shape/src/curve/monotone.js.map +0 -1
- package/dist/node_modules/d3-shape/src/curve/natural.js +0 -39
- package/dist/node_modules/d3-shape/src/curve/natural.js.map +0 -1
- package/dist/node_modules/d3-shape/src/curve/step.js +0 -47
- package/dist/node_modules/d3-shape/src/curve/step.js.map +0 -1
- package/dist/node_modules/d3-shape/src/line.js +0 -30
- package/dist/node_modules/d3-shape/src/line.js.map +0 -1
- package/dist/node_modules/d3-shape/src/math.js +0 -8
- package/dist/node_modules/d3-shape/src/math.js.map +0 -1
- package/dist/node_modules/d3-shape/src/noop.js +0 -6
- package/dist/node_modules/d3-shape/src/noop.js.map +0 -1
- package/dist/node_modules/d3-shape/src/offset/expand.js +0 -15
- package/dist/node_modules/d3-shape/src/offset/expand.js.map +0 -1
- package/dist/node_modules/d3-shape/src/offset/none.js +0 -8
- package/dist/node_modules/d3-shape/src/offset/none.js.map +0 -1
- package/dist/node_modules/d3-shape/src/offset/silhouette.js +0 -15
- package/dist/node_modules/d3-shape/src/offset/silhouette.js.map +0 -1
- package/dist/node_modules/d3-shape/src/offset/wiggle.js +0 -21
- package/dist/node_modules/d3-shape/src/offset/wiggle.js.map +0 -1
- package/dist/node_modules/d3-shape/src/order/none.js +0 -9
- package/dist/node_modules/d3-shape/src/order/none.js.map +0 -1
- package/dist/node_modules/d3-shape/src/path.js +0 -19
- package/dist/node_modules/d3-shape/src/path.js.map +0 -1
- package/dist/node_modules/d3-shape/src/point.js +0 -11
- package/dist/node_modules/d3-shape/src/point.js.map +0 -1
- package/dist/node_modules/d3-shape/src/stack.js +0 -34
- package/dist/node_modules/d3-shape/src/stack.js.map +0 -1
- package/dist/node_modules/d3-shape/src/symbol/circle.js +0 -10
- package/dist/node_modules/d3-shape/src/symbol/circle.js.map +0 -1
- package/dist/node_modules/d3-shape/src/symbol/cross.js +0 -10
- package/dist/node_modules/d3-shape/src/symbol/cross.js.map +0 -1
- package/dist/node_modules/d3-shape/src/symbol/diamond.js +0 -10
- package/dist/node_modules/d3-shape/src/symbol/diamond.js.map +0 -1
- package/dist/node_modules/d3-shape/src/symbol/square.js +0 -10
- package/dist/node_modules/d3-shape/src/symbol/square.js.map +0 -1
- package/dist/node_modules/d3-shape/src/symbol/star.js +0 -15
- package/dist/node_modules/d3-shape/src/symbol/star.js.map +0 -1
- package/dist/node_modules/d3-shape/src/symbol/triangle.js +0 -10
- package/dist/node_modules/d3-shape/src/symbol/triangle.js.map +0 -1
- package/dist/node_modules/d3-shape/src/symbol/wye.js +0 -10
- package/dist/node_modules/d3-shape/src/symbol/wye.js.map +0 -1
- package/dist/node_modules/d3-shape/src/symbol.js +0 -23
- package/dist/node_modules/d3-shape/src/symbol.js.map +0 -1
- package/dist/node_modules/d3-time/src/day.js +0 -21
- package/dist/node_modules/d3-time/src/day.js.map +0 -1
- package/dist/node_modules/d3-time/src/duration.js +0 -6
- package/dist/node_modules/d3-time/src/duration.js.map +0 -1
- package/dist/node_modules/d3-time/src/hour.js +0 -19
- package/dist/node_modules/d3-time/src/hour.js.map +0 -1
- package/dist/node_modules/d3-time/src/interval.js +0 -28
- package/dist/node_modules/d3-time/src/interval.js.map +0 -1
- package/dist/node_modules/d3-time/src/millisecond.js +0 -14
- package/dist/node_modules/d3-time/src/millisecond.js.map +0 -1
- package/dist/node_modules/d3-time/src/minute.js +0 -19
- package/dist/node_modules/d3-time/src/minute.js.map +0 -1
- package/dist/node_modules/d3-time/src/month.js +0 -18
- package/dist/node_modules/d3-time/src/month.js.map +0 -1
- package/dist/node_modules/d3-time/src/second.js +0 -13
- package/dist/node_modules/d3-time/src/second.js.map +0 -1
- package/dist/node_modules/d3-time/src/ticks.js +0 -125
- package/dist/node_modules/d3-time/src/ticks.js.map +0 -1
- package/dist/node_modules/d3-time/src/week.js +0 -25
- package/dist/node_modules/d3-time/src/week.js.map +0 -1
- package/dist/node_modules/d3-time/src/year.js +0 -26
- package/dist/node_modules/d3-time/src/year.js.map +0 -1
- package/dist/node_modules/d3-time-format/src/defaultLocale.js +0 -62
- package/dist/node_modules/d3-time-format/src/defaultLocale.js.map +0 -1
- package/dist/node_modules/d3-time-format/src/locale.js.map +0 -1
- package/dist/node_modules/internmap/src/index.js +0 -40
- package/dist/node_modules/internmap/src/index.js.map +0 -1
- package/dist/node_modules/rxjs/node_modules/tslib/tslib.es6.js.map +0 -1
- package/dist/translations/en.d.ts.map +0 -1
- package/dist/utils/nativeBridge.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevenueDashboardPage.js","names":[],"sources":["../../../src/devportal/pages/RevenueDashboardPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useMemo, useState } from \"react\";\nimport { useSearchParams } from \"react-router\";\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Line,\n LineChart,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport {\n AlertCircle,\n ArrowDownToLine,\n Banknote,\n Building2,\n Check,\n CreditCard,\n DollarSign,\n Link2,\n Loader2,\n Send,\n Wallet,\n} from \"lucide-react\";\nimport { EmphasisPanel, GlassCard } from \"@burdenoff/fe-libs/ui\";\nimport { useDevportal } from \"../providers/DevportalProvider\";\nimport { useIsSellerSection } from \"../hooks/useIsSellerSection\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { DataTable } from \"../components/DataTable\";\nimport { EmptyState } from \"../components/EmptyState\";\nimport { StatCard, StatCardGrid } from \"../components/StatCard\";\nimport { StatusBadge } from \"../components/StatusBadge\";\nimport type { DeveloperOrganization } from \"../types\";\nimport { DevPortalPaymentMethodType } from \"../../generated/global-types\";\nimport {\n type GetMyOrganizationsQuery,\n type GetPaymentMethodsQuery,\n type GetRevenueDashboardDataQuery,\n getErrorMessage,\n useAddPaymentMethodMutation,\n useGetBillingAccountsByOrgQuery,\n useGetMyOrganizationsQuery,\n useGetPaymentMethodsQuery,\n useGetRevenueDashboardDataQuery,\n useLinkDevOrgBillingAccountMutation,\n useRequestPayoutMutation,\n} from \"../hooks\";\nimport { cn } from \"../utils/cn\";\nimport { formatCurrency } from \"../utils/currency\";\nimport { useTr } from \"../utils/i18n\";\n\n// Real business rule (devportal's createDeveloperOrgPayoutRequest resolver,\n// sales.ts) — kept in sync here so the button can be disabled with a clear\n// reason up front instead of letting the request round-trip and fail.\nconst MIN_PAYOUT_THRESHOLD = 100;\n\ntype TimeRange = \"30d\" | \"90d\" | \"12m\";\n\nconst chartColors = {\n primary: \"var(--color-chart-1)\",\n secondary: \"var(--color-chart-2)\",\n tertiary: \"var(--color-chart-4)\",\n};\n\ntype RevenueSale =\n GetRevenueDashboardDataQuery[\"developerOrgSales\"][\"edges\"][number][\"node\"];\ntype RevenuePayout =\n GetRevenueDashboardDataQuery[\"developerOrgPayouts\"][\"edges\"][number][\"node\"];\n\nconst daysByRange: Record<TimeRange, number> = {\n \"30d\": 30,\n \"90d\": 90,\n \"12m\": 365,\n};\n\nexport const RevenueDashboardPage: FC = () => {\n const tr = useTr();\n const {\n activeOrgId: activeDigitalOrgId,\n activePhysicalOrgId,\n tenantId,\n } = useDevportal();\n const isSeller = useIsSellerSection();\n // Shared page for both kinds — reads whichever active-org slot matches the\n // section it's reached from (seller portal vs regular devportal). Every\n // existing `activeOrgId` reference below keeps working unchanged. See\n // DeveloperOrgKind (BOFF-7285).\n const activeOrgId = isSeller ? activePhysicalOrgId : activeDigitalOrgId;\n const [timeRange, setTimeRange] = useState<TimeRange>(\"90d\");\n const [linkingBilling, setLinkingBilling] = useState(false);\n const [linkBillingError, setLinkBillingError] = useState<string | null>(null);\n\n const [linkBillingAccount] = useLinkDevOrgBillingAccountMutation();\n const [showBillingPicker, setShowBillingPicker] = useState(false);\n const [selectedBillingAccountId, setSelectedBillingAccountId] = useState<\n string | null\n >(null);\n const [searchParams] = useSearchParams();\n const now = useMemo(() => new Date(), []);\n\n // Request Withdrawal (BOFF-7192) — the actual withdrawal executes on\n // billing's side (requestPayout mirrors a canonical PayoutRequest there);\n // this panel only starts that request and, if needed, collects a payout\n // method first.\n const [showWithdrawPanel, setShowWithdrawPanel] = useState(false);\n const [withdrawError, setWithdrawError] = useState<string | null>(null);\n const [selectedPaymentMethodId, setSelectedPaymentMethodId] = useState<\n string | null\n >(null);\n const [showAddMethodForm, setShowAddMethodForm] = useState(false);\n const [newMethodType, setNewMethodType] =\n useState<DevPortalPaymentMethodType>(\n DevPortalPaymentMethodType.BankAccount,\n );\n const [newMethodName, setNewMethodName] = useState(\"\");\n const [newMethodAccountNumber, setNewMethodAccountNumber] = useState(\"\");\n const [newMethodRoutingNumber, setNewMethodRoutingNumber] = useState(\"\");\n const [newMethodEmail, setNewMethodEmail] = useState(\"\");\n const [addMethodError, setAddMethodError] = useState<string | null>(null);\n\n const { data: paymentMethodsData, loading: paymentMethodsLoading } =\n useGetPaymentMethodsQuery({\n variables: { organizationId: activeOrgId ?? \"\" },\n skip: !activeOrgId,\n fetchPolicy: \"cache-and-network\",\n });\n const [addPaymentMethod, { loading: addingMethod }] =\n useAddPaymentMethodMutation();\n const [requestPayout, { loading: requestingWithdraw }] =\n useRequestPayoutMutation();\n\n const { data: billingAccountsData, loading: billingAccountsLoading } =\n useGetBillingAccountsByOrgQuery({\n fetchPolicy: \"cache-and-network\",\n context: { headers: { \"x-org-id\": tenantId ?? \"\" } },\n });\n // searchParams kept for deep-link compatibility (URL ?org= still works via OrgSwitcher auto-select)\n void searchParams;\n const startDate = useMemo(() => {\n const nextDate = new Date(now);\n nextDate.setDate(nextDate.getDate() - daysByRange[timeRange]);\n return nextDate.toISOString();\n }, [now, timeRange]);\n\n const {\n data: organizationsData,\n loading: organizationsLoading,\n error: organizationsError,\n } = useGetMyOrganizationsQuery({\n fetchPolicy: \"cache-and-network\",\n });\n const { data, loading, error } = useGetRevenueDashboardDataQuery({\n variables: {\n organizationId: activeOrgId ?? \"\",\n period: \"monthly\",\n startDate,\n endDate: now.toISOString(),\n salesLimit: 10,\n salesOffset: 0,\n payoutsLimit: 10,\n payoutsOffset: 0,\n },\n skip: !activeOrgId,\n fetchPolicy: \"cache-and-network\",\n });\n\n const organizations: DeveloperOrganization[] = useMemo(\n () =>\n organizationsData?.myDeveloperOrganizations?.map(\n (\n organization: GetMyOrganizationsQuery[\"myDeveloperOrganizations\"][number],\n ) => organization as unknown as DeveloperOrganization,\n ) ?? [],\n [organizationsData?.myDeveloperOrganizations],\n );\n\n const selectedOrganization = organizations.find(\n (organization) => organization.id === activeOrgId,\n );\n\n type BillingAccount = NonNullable<\n typeof billingAccountsData\n >[\"getBillingAccountsByOrg\"][number];\n const existingBillingAccounts: BillingAccount[] =\n billingAccountsData?.getBillingAccountsByOrg ?? [];\n\n const linkedBillingAccount =\n existingBillingAccounts.find(\n (a) => a.id === selectedOrganization?.billingAccountId,\n ) ?? null;\n\n const handleOpenBillingPicker = () => {\n // Pre-select the currently linked account; fall back to default or first\n setSelectedBillingAccountId(\n selectedOrganization?.billingAccountId ??\n existingBillingAccounts.find((a) => a.isDefault)?.id ??\n existingBillingAccounts[0]?.id ??\n null,\n );\n setShowBillingPicker(true);\n };\n\n const handleLinkExisting = async () => {\n if (!activeOrgId || !selectedBillingAccountId) return;\n setLinkingBilling(true);\n setLinkBillingError(null);\n try {\n await linkBillingAccount({\n variables: {\n organizationId: activeOrgId,\n billingAccountId: selectedBillingAccountId,\n },\n refetchQueries: [\"GetMyOrganizations\"],\n });\n setShowBillingPicker(false);\n } catch (err) {\n setLinkBillingError(\n err instanceof Error ? err.message : \"Failed to link billing account\",\n );\n } finally {\n setLinkingBilling(false);\n }\n };\n\n type PaymentMethod =\n GetPaymentMethodsQuery[\"developerOrgPaymentMethods\"][number];\n const paymentMethods: PaymentMethod[] =\n paymentMethodsData?.developerOrgPaymentMethods ?? [];\n const activePaymentMethods = paymentMethods.filter(\n (method: PaymentMethod) => method.isActive,\n );\n\n const handleOpenWithdrawPanel = () => {\n const defaultMethod =\n activePaymentMethods.find((method: PaymentMethod) => method.isDefault) ??\n activePaymentMethods[0];\n setSelectedPaymentMethodId(defaultMethod?.id ?? null);\n setShowAddMethodForm(activePaymentMethods.length === 0);\n setAddMethodError(null);\n setWithdrawError(null);\n setShowWithdrawPanel(true);\n };\n\n const handleAddPaymentMethod = async () => {\n if (!activeOrgId) return;\n setAddMethodError(null);\n const isPaypal = newMethodType === DevPortalPaymentMethodType.Paypal;\n const accountDetails = isPaypal\n ? { email: newMethodEmail }\n : {\n accountNumber: newMethodAccountNumber,\n routingNumber: newMethodRoutingNumber,\n };\n try {\n const result = await addPaymentMethod({\n variables: {\n organizationId: activeOrgId,\n input: {\n type: newMethodType,\n name: newMethodName || (isPaypal ? \"PayPal\" : \"Bank Account\"),\n accountDetails,\n isDefault: activePaymentMethods.length === 0,\n },\n },\n refetchQueries: [\"GetPaymentMethods\"],\n });\n const created = result.data?.addDeveloperOrgPaymentMethod;\n if (created) {\n setSelectedPaymentMethodId(created.id);\n }\n setShowAddMethodForm(false);\n setNewMethodName(\"\");\n setNewMethodAccountNumber(\"\");\n setNewMethodRoutingNumber(\"\");\n setNewMethodEmail(\"\");\n } catch (err) {\n setAddMethodError(\n err instanceof Error ? err.message : \"Failed to add payout method\",\n );\n }\n };\n\n const handleRequestWithdrawal = async () => {\n if (!activeOrgId || !selectedPaymentMethodId) return;\n setWithdrawError(null);\n try {\n await requestPayout({\n variables: {\n organizationId: activeOrgId,\n paymentMethodId: selectedPaymentMethodId,\n },\n refetchQueries: [\"GetRevenueDashboardData\"],\n });\n setShowWithdrawPanel(false);\n } catch (err) {\n setWithdrawError(\n err instanceof Error ? err.message : \"Failed to request withdrawal\",\n );\n }\n };\n\n const summary = data?.developerOrgRevenueSummary;\n const canRequestWithdrawal =\n (summary?.pendingBalance ?? 0) >= MIN_PAYOUT_THRESHOLD;\n const analytics = [...(data?.developerOrgRevenueAnalytics ?? [])].sort(\n (left, right) =>\n new Date(left.date).getTime() - new Date(right.date).getTime(),\n );\n const sales: RevenueSale[] =\n data?.developerOrgSales?.edges?.map(\n (\n edge: GetRevenueDashboardDataQuery[\"developerOrgSales\"][\"edges\"][number],\n ) => edge.node,\n ) ?? [];\n const payouts: RevenuePayout[] =\n data?.developerOrgPayouts?.edges?.map(\n (\n edge: GetRevenueDashboardDataQuery[\"developerOrgPayouts\"][\"edges\"][number],\n ) => edge.node,\n ) ?? [];\n\n const chartData = analytics.map((entry) => ({\n date: new Date(entry.date).toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n }),\n grossRevenue: entry.grossRevenue,\n netRevenue: entry.netRevenue,\n platformFees: entry.platformFees,\n refunds: entry.refunds,\n salesCount: entry.salesCount,\n }));\n\n if (organizationsLoading && !organizationsData) {\n return (\n <PageLayout\n title={tr(\"devportal.revenue.title\", \"Revenue\")}\n description={tr(\n \"devportal.revenue.description\",\n \"Track real revenue, sales, and payout activity for your developer organizations\",\n )}\n >\n <div className=\"flex items-center justify-center py-16 text-text-secondary\">\n <Loader2 className=\"h-8 w-8 animate-spin\" />\n </div>\n </PageLayout>\n );\n }\n\n if (organizationsError) {\n return (\n <PageLayout\n title={tr(\"devportal.revenue.title\", \"Revenue\")}\n description={tr(\n \"devportal.revenue.description\",\n \"Track real revenue, sales, and payout activity for your developer organizations\",\n )}\n >\n <EmptyState\n icon={<AlertCircle size={32} className=\"text-status-error-text\" />}\n title={tr(\n \"devportal.revenue.errorLoadOrgs\",\n \"Unable to load organizations\",\n )}\n description={getErrorMessage(organizationsError)}\n />\n </PageLayout>\n );\n }\n\n if (!activeOrgId) {\n return (\n <PageLayout\n title={tr(\"devportal.revenue.title\", \"Revenue\")}\n description={tr(\n \"devportal.revenue.description\",\n \"Track real revenue, sales, and payout activity for your developer organizations\",\n )}\n >\n <EmptyState\n illustration=\"empty-people\"\n icon={<Building2 size={32} className=\"text-text-secondary\" />}\n title={tr(\n \"devportal.revenue.selectOrgTitle\",\n \"Select an organization\",\n )}\n description={tr(\n \"devportal.revenue.selectOrgHint\",\n \"Use the organization switcher in the nav bar above to choose which organization's revenue to view.\",\n )}\n />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title={tr(\"devportal.revenue.title\", \"Revenue\")}\n description={tr(\n \"devportal.revenue.description\",\n \"Track real revenue, sales, and payout activity for your developer organizations\",\n )}\n >\n <EmptyState\n icon={<AlertCircle size={32} className=\"text-status-error-text\" />}\n title={tr(\n \"devportal.revenue.errorLoadData\",\n \"Unable to load revenue data\",\n )}\n description={getErrorMessage(error)}\n />\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title={tr(\"devportal.revenue.title\", \"Revenue\")}\n description={\n selectedOrganization\n ? `${tr(\"devportal.revenue.financialPerformanceFor\", \"Financial performance for\")} ${selectedOrganization.name}`\n : tr(\n \"devportal.revenue.shortDescription\",\n \"Track revenue, sales, and payouts\",\n )\n }\n purpose={tr(\n \"devportal.revenue.purpose\",\n \"Revenue tracks the money your paid apps earn — gross sales, platform fees, and what gets paid out to your organization. Link a billing account, then use this to reconcile payouts and watch growth across time ranges.\",\n )}\n actions={\n <div className=\"flex flex-wrap gap-2\">\n <select\n value={timeRange}\n onChange={(event) => setTimeRange(event.target.value as TimeRange)}\n aria-label={tr(\n \"devportal.revenue.selectRangeAria\",\n \"Select time range\",\n )}\n className=\"rounded-md border bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary scheme-normal dark:scheme-dark [&_option]:bg-bg-surface [&_option]:text-text-primary\"\n >\n <option value=\"30d\">\n {tr(\"devportal.revenue.range.30d\", \"Last 30 days\")}\n </option>\n <option value=\"90d\">\n {tr(\"devportal.revenue.range.90d\", \"Last 90 days\")}\n </option>\n <option value=\"12m\">\n {tr(\"devportal.revenue.range.12m\", \"Last 12 months\")}\n </option>\n </select>\n </div>\n }\n >\n {/* Billing account link banner for orgs not yet linked */}\n {selectedOrganization && !selectedOrganization.billingAccountId && (\n <div className=\"mb-6 rounded-card border border-border-seam bg-status-info-bg-subtle p-4 flex flex-col gap-3\">\n <div className=\"flex items-start gap-3\">\n <Link2\n size={20}\n className=\"text-accent-blue flex-shrink-0 mt-0.5\"\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-status-info-text\">\n {tr(\n \"devportal.revenue.billingNotLinkedTitle\",\n \"Link a billing account to receive store revenue\",\n )}\n </p>\n <p className=\"mt-1 text-sm text-status-info-text\">\n {tr(\n \"devportal.revenue.billingNotLinkedDesc\",\n \"Once linked, net earnings from app sales will appear in your billing credits — you can spend them on platform services or withdraw to your bank.\",\n )}\n </p>\n {linkBillingError && (\n <p className=\"mt-2 text-sm text-status-error-text\">\n {linkBillingError}\n </p>\n )}\n </div>\n <button\n type=\"button\"\n onClick={handleOpenBillingPicker}\n disabled={linkingBilling || billingAccountsLoading}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50 flex-shrink-0\"\n >\n {linkingBilling || billingAccountsLoading ? (\n <Loader2 size={14} className=\"animate-spin\" />\n ) : (\n <Link2 size={14} />\n )}\n {linkingBilling\n ? tr(\"devportal.revenue.linking\", \"Linking...\")\n : tr(\n \"devportal.revenue.linkBillingAccount\",\n \"Link Billing Account\",\n )}\n </button>\n </div>\n\n {/* No billing accounts message */}\n {showBillingPicker && existingBillingAccounts.length === 0 && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 text-sm text-text-secondary\">\n {tr(\n \"devportal.revenue.noBillingAccounts\",\n \"You don't have any billing accounts yet. Create one from your account billing settings first.\",\n )}\n </div>\n )}\n\n {/* Billing account picker — shown when user has existing accounts */}\n {showBillingPicker && existingBillingAccounts.length > 0 && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 space-y-3\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.chooseBillingAccount\",\n \"Choose a billing account to link\",\n )}\n </p>\n <div className=\"space-y-2\">\n {existingBillingAccounts.map((account) => (\n <button\n key={account.id}\n type=\"button\"\n onClick={() =>\n setSelectedBillingAccountId(account.id ?? null)\n }\n className={cn(\n \"flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors\",\n selectedBillingAccountId === account.id\n ? \"border-primary bg-action-primary-bg/5 text-text-primary\"\n : \"border-border-subtle hover:bg-accent text-text-primary\",\n )}\n >\n <Check\n size={14}\n className={cn(\n \"flex-shrink-0\",\n selectedBillingAccountId === account.id\n ? \"opacity-100 text-primary\"\n : \"opacity-0\",\n )}\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium truncate\">{account.name}</p>\n {account.isDefault && (\n <p className=\"text-xs text-text-secondary\">\n {tr(\"devportal.revenue.defaultAccount\", \"Default\")}\n </p>\n )}\n </div>\n </button>\n ))}\n </div>\n <div className=\"flex items-center justify-end gap-2 pt-1\">\n <button\n type=\"button\"\n onClick={() => {\n setShowBillingPicker(false);\n setLinkBillingError(null);\n }}\n className=\"rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors\"\n >\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"button\"\n disabled={linkingBilling || !selectedBillingAccountId}\n onClick={() => void handleLinkExisting()}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n {linkingBilling ? (\n <Loader2 size={13} className=\"animate-spin\" />\n ) : (\n <Link2 size={13} />\n )}\n {tr(\"devportal.revenue.confirm\", \"Confirm\")}\n </button>\n </div>\n </div>\n )}\n </div>\n )}\n\n {/* Linked billing account info — shown when billing is already linked */}\n {selectedOrganization?.billingAccountId && (\n <div className=\"mb-6 rounded-lg border border-border-subtle bg-bg-surface p-3 flex flex-col gap-3\">\n <div className=\"flex items-center gap-3\">\n <CreditCard\n size={16}\n className=\"text-text-secondary flex-shrink-0\"\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\">\n {linkedBillingAccount?.name ??\n tr(\"devportal.revenue.billingAccount\", \"Billing account\")}\n </p>\n <p className=\"text-xs text-text-secondary truncate\">\n {linkedBillingAccount\n ? `${linkedBillingAccount.currency}${linkedBillingAccount.email ? ` · ${linkedBillingAccount.email}` : \"\"}`\n : selectedOrganization.billingAccountId}\n </p>\n </div>\n {!showBillingPicker && (\n <button\n type=\"button\"\n onClick={handleOpenBillingPicker}\n disabled={billingAccountsLoading}\n className=\"text-xs text-text-secondary hover:text-text-primary transition-colors flex-shrink-0 disabled:opacity-50\"\n >\n {tr(\"devportal.revenue.changeBillingAccount\", \"Change\")}\n </button>\n )}\n </div>\n {/* Picker for changing the linked account */}\n {showBillingPicker && existingBillingAccounts.length > 0 && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 space-y-3\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.chooseBillingAccount\",\n \"Choose a billing account to link\",\n )}\n </p>\n <div className=\"space-y-2\">\n {existingBillingAccounts.map((account) => (\n <button\n key={account.id}\n type=\"button\"\n onClick={() =>\n setSelectedBillingAccountId(account.id ?? null)\n }\n className={cn(\n \"flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors\",\n selectedBillingAccountId === account.id\n ? \"border-primary bg-action-primary-bg/5 text-text-primary\"\n : \"border-border-subtle hover:bg-accent text-text-primary\",\n )}\n >\n <Check\n size={14}\n className={cn(\n \"flex-shrink-0\",\n selectedBillingAccountId === account.id\n ? \"opacity-100 text-primary\"\n : \"opacity-0\",\n )}\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium truncate\">{account.name}</p>\n {account.isDefault && (\n <p className=\"text-xs text-text-secondary\">\n {tr(\"devportal.revenue.defaultAccount\", \"Default\")}\n </p>\n )}\n </div>\n </button>\n ))}\n </div>\n <div className=\"flex items-center justify-end gap-2 pt-1\">\n <button\n type=\"button\"\n onClick={() => {\n setShowBillingPicker(false);\n setLinkBillingError(null);\n }}\n className=\"rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors\"\n >\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"button\"\n disabled={linkingBilling || !selectedBillingAccountId}\n onClick={() => void handleLinkExisting()}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n {linkingBilling ? (\n <Loader2 size={13} className=\"animate-spin\" />\n ) : (\n <Link2 size={13} />\n )}\n {tr(\"devportal.revenue.confirm\", \"Confirm\")}\n </button>\n </div>\n {linkBillingError && (\n <p className=\"text-xs text-status-error-text\">\n {linkBillingError}\n </p>\n )}\n </div>\n )}\n </div>\n )}\n\n {/* Request Withdrawal (BOFF-7192) — only once billing is linked; the\n actual money movement happens on billing's side. */}\n {selectedOrganization?.billingAccountId && summary && (\n <div className=\"mb-6 rounded-lg border border-border-subtle bg-bg-surface p-3 flex flex-col gap-3\">\n <div className=\"flex items-center gap-3\">\n <Banknote size={16} className=\"text-text-secondary flex-shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.withdrawTitle\",\n \"Withdraw earned credits\",\n )}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {canRequestWithdrawal\n ? `${tr(\"devportal.revenue.available\", \"Available\")}: ${formatCurrency(summary.pendingBalance, summary.currency)}`\n : `${tr(\"devportal.revenue.belowMinimum\", \"Minimum payout is\")} $${MIN_PAYOUT_THRESHOLD} — ${tr(\"devportal.revenue.youHave\", \"you have\")} ${formatCurrency(summary.pendingBalance, summary.currency)} ${tr(\"devportal.revenue.pending\", \"pending\")}.`}\n </p>\n </div>\n {!showWithdrawPanel && (\n <button\n type=\"button\"\n onClick={handleOpenWithdrawPanel}\n disabled={!canRequestWithdrawal}\n title={\n canRequestWithdrawal\n ? undefined\n : tr(\n \"devportal.revenue.belowMinimumHint\",\n `Payouts require a pending balance of at least $${MIN_PAYOUT_THRESHOLD}.`,\n )\n }\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0\"\n >\n <Send size={14} />\n {tr(\n \"devportal.revenue.requestWithdrawal\",\n \"Request Withdrawal\",\n )}\n </button>\n )}\n </div>\n\n {showWithdrawPanel && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 space-y-3\">\n {paymentMethodsLoading ? (\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <Loader2 size={14} className=\"animate-spin\" />\n {tr(\n \"devportal.revenue.loadingMethods\",\n \"Loading payout methods...\",\n )}\n </div>\n ) : showAddMethodForm ? (\n <div className=\"space-y-3\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.addPayoutMethod\",\n \"Add a payout method\",\n )}\n </p>\n <div className=\"grid grid-cols-2 gap-2\">\n <button\n type=\"button\"\n onClick={() =>\n setNewMethodType(DevPortalPaymentMethodType.BankAccount)\n }\n className={cn(\n \"rounded-md border px-3 py-2 text-sm text-left transition-colors\",\n newMethodType === DevPortalPaymentMethodType.BankAccount\n ? \"border-primary bg-action-primary-bg/5\"\n : \"border-border-subtle hover:bg-accent\",\n )}\n >\n {tr(\"devportal.revenue.bankAccount\", \"Bank Account\")}\n </button>\n <button\n type=\"button\"\n onClick={() =>\n setNewMethodType(DevPortalPaymentMethodType.Paypal)\n }\n className={cn(\n \"rounded-md border px-3 py-2 text-sm text-left transition-colors\",\n newMethodType === DevPortalPaymentMethodType.Paypal\n ? \"border-primary bg-action-primary-bg/5\"\n : \"border-border-subtle hover:bg-accent\",\n )}\n >\n {tr(\"devportal.revenue.paypal\", \"PayPal\")}\n </button>\n </div>\n\n <input\n type=\"text\"\n value={newMethodName}\n onChange={(event) => setNewMethodName(event.target.value)}\n placeholder={tr(\n \"devportal.revenue.methodNamePlaceholder\",\n 'Label (e.g. \"Primary account\")',\n )}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n\n {newMethodType === DevPortalPaymentMethodType.Paypal ? (\n <input\n type=\"email\"\n value={newMethodEmail}\n onChange={(event) =>\n setNewMethodEmail(event.target.value)\n }\n placeholder={tr(\n \"devportal.revenue.paypalEmailPlaceholder\",\n \"PayPal email\",\n )}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n ) : (\n <>\n <input\n type=\"text\"\n value={newMethodAccountNumber}\n onChange={(event) =>\n setNewMethodAccountNumber(event.target.value)\n }\n placeholder={tr(\n \"devportal.revenue.accountNumberPlaceholder\",\n \"Account number\",\n )}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n <input\n type=\"text\"\n value={newMethodRoutingNumber}\n onChange={(event) =>\n setNewMethodRoutingNumber(event.target.value)\n }\n placeholder={tr(\n \"devportal.revenue.routingNumberPlaceholder\",\n \"Routing number\",\n )}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n </>\n )}\n\n {addMethodError && (\n <p className=\"text-xs text-status-error-text\">\n {addMethodError}\n </p>\n )}\n\n <div className=\"flex items-center justify-end gap-2 pt-1\">\n <button\n type=\"button\"\n onClick={() => setShowWithdrawPanel(false)}\n className=\"rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors\"\n >\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"button\"\n disabled={\n addingMethod ||\n (newMethodType === DevPortalPaymentMethodType.Paypal\n ? !newMethodEmail\n : !newMethodAccountNumber)\n }\n onClick={() => void handleAddPaymentMethod()}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n {addingMethod ? (\n <Loader2 size={13} className=\"animate-spin\" />\n ) : (\n <Check size={13} />\n )}\n {tr(\"devportal.revenue.saveMethod\", \"Save method\")}\n </button>\n </div>\n </div>\n ) : (\n <div className=\"space-y-3\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.chooseMethod\",\n \"Choose where to send this payout\",\n )}\n </p>\n <div className=\"space-y-2\">\n {activePaymentMethods.map((method: PaymentMethod) => (\n <button\n key={method.id}\n type=\"button\"\n onClick={() => setSelectedPaymentMethodId(method.id)}\n className={cn(\n \"flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors\",\n selectedPaymentMethodId === method.id\n ? \"border-primary bg-action-primary-bg/5 text-text-primary\"\n : \"border-border-subtle hover:bg-accent text-text-primary\",\n )}\n >\n <Check\n size={14}\n className={cn(\n \"flex-shrink-0\",\n selectedPaymentMethodId === method.id\n ? \"opacity-100 text-primary\"\n : \"opacity-0\",\n )}\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium truncate\">\n {method.displayName ?? method.name}\n </p>\n {method.isDefault && (\n <p className=\"text-xs text-text-secondary\">\n {tr(\n \"devportal.revenue.defaultAccount\",\n \"Default\",\n )}\n </p>\n )}\n </div>\n </button>\n ))}\n <button\n type=\"button\"\n onClick={() => setShowAddMethodForm(true)}\n className=\"w-full rounded-md border border-dashed border-border-subtle px-3 py-2 text-sm text-text-secondary hover:bg-accent transition-colors\"\n >\n +{\" \"}\n {tr(\n \"devportal.revenue.addAnotherMethod\",\n \"Add a different method\",\n )}\n </button>\n </div>\n\n {withdrawError && (\n <p className=\"text-xs text-status-error-text\">\n {withdrawError}\n </p>\n )}\n\n <div className=\"flex items-center justify-end gap-2 pt-1\">\n <button\n type=\"button\"\n onClick={() => setShowWithdrawPanel(false)}\n className=\"rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors\"\n >\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"button\"\n disabled={requestingWithdraw || !selectedPaymentMethodId}\n onClick={() => void handleRequestWithdrawal()}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n {requestingWithdraw ? (\n <Loader2 size={13} className=\"animate-spin\" />\n ) : (\n <Send size={13} />\n )}\n {tr(\"devportal.revenue.confirmWithdrawal\", \"Request\")}{\" \"}\n {formatCurrency(summary.pendingBalance, summary.currency)}\n </button>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n )}\n\n {loading && !summary ? (\n <div className=\"flex items-center justify-center py-16 text-text-secondary\">\n <Loader2 className=\"h-8 w-8 animate-spin\" />\n </div>\n ) : summary ? (\n <>\n <EmphasisPanel className=\"mb-6\">\n <StatCardGrid columns={4}>\n <StatCard\n title={tr(\"devportal.revenue.grossRevenue\", \"Gross Revenue\")}\n value={formatCurrency(\n summary.totalGrossRevenue,\n summary.currency,\n )}\n icon={<DollarSign size={20} />}\n />\n <StatCard\n title={tr(\"devportal.revenue.netRevenue\", \"Net Revenue\")}\n value={formatCurrency(\n summary.totalNetRevenue,\n summary.currency,\n )}\n icon={<Wallet size={20} />}\n />\n <StatCard\n title={tr(\n \"devportal.revenue.pendingBalance\",\n \"Pending Balance\",\n )}\n value={formatCurrency(summary.pendingBalance, summary.currency)}\n icon={<CreditCard size={20} />}\n description={\n summary.nextPayoutDate\n ? `${tr(\"devportal.revenue.nextPayout\", \"Next payout\")} ${new Date(summary.nextPayoutDate).toLocaleDateString()}`\n : tr(\n \"devportal.revenue.noPayoutScheduled\",\n \"No payout scheduled\",\n )\n }\n />\n <StatCard\n title={tr(\"devportal.revenue.platformFees\", \"Platform Fees\")}\n value={formatCurrency(\n summary.totalPlatformFees,\n summary.currency,\n )}\n icon={<ArrowDownToLine size={20} />}\n description={`${summary.totalRefundsCount} ${tr(\"devportal.revenue.refunds\", \"refunds\")}`}\n />\n </StatCardGrid>\n </EmphasisPanel>\n\n <div className=\"grid gap-6 xl:grid-cols-2\">\n <PageSection\n title={tr(\"devportal.revenue.revenueTrend\", \"Revenue trend\")}\n >\n <GlassCard treatment=\"insight\" className=\"p-4\">\n {chartData.length > 0 ? (\n <ResponsiveContainer width=\"100%\" height={300}>\n <LineChart data={chartData}>\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-chart-grid)\"\n />\n <XAxis\n dataKey=\"date\"\n stroke=\"var(--color-chart-axis)\"\n fontSize={12}\n />\n <YAxis stroke=\"var(--color-chart-axis)\" fontSize={12} />\n <Tooltip\n contentStyle={{\n backgroundColor: \"var(--color-card)\",\n border: \"1px solid var(--color-border-default)\",\n borderRadius: 12,\n }}\n />\n <Line\n type=\"monotone\"\n dataKey=\"grossRevenue\"\n stroke={chartColors.primary}\n strokeWidth={2}\n dot={false}\n />\n <Line\n type=\"monotone\"\n dataKey=\"netRevenue\"\n stroke={chartColors.secondary}\n strokeWidth={2}\n dot={false}\n />\n </LineChart>\n </ResponsiveContainer>\n ) : (\n <div className=\"flex h-[300px] flex-col items-center justify-center gap-2 text-text-secondary\">\n <p className=\"text-sm font-medium\">\n {tr(\"devportal.revenue.noTrendData\", \"No trend data yet\")}\n </p>\n <p className=\"text-xs text-text-tertiary\">\n {tr(\n \"devportal.revenue.noTrendDataHint\",\n \"Revenue trend appears once daily analytics have been aggregated.\",\n )}\n </p>\n </div>\n )}\n </GlassCard>\n </PageSection>\n\n <PageSection\n title={tr(\n \"devportal.revenue.topApps\",\n \"Top applications by revenue\",\n )}\n >\n {summary.topApps.length > 0 ? (\n <div className=\"space-y-2\">\n {summary.topApps.map(\n (\n application: GetRevenueDashboardDataQuery[\"developerOrgRevenueSummary\"][\"topApps\"][number],\n ) => (\n <GlassCard\n key={application.applicationId}\n treatment=\"insight\"\n className=\"border-border-seam p-4\"\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <p className=\"font-medium\">\n {application.applicationName}\n </p>\n <p className=\"text-sm text-text-secondary\">\n {application.salesCount}{\" \"}\n {tr(\"devportal.revenue.sales\", \"sales\")}\n </p>\n </div>\n <div className=\"text-right\">\n <p className=\"font-semibold\">\n {formatCurrency(\n application.grossRevenue,\n application.currency,\n )}\n </p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\"devportal.revenue.net\", \"Net\")}{\" \"}\n {formatCurrency(\n application.netRevenue,\n application.currency,\n )}\n </p>\n </div>\n </div>\n </GlassCard>\n ),\n )}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Building2 size={24} />}\n title={tr(\n \"devportal.revenue.noLeadersTitle\",\n \"No revenue leaders yet\",\n )}\n description={tr(\n \"devportal.revenue.noLeadersDescription\",\n \"Top-performing applications will appear here once revenue is recorded.\",\n )}\n />\n )}\n </PageSection>\n </div>\n\n <PageSection\n title={tr(\"devportal.revenue.salesVolume\", \"Sales volume\")}\n >\n <GlassCard treatment=\"insight\" className=\"p-4\">\n {chartData.length > 0 ? (\n <ResponsiveContainer width=\"100%\" height={280}>\n <BarChart data={chartData}>\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-chart-grid)\"\n />\n <XAxis\n dataKey=\"date\"\n stroke=\"var(--color-chart-axis)\"\n fontSize={12}\n />\n <YAxis stroke=\"var(--color-chart-axis)\" fontSize={12} />\n <Tooltip\n contentStyle={{\n backgroundColor: \"var(--color-card)\",\n border: \"1px solid var(--color-border-default)\",\n borderRadius: 12,\n }}\n />\n <Bar\n dataKey=\"salesCount\"\n fill={chartColors.tertiary}\n radius={[6, 6, 0, 0]}\n />\n </BarChart>\n </ResponsiveContainer>\n ) : (\n <div className=\"flex h-[280px] flex-col items-center justify-center gap-2 text-text-secondary\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.noVolumeData\",\n \"No sales volume data yet\",\n )}\n </p>\n <p className=\"text-xs text-text-tertiary\">\n {tr(\n \"devportal.revenue.noVolumeDataHint\",\n \"Sales volume by period appears once analytics have been aggregated.\",\n )}\n </p>\n </div>\n )}\n </GlassCard>\n </PageSection>\n\n <div className=\"grid gap-6 xl:grid-cols-2\">\n <PageSection\n title={tr(\"devportal.revenue.recentSales\", \"Recent sales\")}\n >\n <DataTable\n data={sales}\n keyField=\"id\"\n columns={[\n {\n key: \"application\",\n header: tr(\"devportal.revenue.application\", \"Application\"),\n render: (sale) =>\n sale.application?.name ||\n sale.planName ||\n tr(\"devportal.common.unknown\", \"Unknown\"),\n },\n {\n key: \"grossAmount\",\n header: tr(\"devportal.revenue.gross\", \"Gross\"),\n render: (sale) =>\n formatCurrency(sale.grossAmount, sale.currency),\n },\n {\n key: \"netAmount\",\n header: tr(\"devportal.revenue.net\", \"Net\"),\n render: (sale) =>\n formatCurrency(sale.netAmount, sale.currency),\n },\n {\n key: \"status\",\n header: tr(\"devportal.revenue.status\", \"Status\"),\n render: (sale) => (\n <StatusBadge status={sale.status} type=\"app\" />\n ),\n },\n ]}\n />\n </PageSection>\n\n <PageSection\n title={tr(\"devportal.revenue.payoutHistory\", \"Payout history\")}\n >\n <DataTable\n data={payouts}\n keyField=\"id\"\n columns={[\n {\n key: \"periodLabel\",\n header: tr(\"devportal.revenue.period\", \"Period\"),\n render: (payout) => payout.periodLabel,\n },\n {\n key: \"netAmount\",\n header: tr(\"devportal.revenue.netPayout\", \"Net payout\"),\n render: (payout) =>\n formatCurrency(payout.netAmount, payout.currency),\n },\n {\n key: \"status\",\n header: tr(\"devportal.revenue.status\", \"Status\"),\n render: (payout) => (\n <StatusBadge status={payout.status} type=\"app\" />\n ),\n },\n ]}\n />\n </PageSection>\n </div>\n </>\n ) : (\n <EmptyState\n illustration=\"empty-data\"\n icon={<DollarSign size={32} />}\n title={tr(\"devportal.revenue.noDataTitle\", \"No revenue data yet\")}\n description={tr(\n \"devportal.revenue.noDataDescription\",\n \"Revenue metrics will appear after this organization starts recording marketplace sales.\",\n )}\n />\n )}\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RevenueDashboardPage.js","names":["EmptyState","_Fragment","EmptyState$1","MIN_PAYOUT_THRESHOLD","chartColors","daysByRange","RevenueDashboardPage","tr","useTr","activeDigitalOrgId","useDevportal","activeOrgId","useIsSellerSection","activePhysicalOrgId","timeRange","setTimeRange","useState","linkingBilling","setLinkingBilling","linkBillingError","setLinkBillingError","linkBillingAccount","useLinkDevOrgBillingAccountMutation","showBillingPicker","setShowBillingPicker","selectedBillingAccountId","setSelectedBillingAccountId","searchParams","useSearchParams","now","useMemo","showWithdrawPanel","setShowWithdrawPanel","withdrawError","setWithdrawError","selectedPaymentMethodId","setSelectedPaymentMethodId","showAddMethodForm","setShowAddMethodForm","newMethodType","setNewMethodType","DevPortalPaymentMethodType","newMethodName","setNewMethodName","newMethodAccountNumber","setNewMethodAccountNumber","newMethodRoutingNumber","setNewMethodRoutingNumber","newMethodEmail","setNewMethodEmail","addMethodError","setAddMethodError","paymentMethodsData","paymentMethodsLoading","useGetPaymentMethodsQuery","addPaymentMethod","addingMethod","useAddPaymentMethodMutation","requestPayout","requestingWithdraw","useRequestPayoutMutation","billingAccountsData","billingAccountsLoading","useGetBillingAccountsByOrgQuery","tenantId","startDate","nextDate","organizationsData","organizationsLoading","organizationsError","useGetMyOrganizationsQuery","useGetRevenueDashboardDataQuery","selectedOrganization","organization","existingBillingAccounts","linkedBillingAccount","a","handleOpenBillingPicker","handleLinkExisting","err","activePaymentMethods","method","handleOpenWithdrawPanel","defaultMethod","handleAddPaymentMethod","isPaypal","accountDetails","created","handleRequestWithdrawal","summary","data","canRequestWithdrawal","analytics","left","right","sales","edge","payouts","chartData","entry","PageLayout","Loader2","AlertCircle","getErrorMessage","error","event","Link2","account","cn","Check","CreditCard","Banknote","formatCurrency","Send","Fragment","loading","EmphasisPanel","StatCardGrid","StatCard","DollarSign","Wallet","ArrowDownToLine","PageSection","GlassCard","ResponsiveContainer","LineChart","CartesianGrid","XAxis","YAxis","Tooltip","Line","application","Building2","BarChart","Bar","DataTable","sale","StatusBadge","payout"],"sources":["../../../src/devportal/pages/RevenueDashboardPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useMemo, useState } from \"react\";\nimport { useSearchParams } from \"react-router\";\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Line,\n LineChart,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport {\n AlertCircle,\n ArrowDownToLine,\n Banknote,\n Building2,\n Check,\n CreditCard,\n DollarSign,\n Link2,\n Loader2,\n Send,\n Wallet,\n} from \"lucide-react\";\nimport { EmphasisPanel, GlassCard } from \"@burdenoff/fe-libs/ui\";\nimport { useDevportal } from \"../providers/DevportalProvider\";\nimport { useIsSellerSection } from \"../hooks/useIsSellerSection\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { DataTable } from \"../components/DataTable\";\nimport { EmptyState } from \"../components/EmptyState\";\nimport { StatCard, StatCardGrid } from \"../components/StatCard\";\nimport { StatusBadge } from \"../components/StatusBadge\";\nimport type { DeveloperOrganization } from \"../types\";\nimport { DevPortalPaymentMethodType } from \"../../generated/global-types\";\nimport {\n type GetMyOrganizationsQuery,\n type GetPaymentMethodsQuery,\n type GetRevenueDashboardDataQuery,\n getErrorMessage,\n useAddPaymentMethodMutation,\n useGetBillingAccountsByOrgQuery,\n useGetMyOrganizationsQuery,\n useGetPaymentMethodsQuery,\n useGetRevenueDashboardDataQuery,\n useLinkDevOrgBillingAccountMutation,\n useRequestPayoutMutation,\n} from \"../hooks\";\nimport { cn } from \"../utils/cn\";\nimport { formatCurrency } from \"../utils/currency\";\nimport { useTr } from \"../utils/i18n\";\n\n// Real business rule (devportal's createDeveloperOrgPayoutRequest resolver,\n// sales.ts) — kept in sync here so the button can be disabled with a clear\n// reason up front instead of letting the request round-trip and fail.\nconst MIN_PAYOUT_THRESHOLD = 100;\n\ntype TimeRange = \"30d\" | \"90d\" | \"12m\";\n\nconst chartColors = {\n primary: \"var(--color-chart-1)\",\n secondary: \"var(--color-chart-2)\",\n tertiary: \"var(--color-chart-4)\",\n};\n\ntype RevenueSale =\n GetRevenueDashboardDataQuery[\"developerOrgSales\"][\"edges\"][number][\"node\"];\ntype RevenuePayout =\n GetRevenueDashboardDataQuery[\"developerOrgPayouts\"][\"edges\"][number][\"node\"];\n\nconst daysByRange: Record<TimeRange, number> = {\n \"30d\": 30,\n \"90d\": 90,\n \"12m\": 365,\n};\n\nexport const RevenueDashboardPage: FC = () => {\n const tr = useTr();\n const {\n activeOrgId: activeDigitalOrgId,\n activePhysicalOrgId,\n tenantId,\n } = useDevportal();\n const isSeller = useIsSellerSection();\n // Shared page for both kinds — reads whichever active-org slot matches the\n // section it's reached from (seller portal vs regular devportal). Every\n // existing `activeOrgId` reference below keeps working unchanged. See\n // DeveloperOrgKind (BOFF-7285).\n const activeOrgId = isSeller ? activePhysicalOrgId : activeDigitalOrgId;\n const [timeRange, setTimeRange] = useState<TimeRange>(\"90d\");\n const [linkingBilling, setLinkingBilling] = useState(false);\n const [linkBillingError, setLinkBillingError] = useState<string | null>(null);\n\n const [linkBillingAccount] = useLinkDevOrgBillingAccountMutation();\n const [showBillingPicker, setShowBillingPicker] = useState(false);\n const [selectedBillingAccountId, setSelectedBillingAccountId] = useState<\n string | null\n >(null);\n const [searchParams] = useSearchParams();\n const now = useMemo(() => new Date(), []);\n\n // Request Withdrawal (BOFF-7192) — the actual withdrawal executes on\n // billing's side (requestPayout mirrors a canonical PayoutRequest there);\n // this panel only starts that request and, if needed, collects a payout\n // method first.\n const [showWithdrawPanel, setShowWithdrawPanel] = useState(false);\n const [withdrawError, setWithdrawError] = useState<string | null>(null);\n const [selectedPaymentMethodId, setSelectedPaymentMethodId] = useState<\n string | null\n >(null);\n const [showAddMethodForm, setShowAddMethodForm] = useState(false);\n const [newMethodType, setNewMethodType] =\n useState<DevPortalPaymentMethodType>(\n DevPortalPaymentMethodType.BankAccount,\n );\n const [newMethodName, setNewMethodName] = useState(\"\");\n const [newMethodAccountNumber, setNewMethodAccountNumber] = useState(\"\");\n const [newMethodRoutingNumber, setNewMethodRoutingNumber] = useState(\"\");\n const [newMethodEmail, setNewMethodEmail] = useState(\"\");\n const [addMethodError, setAddMethodError] = useState<string | null>(null);\n\n const { data: paymentMethodsData, loading: paymentMethodsLoading } =\n useGetPaymentMethodsQuery({\n variables: { organizationId: activeOrgId ?? \"\" },\n skip: !activeOrgId,\n fetchPolicy: \"cache-and-network\",\n });\n const [addPaymentMethod, { loading: addingMethod }] =\n useAddPaymentMethodMutation();\n const [requestPayout, { loading: requestingWithdraw }] =\n useRequestPayoutMutation();\n\n const { data: billingAccountsData, loading: billingAccountsLoading } =\n useGetBillingAccountsByOrgQuery({\n fetchPolicy: \"cache-and-network\",\n context: { headers: { \"x-org-id\": tenantId ?? \"\" } },\n });\n // searchParams kept for deep-link compatibility (URL ?org= still works via OrgSwitcher auto-select)\n void searchParams;\n const startDate = useMemo(() => {\n const nextDate = new Date(now);\n nextDate.setDate(nextDate.getDate() - daysByRange[timeRange]);\n return nextDate.toISOString();\n }, [now, timeRange]);\n\n const {\n data: organizationsData,\n loading: organizationsLoading,\n error: organizationsError,\n } = useGetMyOrganizationsQuery({\n fetchPolicy: \"cache-and-network\",\n });\n const { data, loading, error } = useGetRevenueDashboardDataQuery({\n variables: {\n organizationId: activeOrgId ?? \"\",\n period: \"monthly\",\n startDate,\n endDate: now.toISOString(),\n salesLimit: 10,\n salesOffset: 0,\n payoutsLimit: 10,\n payoutsOffset: 0,\n },\n skip: !activeOrgId,\n fetchPolicy: \"cache-and-network\",\n });\n\n const organizations: DeveloperOrganization[] = useMemo(\n () =>\n organizationsData?.myDeveloperOrganizations?.map(\n (\n organization: GetMyOrganizationsQuery[\"myDeveloperOrganizations\"][number],\n ) => organization as unknown as DeveloperOrganization,\n ) ?? [],\n [organizationsData?.myDeveloperOrganizations],\n );\n\n const selectedOrganization = organizations.find(\n (organization) => organization.id === activeOrgId,\n );\n\n type BillingAccount = NonNullable<\n typeof billingAccountsData\n >[\"getBillingAccountsByOrg\"][number];\n const existingBillingAccounts: BillingAccount[] =\n billingAccountsData?.getBillingAccountsByOrg ?? [];\n\n const linkedBillingAccount =\n existingBillingAccounts.find(\n (a) => a.id === selectedOrganization?.billingAccountId,\n ) ?? null;\n\n const handleOpenBillingPicker = () => {\n // Pre-select the currently linked account; fall back to default or first\n setSelectedBillingAccountId(\n selectedOrganization?.billingAccountId ??\n existingBillingAccounts.find((a) => a.isDefault)?.id ??\n existingBillingAccounts[0]?.id ??\n null,\n );\n setShowBillingPicker(true);\n };\n\n const handleLinkExisting = async () => {\n if (!activeOrgId || !selectedBillingAccountId) return;\n setLinkingBilling(true);\n setLinkBillingError(null);\n try {\n await linkBillingAccount({\n variables: {\n organizationId: activeOrgId,\n billingAccountId: selectedBillingAccountId,\n },\n refetchQueries: [\"GetMyOrganizations\"],\n });\n setShowBillingPicker(false);\n } catch (err) {\n setLinkBillingError(\n err instanceof Error ? err.message : \"Failed to link billing account\",\n );\n } finally {\n setLinkingBilling(false);\n }\n };\n\n type PaymentMethod =\n GetPaymentMethodsQuery[\"developerOrgPaymentMethods\"][number];\n const paymentMethods: PaymentMethod[] =\n paymentMethodsData?.developerOrgPaymentMethods ?? [];\n const activePaymentMethods = paymentMethods.filter(\n (method: PaymentMethod) => method.isActive,\n );\n\n const handleOpenWithdrawPanel = () => {\n const defaultMethod =\n activePaymentMethods.find((method: PaymentMethod) => method.isDefault) ??\n activePaymentMethods[0];\n setSelectedPaymentMethodId(defaultMethod?.id ?? null);\n setShowAddMethodForm(activePaymentMethods.length === 0);\n setAddMethodError(null);\n setWithdrawError(null);\n setShowWithdrawPanel(true);\n };\n\n const handleAddPaymentMethod = async () => {\n if (!activeOrgId) return;\n setAddMethodError(null);\n const isPaypal = newMethodType === DevPortalPaymentMethodType.Paypal;\n const accountDetails = isPaypal\n ? { email: newMethodEmail }\n : {\n accountNumber: newMethodAccountNumber,\n routingNumber: newMethodRoutingNumber,\n };\n try {\n const result = await addPaymentMethod({\n variables: {\n organizationId: activeOrgId,\n input: {\n type: newMethodType,\n name: newMethodName || (isPaypal ? \"PayPal\" : \"Bank Account\"),\n accountDetails,\n isDefault: activePaymentMethods.length === 0,\n },\n },\n refetchQueries: [\"GetPaymentMethods\"],\n });\n const created = result.data?.addDeveloperOrgPaymentMethod;\n if (created) {\n setSelectedPaymentMethodId(created.id);\n }\n setShowAddMethodForm(false);\n setNewMethodName(\"\");\n setNewMethodAccountNumber(\"\");\n setNewMethodRoutingNumber(\"\");\n setNewMethodEmail(\"\");\n } catch (err) {\n setAddMethodError(\n err instanceof Error ? err.message : \"Failed to add payout method\",\n );\n }\n };\n\n const handleRequestWithdrawal = async () => {\n if (!activeOrgId || !selectedPaymentMethodId) return;\n setWithdrawError(null);\n try {\n await requestPayout({\n variables: {\n organizationId: activeOrgId,\n paymentMethodId: selectedPaymentMethodId,\n },\n refetchQueries: [\"GetRevenueDashboardData\"],\n });\n setShowWithdrawPanel(false);\n } catch (err) {\n setWithdrawError(\n err instanceof Error ? err.message : \"Failed to request withdrawal\",\n );\n }\n };\n\n const summary = data?.developerOrgRevenueSummary;\n const canRequestWithdrawal =\n (summary?.pendingBalance ?? 0) >= MIN_PAYOUT_THRESHOLD;\n const analytics = [...(data?.developerOrgRevenueAnalytics ?? [])].sort(\n (left, right) =>\n new Date(left.date).getTime() - new Date(right.date).getTime(),\n );\n const sales: RevenueSale[] =\n data?.developerOrgSales?.edges?.map(\n (\n edge: GetRevenueDashboardDataQuery[\"developerOrgSales\"][\"edges\"][number],\n ) => edge.node,\n ) ?? [];\n const payouts: RevenuePayout[] =\n data?.developerOrgPayouts?.edges?.map(\n (\n edge: GetRevenueDashboardDataQuery[\"developerOrgPayouts\"][\"edges\"][number],\n ) => edge.node,\n ) ?? [];\n\n const chartData = analytics.map((entry) => ({\n date: new Date(entry.date).toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n }),\n grossRevenue: entry.grossRevenue,\n netRevenue: entry.netRevenue,\n platformFees: entry.platformFees,\n refunds: entry.refunds,\n salesCount: entry.salesCount,\n }));\n\n if (organizationsLoading && !organizationsData) {\n return (\n <PageLayout\n title={tr(\"devportal.revenue.title\", \"Revenue\")}\n description={tr(\n \"devportal.revenue.description\",\n \"Track real revenue, sales, and payout activity for your developer organizations\",\n )}\n >\n <div className=\"flex items-center justify-center py-16 text-text-secondary\">\n <Loader2 className=\"h-8 w-8 animate-spin\" />\n </div>\n </PageLayout>\n );\n }\n\n if (organizationsError) {\n return (\n <PageLayout\n title={tr(\"devportal.revenue.title\", \"Revenue\")}\n description={tr(\n \"devportal.revenue.description\",\n \"Track real revenue, sales, and payout activity for your developer organizations\",\n )}\n >\n <EmptyState\n icon={<AlertCircle size={32} className=\"text-status-error-text\" />}\n title={tr(\n \"devportal.revenue.errorLoadOrgs\",\n \"Unable to load organizations\",\n )}\n description={getErrorMessage(organizationsError)}\n />\n </PageLayout>\n );\n }\n\n if (!activeOrgId) {\n return (\n <PageLayout\n title={tr(\"devportal.revenue.title\", \"Revenue\")}\n description={tr(\n \"devportal.revenue.description\",\n \"Track real revenue, sales, and payout activity for your developer organizations\",\n )}\n >\n <EmptyState\n illustration=\"empty-people\"\n icon={<Building2 size={32} className=\"text-text-secondary\" />}\n title={tr(\n \"devportal.revenue.selectOrgTitle\",\n \"Select an organization\",\n )}\n description={tr(\n \"devportal.revenue.selectOrgHint\",\n \"Use the organization switcher in the nav bar above to choose which organization's revenue to view.\",\n )}\n />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title={tr(\"devportal.revenue.title\", \"Revenue\")}\n description={tr(\n \"devportal.revenue.description\",\n \"Track real revenue, sales, and payout activity for your developer organizations\",\n )}\n >\n <EmptyState\n icon={<AlertCircle size={32} className=\"text-status-error-text\" />}\n title={tr(\n \"devportal.revenue.errorLoadData\",\n \"Unable to load revenue data\",\n )}\n description={getErrorMessage(error)}\n />\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title={tr(\"devportal.revenue.title\", \"Revenue\")}\n description={\n selectedOrganization\n ? `${tr(\"devportal.revenue.financialPerformanceFor\", \"Financial performance for\")} ${selectedOrganization.name}`\n : tr(\n \"devportal.revenue.shortDescription\",\n \"Track revenue, sales, and payouts\",\n )\n }\n purpose={tr(\n \"devportal.revenue.purpose\",\n \"Revenue tracks the money your paid apps earn — gross sales, platform fees, and what gets paid out to your organization. Link a billing account, then use this to reconcile payouts and watch growth across time ranges.\",\n )}\n actions={\n <div className=\"flex flex-wrap gap-2\">\n <select\n value={timeRange}\n onChange={(event) => setTimeRange(event.target.value as TimeRange)}\n aria-label={tr(\n \"devportal.revenue.selectRangeAria\",\n \"Select time range\",\n )}\n className=\"rounded-md border bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary scheme-normal dark:scheme-dark [&_option]:bg-bg-surface [&_option]:text-text-primary\"\n >\n <option value=\"30d\">\n {tr(\"devportal.revenue.range.30d\", \"Last 30 days\")}\n </option>\n <option value=\"90d\">\n {tr(\"devportal.revenue.range.90d\", \"Last 90 days\")}\n </option>\n <option value=\"12m\">\n {tr(\"devportal.revenue.range.12m\", \"Last 12 months\")}\n </option>\n </select>\n </div>\n }\n >\n {/* Billing account link banner for orgs not yet linked */}\n {selectedOrganization && !selectedOrganization.billingAccountId && (\n <div className=\"mb-6 rounded-card border border-border-seam bg-status-info-bg-subtle p-4 flex flex-col gap-3\">\n <div className=\"flex items-start gap-3\">\n <Link2\n size={20}\n className=\"text-accent-blue flex-shrink-0 mt-0.5\"\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-status-info-text\">\n {tr(\n \"devportal.revenue.billingNotLinkedTitle\",\n \"Link a billing account to receive store revenue\",\n )}\n </p>\n <p className=\"mt-1 text-sm text-status-info-text\">\n {tr(\n \"devportal.revenue.billingNotLinkedDesc\",\n \"Once linked, net earnings from app sales will appear in your billing credits — you can spend them on platform services or withdraw to your bank.\",\n )}\n </p>\n {linkBillingError && (\n <p className=\"mt-2 text-sm text-status-error-text\">\n {linkBillingError}\n </p>\n )}\n </div>\n <button\n type=\"button\"\n onClick={handleOpenBillingPicker}\n disabled={linkingBilling || billingAccountsLoading}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50 flex-shrink-0\"\n >\n {linkingBilling || billingAccountsLoading ? (\n <Loader2 size={14} className=\"animate-spin\" />\n ) : (\n <Link2 size={14} />\n )}\n {linkingBilling\n ? tr(\"devportal.revenue.linking\", \"Linking...\")\n : tr(\n \"devportal.revenue.linkBillingAccount\",\n \"Link Billing Account\",\n )}\n </button>\n </div>\n\n {/* No billing accounts message */}\n {showBillingPicker && existingBillingAccounts.length === 0 && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 text-sm text-text-secondary\">\n {tr(\n \"devportal.revenue.noBillingAccounts\",\n \"You don't have any billing accounts yet. Create one from your account billing settings first.\",\n )}\n </div>\n )}\n\n {/* Billing account picker — shown when user has existing accounts */}\n {showBillingPicker && existingBillingAccounts.length > 0 && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 space-y-3\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.chooseBillingAccount\",\n \"Choose a billing account to link\",\n )}\n </p>\n <div className=\"space-y-2\">\n {existingBillingAccounts.map((account) => (\n <button\n key={account.id}\n type=\"button\"\n onClick={() =>\n setSelectedBillingAccountId(account.id ?? null)\n }\n className={cn(\n \"flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors\",\n selectedBillingAccountId === account.id\n ? \"border-primary bg-action-primary-bg/5 text-text-primary\"\n : \"border-border-subtle hover:bg-accent text-text-primary\",\n )}\n >\n <Check\n size={14}\n className={cn(\n \"flex-shrink-0\",\n selectedBillingAccountId === account.id\n ? \"opacity-100 text-primary\"\n : \"opacity-0\",\n )}\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium truncate\">{account.name}</p>\n {account.isDefault && (\n <p className=\"text-xs text-text-secondary\">\n {tr(\"devportal.revenue.defaultAccount\", \"Default\")}\n </p>\n )}\n </div>\n </button>\n ))}\n </div>\n <div className=\"flex items-center justify-end gap-2 pt-1\">\n <button\n type=\"button\"\n onClick={() => {\n setShowBillingPicker(false);\n setLinkBillingError(null);\n }}\n className=\"rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors\"\n >\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"button\"\n disabled={linkingBilling || !selectedBillingAccountId}\n onClick={() => void handleLinkExisting()}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n {linkingBilling ? (\n <Loader2 size={13} className=\"animate-spin\" />\n ) : (\n <Link2 size={13} />\n )}\n {tr(\"devportal.revenue.confirm\", \"Confirm\")}\n </button>\n </div>\n </div>\n )}\n </div>\n )}\n\n {/* Linked billing account info — shown when billing is already linked */}\n {selectedOrganization?.billingAccountId && (\n <div className=\"mb-6 rounded-lg border border-border-subtle bg-bg-surface p-3 flex flex-col gap-3\">\n <div className=\"flex items-center gap-3\">\n <CreditCard\n size={16}\n className=\"text-text-secondary flex-shrink-0\"\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\">\n {linkedBillingAccount?.name ??\n tr(\"devportal.revenue.billingAccount\", \"Billing account\")}\n </p>\n <p className=\"text-xs text-text-secondary truncate\">\n {linkedBillingAccount\n ? `${linkedBillingAccount.currency}${linkedBillingAccount.email ? ` · ${linkedBillingAccount.email}` : \"\"}`\n : selectedOrganization.billingAccountId}\n </p>\n </div>\n {!showBillingPicker && (\n <button\n type=\"button\"\n onClick={handleOpenBillingPicker}\n disabled={billingAccountsLoading}\n className=\"text-xs text-text-secondary hover:text-text-primary transition-colors flex-shrink-0 disabled:opacity-50\"\n >\n {tr(\"devportal.revenue.changeBillingAccount\", \"Change\")}\n </button>\n )}\n </div>\n {/* Picker for changing the linked account */}\n {showBillingPicker && existingBillingAccounts.length > 0 && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 space-y-3\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.chooseBillingAccount\",\n \"Choose a billing account to link\",\n )}\n </p>\n <div className=\"space-y-2\">\n {existingBillingAccounts.map((account) => (\n <button\n key={account.id}\n type=\"button\"\n onClick={() =>\n setSelectedBillingAccountId(account.id ?? null)\n }\n className={cn(\n \"flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors\",\n selectedBillingAccountId === account.id\n ? \"border-primary bg-action-primary-bg/5 text-text-primary\"\n : \"border-border-subtle hover:bg-accent text-text-primary\",\n )}\n >\n <Check\n size={14}\n className={cn(\n \"flex-shrink-0\",\n selectedBillingAccountId === account.id\n ? \"opacity-100 text-primary\"\n : \"opacity-0\",\n )}\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium truncate\">{account.name}</p>\n {account.isDefault && (\n <p className=\"text-xs text-text-secondary\">\n {tr(\"devportal.revenue.defaultAccount\", \"Default\")}\n </p>\n )}\n </div>\n </button>\n ))}\n </div>\n <div className=\"flex items-center justify-end gap-2 pt-1\">\n <button\n type=\"button\"\n onClick={() => {\n setShowBillingPicker(false);\n setLinkBillingError(null);\n }}\n className=\"rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors\"\n >\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"button\"\n disabled={linkingBilling || !selectedBillingAccountId}\n onClick={() => void handleLinkExisting()}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n {linkingBilling ? (\n <Loader2 size={13} className=\"animate-spin\" />\n ) : (\n <Link2 size={13} />\n )}\n {tr(\"devportal.revenue.confirm\", \"Confirm\")}\n </button>\n </div>\n {linkBillingError && (\n <p className=\"text-xs text-status-error-text\">\n {linkBillingError}\n </p>\n )}\n </div>\n )}\n </div>\n )}\n\n {/* Request Withdrawal (BOFF-7192) — only once billing is linked; the\n actual money movement happens on billing's side. */}\n {selectedOrganization?.billingAccountId && summary && (\n <div className=\"mb-6 rounded-lg border border-border-subtle bg-bg-surface p-3 flex flex-col gap-3\">\n <div className=\"flex items-center gap-3\">\n <Banknote size={16} className=\"text-text-secondary flex-shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.withdrawTitle\",\n \"Withdraw earned credits\",\n )}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {canRequestWithdrawal\n ? `${tr(\"devportal.revenue.available\", \"Available\")}: ${formatCurrency(summary.pendingBalance, summary.currency)}`\n : `${tr(\"devportal.revenue.belowMinimum\", \"Minimum payout is\")} $${MIN_PAYOUT_THRESHOLD} — ${tr(\"devportal.revenue.youHave\", \"you have\")} ${formatCurrency(summary.pendingBalance, summary.currency)} ${tr(\"devportal.revenue.pending\", \"pending\")}.`}\n </p>\n </div>\n {!showWithdrawPanel && (\n <button\n type=\"button\"\n onClick={handleOpenWithdrawPanel}\n disabled={!canRequestWithdrawal}\n title={\n canRequestWithdrawal\n ? undefined\n : tr(\n \"devportal.revenue.belowMinimumHint\",\n `Payouts require a pending balance of at least $${MIN_PAYOUT_THRESHOLD}.`,\n )\n }\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0\"\n >\n <Send size={14} />\n {tr(\n \"devportal.revenue.requestWithdrawal\",\n \"Request Withdrawal\",\n )}\n </button>\n )}\n </div>\n\n {showWithdrawPanel && (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 ml-8 space-y-3\">\n {paymentMethodsLoading ? (\n <div className=\"flex items-center gap-2 text-sm text-text-secondary\">\n <Loader2 size={14} className=\"animate-spin\" />\n {tr(\n \"devportal.revenue.loadingMethods\",\n \"Loading payout methods...\",\n )}\n </div>\n ) : showAddMethodForm ? (\n <div className=\"space-y-3\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.addPayoutMethod\",\n \"Add a payout method\",\n )}\n </p>\n <div className=\"grid grid-cols-2 gap-2\">\n <button\n type=\"button\"\n onClick={() =>\n setNewMethodType(DevPortalPaymentMethodType.BankAccount)\n }\n className={cn(\n \"rounded-md border px-3 py-2 text-sm text-left transition-colors\",\n newMethodType === DevPortalPaymentMethodType.BankAccount\n ? \"border-primary bg-action-primary-bg/5\"\n : \"border-border-subtle hover:bg-accent\",\n )}\n >\n {tr(\"devportal.revenue.bankAccount\", \"Bank Account\")}\n </button>\n <button\n type=\"button\"\n onClick={() =>\n setNewMethodType(DevPortalPaymentMethodType.Paypal)\n }\n className={cn(\n \"rounded-md border px-3 py-2 text-sm text-left transition-colors\",\n newMethodType === DevPortalPaymentMethodType.Paypal\n ? \"border-primary bg-action-primary-bg/5\"\n : \"border-border-subtle hover:bg-accent\",\n )}\n >\n {tr(\"devportal.revenue.paypal\", \"PayPal\")}\n </button>\n </div>\n\n <input\n type=\"text\"\n value={newMethodName}\n onChange={(event) => setNewMethodName(event.target.value)}\n placeholder={tr(\n \"devportal.revenue.methodNamePlaceholder\",\n 'Label (e.g. \"Primary account\")',\n )}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n\n {newMethodType === DevPortalPaymentMethodType.Paypal ? (\n <input\n type=\"email\"\n value={newMethodEmail}\n onChange={(event) =>\n setNewMethodEmail(event.target.value)\n }\n placeholder={tr(\n \"devportal.revenue.paypalEmailPlaceholder\",\n \"PayPal email\",\n )}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n ) : (\n <>\n <input\n type=\"text\"\n value={newMethodAccountNumber}\n onChange={(event) =>\n setNewMethodAccountNumber(event.target.value)\n }\n placeholder={tr(\n \"devportal.revenue.accountNumberPlaceholder\",\n \"Account number\",\n )}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n <input\n type=\"text\"\n value={newMethodRoutingNumber}\n onChange={(event) =>\n setNewMethodRoutingNumber(event.target.value)\n }\n placeholder={tr(\n \"devportal.revenue.routingNumberPlaceholder\",\n \"Routing number\",\n )}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n </>\n )}\n\n {addMethodError && (\n <p className=\"text-xs text-status-error-text\">\n {addMethodError}\n </p>\n )}\n\n <div className=\"flex items-center justify-end gap-2 pt-1\">\n <button\n type=\"button\"\n onClick={() => setShowWithdrawPanel(false)}\n className=\"rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors\"\n >\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"button\"\n disabled={\n addingMethod ||\n (newMethodType === DevPortalPaymentMethodType.Paypal\n ? !newMethodEmail\n : !newMethodAccountNumber)\n }\n onClick={() => void handleAddPaymentMethod()}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n {addingMethod ? (\n <Loader2 size={13} className=\"animate-spin\" />\n ) : (\n <Check size={13} />\n )}\n {tr(\"devportal.revenue.saveMethod\", \"Save method\")}\n </button>\n </div>\n </div>\n ) : (\n <div className=\"space-y-3\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.chooseMethod\",\n \"Choose where to send this payout\",\n )}\n </p>\n <div className=\"space-y-2\">\n {activePaymentMethods.map((method: PaymentMethod) => (\n <button\n key={method.id}\n type=\"button\"\n onClick={() => setSelectedPaymentMethodId(method.id)}\n className={cn(\n \"flex w-full items-center gap-3 rounded-md border px-3 py-2.5 text-sm text-left transition-colors\",\n selectedPaymentMethodId === method.id\n ? \"border-primary bg-action-primary-bg/5 text-text-primary\"\n : \"border-border-subtle hover:bg-accent text-text-primary\",\n )}\n >\n <Check\n size={14}\n className={cn(\n \"flex-shrink-0\",\n selectedPaymentMethodId === method.id\n ? \"opacity-100 text-primary\"\n : \"opacity-0\",\n )}\n />\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium truncate\">\n {method.displayName ?? method.name}\n </p>\n {method.isDefault && (\n <p className=\"text-xs text-text-secondary\">\n {tr(\n \"devportal.revenue.defaultAccount\",\n \"Default\",\n )}\n </p>\n )}\n </div>\n </button>\n ))}\n <button\n type=\"button\"\n onClick={() => setShowAddMethodForm(true)}\n className=\"w-full rounded-md border border-dashed border-border-subtle px-3 py-2 text-sm text-text-secondary hover:bg-accent transition-colors\"\n >\n +{\" \"}\n {tr(\n \"devportal.revenue.addAnotherMethod\",\n \"Add a different method\",\n )}\n </button>\n </div>\n\n {withdrawError && (\n <p className=\"text-xs text-status-error-text\">\n {withdrawError}\n </p>\n )}\n\n <div className=\"flex items-center justify-end gap-2 pt-1\">\n <button\n type=\"button\"\n onClick={() => setShowWithdrawPanel(false)}\n className=\"rounded-md px-3 py-1.5 text-xs font-medium text-text-secondary hover:bg-accent transition-colors\"\n >\n {tr(\"devportal.cancel\", \"Cancel\")}\n </button>\n <button\n type=\"button\"\n disabled={requestingWithdraw || !selectedPaymentMethodId}\n onClick={() => void handleRequestWithdrawal()}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-1.5 text-xs font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors disabled:opacity-50\"\n >\n {requestingWithdraw ? (\n <Loader2 size={13} className=\"animate-spin\" />\n ) : (\n <Send size={13} />\n )}\n {tr(\"devportal.revenue.confirmWithdrawal\", \"Request\")}{\" \"}\n {formatCurrency(summary.pendingBalance, summary.currency)}\n </button>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n )}\n\n {loading && !summary ? (\n <div className=\"flex items-center justify-center py-16 text-text-secondary\">\n <Loader2 className=\"h-8 w-8 animate-spin\" />\n </div>\n ) : summary ? (\n <>\n <EmphasisPanel className=\"mb-6\">\n <StatCardGrid columns={4}>\n <StatCard\n title={tr(\"devportal.revenue.grossRevenue\", \"Gross Revenue\")}\n value={formatCurrency(\n summary.totalGrossRevenue,\n summary.currency,\n )}\n icon={<DollarSign size={20} />}\n />\n <StatCard\n title={tr(\"devportal.revenue.netRevenue\", \"Net Revenue\")}\n value={formatCurrency(\n summary.totalNetRevenue,\n summary.currency,\n )}\n icon={<Wallet size={20} />}\n />\n <StatCard\n title={tr(\n \"devportal.revenue.pendingBalance\",\n \"Pending Balance\",\n )}\n value={formatCurrency(summary.pendingBalance, summary.currency)}\n icon={<CreditCard size={20} />}\n description={\n summary.nextPayoutDate\n ? `${tr(\"devportal.revenue.nextPayout\", \"Next payout\")} ${new Date(summary.nextPayoutDate).toLocaleDateString()}`\n : tr(\n \"devportal.revenue.noPayoutScheduled\",\n \"No payout scheduled\",\n )\n }\n />\n <StatCard\n title={tr(\"devportal.revenue.platformFees\", \"Platform Fees\")}\n value={formatCurrency(\n summary.totalPlatformFees,\n summary.currency,\n )}\n icon={<ArrowDownToLine size={20} />}\n description={`${summary.totalRefundsCount} ${tr(\"devportal.revenue.refunds\", \"refunds\")}`}\n />\n </StatCardGrid>\n </EmphasisPanel>\n\n <div className=\"grid gap-6 xl:grid-cols-2\">\n <PageSection\n title={tr(\"devportal.revenue.revenueTrend\", \"Revenue trend\")}\n >\n <GlassCard treatment=\"insight\" className=\"p-4\">\n {chartData.length > 0 ? (\n <ResponsiveContainer width=\"100%\" height={300}>\n <LineChart data={chartData}>\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-chart-grid)\"\n />\n <XAxis\n dataKey=\"date\"\n stroke=\"var(--color-chart-axis)\"\n fontSize={12}\n />\n <YAxis stroke=\"var(--color-chart-axis)\" fontSize={12} />\n <Tooltip\n contentStyle={{\n backgroundColor: \"var(--color-card)\",\n border: \"1px solid var(--color-border-default)\",\n borderRadius: 12,\n }}\n />\n <Line\n type=\"monotone\"\n dataKey=\"grossRevenue\"\n stroke={chartColors.primary}\n strokeWidth={2}\n dot={false}\n />\n <Line\n type=\"monotone\"\n dataKey=\"netRevenue\"\n stroke={chartColors.secondary}\n strokeWidth={2}\n dot={false}\n />\n </LineChart>\n </ResponsiveContainer>\n ) : (\n <div className=\"flex h-[300px] flex-col items-center justify-center gap-2 text-text-secondary\">\n <p className=\"text-sm font-medium\">\n {tr(\"devportal.revenue.noTrendData\", \"No trend data yet\")}\n </p>\n <p className=\"text-xs text-text-tertiary\">\n {tr(\n \"devportal.revenue.noTrendDataHint\",\n \"Revenue trend appears once daily analytics have been aggregated.\",\n )}\n </p>\n </div>\n )}\n </GlassCard>\n </PageSection>\n\n <PageSection\n title={tr(\n \"devportal.revenue.topApps\",\n \"Top applications by revenue\",\n )}\n >\n {summary.topApps.length > 0 ? (\n <div className=\"space-y-2\">\n {summary.topApps.map(\n (\n application: GetRevenueDashboardDataQuery[\"developerOrgRevenueSummary\"][\"topApps\"][number],\n ) => (\n <GlassCard\n key={application.applicationId}\n treatment=\"insight\"\n className=\"border-border-seam p-4\"\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <p className=\"font-medium\">\n {application.applicationName}\n </p>\n <p className=\"text-sm text-text-secondary\">\n {application.salesCount}{\" \"}\n {tr(\"devportal.revenue.sales\", \"sales\")}\n </p>\n </div>\n <div className=\"text-right\">\n <p className=\"font-semibold\">\n {formatCurrency(\n application.grossRevenue,\n application.currency,\n )}\n </p>\n <p className=\"text-sm text-text-secondary\">\n {tr(\"devportal.revenue.net\", \"Net\")}{\" \"}\n {formatCurrency(\n application.netRevenue,\n application.currency,\n )}\n </p>\n </div>\n </div>\n </GlassCard>\n ),\n )}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Building2 size={24} />}\n title={tr(\n \"devportal.revenue.noLeadersTitle\",\n \"No revenue leaders yet\",\n )}\n description={tr(\n \"devportal.revenue.noLeadersDescription\",\n \"Top-performing applications will appear here once revenue is recorded.\",\n )}\n />\n )}\n </PageSection>\n </div>\n\n <PageSection\n title={tr(\"devportal.revenue.salesVolume\", \"Sales volume\")}\n >\n <GlassCard treatment=\"insight\" className=\"p-4\">\n {chartData.length > 0 ? (\n <ResponsiveContainer width=\"100%\" height={280}>\n <BarChart data={chartData}>\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"var(--color-chart-grid)\"\n />\n <XAxis\n dataKey=\"date\"\n stroke=\"var(--color-chart-axis)\"\n fontSize={12}\n />\n <YAxis stroke=\"var(--color-chart-axis)\" fontSize={12} />\n <Tooltip\n contentStyle={{\n backgroundColor: \"var(--color-card)\",\n border: \"1px solid var(--color-border-default)\",\n borderRadius: 12,\n }}\n />\n <Bar\n dataKey=\"salesCount\"\n fill={chartColors.tertiary}\n radius={[6, 6, 0, 0]}\n />\n </BarChart>\n </ResponsiveContainer>\n ) : (\n <div className=\"flex h-[280px] flex-col items-center justify-center gap-2 text-text-secondary\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.revenue.noVolumeData\",\n \"No sales volume data yet\",\n )}\n </p>\n <p className=\"text-xs text-text-tertiary\">\n {tr(\n \"devportal.revenue.noVolumeDataHint\",\n \"Sales volume by period appears once analytics have been aggregated.\",\n )}\n </p>\n </div>\n )}\n </GlassCard>\n </PageSection>\n\n <div className=\"grid gap-6 xl:grid-cols-2\">\n <PageSection\n title={tr(\"devportal.revenue.recentSales\", \"Recent sales\")}\n >\n <DataTable\n data={sales}\n keyField=\"id\"\n columns={[\n {\n key: \"application\",\n header: tr(\"devportal.revenue.application\", \"Application\"),\n render: (sale) =>\n sale.application?.name ||\n sale.planName ||\n tr(\"devportal.common.unknown\", \"Unknown\"),\n },\n {\n key: \"grossAmount\",\n header: tr(\"devportal.revenue.gross\", \"Gross\"),\n render: (sale) =>\n formatCurrency(sale.grossAmount, sale.currency),\n },\n {\n key: \"netAmount\",\n header: tr(\"devportal.revenue.net\", \"Net\"),\n render: (sale) =>\n formatCurrency(sale.netAmount, sale.currency),\n },\n {\n key: \"status\",\n header: tr(\"devportal.revenue.status\", \"Status\"),\n render: (sale) => (\n <StatusBadge status={sale.status} type=\"app\" />\n ),\n },\n ]}\n />\n </PageSection>\n\n <PageSection\n title={tr(\"devportal.revenue.payoutHistory\", \"Payout history\")}\n >\n <DataTable\n data={payouts}\n keyField=\"id\"\n columns={[\n {\n key: \"periodLabel\",\n header: tr(\"devportal.revenue.period\", \"Period\"),\n render: (payout) => payout.periodLabel,\n },\n {\n key: \"netAmount\",\n header: tr(\"devportal.revenue.netPayout\", \"Net payout\"),\n render: (payout) =>\n formatCurrency(payout.netAmount, payout.currency),\n },\n {\n key: \"status\",\n header: tr(\"devportal.revenue.status\", \"Status\"),\n render: (payout) => (\n <StatusBadge status={payout.status} type=\"app\" />\n ),\n },\n ]}\n />\n </PageSection>\n </div>\n </>\n ) : (\n <EmptyState\n illustration=\"empty-data\"\n icon={<DollarSign size={32} />}\n title={tr(\"devportal.revenue.noDataTitle\", \"No revenue data yet\")}\n description={tr(\n \"devportal.revenue.noDataDescription\",\n \"Revenue metrics will appear after this organization starts recording marketplace sales.\",\n )}\n />\n )}\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PageLayout as e } from "../components/PageLayout.js";
|
|
2
2
|
import { EmptyState as t } from "../components/EmptyState.js";
|
|
3
|
-
import {
|
|
3
|
+
import { useDevportal as n } from "../providers/DevportalProvider.js";
|
|
4
4
|
import { PermissionGuard as r } from "../components/PermissionGuard.js";
|
|
5
5
|
import "../components/index.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { formatCurrency as i } from "../utils/currency.js";
|
|
7
|
+
import { resolveGlobalGraphqlEndpoint as a } from "../utils/graphqlEndpoint.js";
|
|
8
8
|
import { useEffect as o, useState as s } from "react";
|
|
9
9
|
import { ArrowRight as c, Building2 as l, CheckCircle2 as u, Clock as d, DollarSign as f, Loader2 as p, Package as m, Plus as h } from "lucide-react";
|
|
10
10
|
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
11
11
|
import { useI18n as y } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
12
12
|
import { GlassCard as b, GradientText as x } from "@burdenoff/fe-libs/ui";
|
|
13
|
-
|
|
13
|
+
// src/devportal/pages/SellerDashboardPage.tsx
|
|
14
14
|
var S = {
|
|
15
15
|
PUBLISHED: {
|
|
16
16
|
label: "Published",
|
|
@@ -47,10 +47,10 @@ function T(e) {
|
|
|
47
47
|
return `query SellerDashboardOrgCurrencies {\n ${e.map((e, t) => `o${t}: developerOrgRevenueSummary(organizationId: ${JSON.stringify(e)}, period: "monthly") { currency }`).join("\n ")}\n }`;
|
|
48
48
|
}
|
|
49
49
|
var E = "\n query SellerDashboardProducts($publisherId: String!) {\n products(filter: { publisherId: $publisherId, nature: PHYSICAL }, limit: 3, offset: 0) {\n id\n name\n slug\n type\n status\n price\n currency\n stockQuantity\n icon\n }\n }\n", D = () => {
|
|
50
|
-
let { navigate:
|
|
50
|
+
let { navigate: i, basePath: f, apiGatewayUrl: b, authToken: S } = n(), { t: C } = y(), D = (e, t) => {
|
|
51
51
|
let n = C(e);
|
|
52
52
|
return n === e ? t : n;
|
|
53
|
-
}, M =
|
|
53
|
+
}, M = a(b), [N, P] = s(!0), [F, I] = s(!1), [L, R] = s([]), [z, B] = s(null), [V, H] = s([]), [U, W] = s({});
|
|
54
54
|
o(() => {
|
|
55
55
|
let e = !1;
|
|
56
56
|
return P(!0), (async () => {
|
|
@@ -92,7 +92,7 @@ var E = "\n query SellerDashboardProducts($publisherId: String!) {\n product
|
|
|
92
92
|
if (e) return;
|
|
93
93
|
let n = await t.json();
|
|
94
94
|
if (e) return;
|
|
95
|
-
let r = new Set([
|
|
95
|
+
let r = /* @__PURE__ */ new Set([
|
|
96
96
|
"APP",
|
|
97
97
|
"NODE",
|
|
98
98
|
"WORKFLOW"
|
|
@@ -143,11 +143,11 @@ var E = "\n query SellerDashboardProducts($publisherId: String!) {\n product
|
|
|
143
143
|
S
|
|
144
144
|
]);
|
|
145
145
|
let G = N, K = N || F, q = V.length, J = V.filter((e) => e.status === "PENDING_REVIEW").length, Y = V.filter((e) => e.status === "PUBLISHED").length, X = (e) => {
|
|
146
|
-
|
|
146
|
+
i?.(`${f}${e}`);
|
|
147
147
|
};
|
|
148
148
|
return /* @__PURE__ */ _(r, {
|
|
149
149
|
authOnly: !0,
|
|
150
|
-
children: /* @__PURE__ */ _(
|
|
150
|
+
children: /* @__PURE__ */ _(e, {
|
|
151
151
|
title: /* @__PURE__ */ v(g, { children: [
|
|
152
152
|
D("devportal.seller", "Seller"),
|
|
153
153
|
" ",
|
|
@@ -313,7 +313,7 @@ var E = "\n query SellerDashboardProducts($publisherId: String!) {\n product
|
|
|
313
313
|
})]
|
|
314
314
|
});
|
|
315
315
|
}, j = ({ org: e, currency: t, onClick: n }) => {
|
|
316
|
-
let { t: r } = y(),
|
|
316
|
+
let { t: r } = y(), a = (e, t) => {
|
|
317
317
|
let n = r(e);
|
|
318
318
|
return n === e ? t : n;
|
|
319
319
|
}, o = e.name.split(" ").map((e) => e[0]).join("").slice(0, 2).toUpperCase();
|
|
@@ -347,7 +347,7 @@ var E = "\n query SellerDashboardProducts($publisherId: String!) {\n product
|
|
|
347
347
|
children: [
|
|
348
348
|
e.publishedApps ?? 0,
|
|
349
349
|
" ",
|
|
350
|
-
|
|
350
|
+
a("devportal.appsPublished", "apps published")
|
|
351
351
|
]
|
|
352
352
|
})]
|
|
353
353
|
}),
|
|
@@ -365,16 +365,15 @@ var E = "\n query SellerDashboardProducts($publisherId: String!) {\n product
|
|
|
365
365
|
className: "text-text-muted shrink-0"
|
|
366
366
|
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
367
367
|
className: "text-[11px] text-text-secondary leading-none mb-0.5",
|
|
368
|
-
children:
|
|
368
|
+
children: a("devportal.revenue", "Revenue")
|
|
369
369
|
}), /* @__PURE__ */ _("p", {
|
|
370
370
|
className: "text-sm font-semibold tabular-nums",
|
|
371
|
-
children:
|
|
371
|
+
children: i(e.totalRevenue ?? 0, t)
|
|
372
372
|
})] })]
|
|
373
373
|
})
|
|
374
374
|
})]
|
|
375
375
|
});
|
|
376
376
|
};
|
|
377
|
-
//#endregion
|
|
378
377
|
export { D as SellerDashboardPage };
|
|
379
378
|
|
|
380
379
|
//# sourceMappingURL=SellerDashboardPage.js.map
|