@burdenoff/microfe-devportal 2026.1107.3 → 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 +46 -40
- 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 +19 -0
- package/dist/devportal/pages/PublisherPayoutsPage.js +650 -0
- package/dist/devportal/pages/PublisherPayoutsPage.js.map +1 -0
- package/dist/devportal/pages/PublisherProfilePage.d.ts +0 -2
- package/dist/devportal/pages/PublisherProfilePage.js +175 -163
- 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 +136 -0
- package/dist/devportal/utils/publisherPayouts.js +166 -0
- package/dist/devportal/utils/publisherPayouts.js.map +1 -0
- 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 +2614 -2317
- package/dist/generated/global-operations.js +412 -272
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +2288 -339
- package/dist/generated/global-types.js +4 -3
- 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 +91 -1
- package/dist/translations/en.js +92 -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/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/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":"OrganizationDetailPage.js","names":[],"sources":["../../../src/devportal/pages/OrganizationDetailPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useState, useEffect } from \"react\";\nimport { useParams } from \"react-router\";\nimport {\n useIsSellerSection,\n orgSectionPath,\n} from \"../hooks/useIsSellerSection\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport {\n Building2,\n Users,\n AppWindow,\n DollarSign,\n Settings,\n ExternalLink,\n CheckCircle,\n BarChart3,\n TrendingUp,\n ArrowRight,\n Plus,\n Shield,\n Loader2,\n AlertCircle,\n Trash2,\n CreditCard,\n Search,\n} from \"lucide-react\";\nimport { EmphasisPanel, NextSteps } from \"@burdenoff/fe-libs/ui\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { StatCard, StatCardGrid } from \"../components/StatCard\";\nimport { DataTable, DetailList } from \"../components/DataTable\";\nimport { AppListItem } from \"../components/AppCard\";\nimport { EmptyState } from \"../components/EmptyState\";\nimport { InputField, TextareaField } from \"../components/FormField\";\nimport { RegisterPickupLocationModal } from \"../components/RegisterPickupLocationModal\";\nimport { Alert, ConfirmDialog } from \"../components/ConfirmDialog\";\nimport {\n useCarrierPickupLocations,\n capitalizeCarrierName,\n} from \"../hooks/useCarrierPickupLocations\";\nimport {\n useOrganizationPickupAddresses,\n type OrganizationPickupAddress,\n} from \"../hooks/useOrganizationPickupAddresses\";\nimport { useDevportal } from \"../providers/DevportalProvider\";\nimport { DEVPORTAL_PERMISSIONS } from \"../constants/permissions\";\nimport { useDevportalPermission } from \"../hooks/usePermission\";\nimport type {\n DeveloperOrganization,\n Application,\n DeveloperOrgMember,\n} from \"../types\";\nimport { cn } from \"../utils/cn\";\nimport { formatCurrency } from \"../utils/currency\";\nimport { ORG_ROLE_LABELS } from \"../utils/constants\";\nimport {\n graphqlFetch,\n clearGraphqlFetchResponseCache,\n} from \"@burdenoff/fe-libs/shared/graphql\";\nimport {\n useGetOrganizationQuery,\n useGetApplicationsQuery,\n useGetRevenueSummaryQuery,\n useGetMyPublisherQuery,\n useGetOrgPhysicalItemsQuery,\n useUpdateOrganizationMutation,\n useUpdateOrgLegalInfoMutation,\n useUpdateOrgTaxInfoMutation,\n} from \"../../generated/global-operations\";\nimport type {\n OrganizationFieldsFragment,\n OrgMemberFieldsFragment,\n ApplicationFieldsFragment,\n GetOrgPhysicalItemsQuery,\n} from \"../../generated/global-operations\";\n\nconst ORGANIZATION_VERIFICATION_QUERY = `\n query OrganizationVerificationDetails($id: ID!) {\n developerOrganization(id: $id) {\n id\n verificationMethod\n verificationRequestedAt\n verificationStatus\n verificationRequestNotes\n verificationEvidenceUrl\n verificationDomain\n verificationRequestedBy\n verificationReviewedAt\n verificationReviewedBy\n verificationReviewNotes\n verificationRejectedReason\n }\n }\n`;\n\nconst REQUEST_ORG_VERIFICATION_MUTATION = `\n mutation RequestOrgVerificationExtended(\n $id: ID!\n $method: String!\n $notes: String\n $evidenceUrl: String\n $domain: String\n ) {\n requestOrgVerification(\n id: $id\n method: $method\n notes: $notes\n evidenceUrl: $evidenceUrl\n domain: $domain\n ) {\n id\n verificationMethod\n verificationRequestedAt\n verificationStatus\n verificationRequestNotes\n verificationEvidenceUrl\n verificationDomain\n verificationRejectedReason\n }\n }\n`;\n\n/**\n * Map GraphQL organization fragment to local type\n */\nfunction mapOrganization(\n org: OrganizationFieldsFragment,\n): DeveloperOrganization {\n const rawOrg = org as unknown as Record<string, unknown>;\n return {\n id: org.id,\n name: org.name,\n slug: org.slug,\n kind: org.kind as DeveloperOrganization[\"kind\"],\n description: org.description ?? undefined,\n logoUrl: org.logoUrl ?? undefined,\n bannerUrl: org.bannerUrl ?? undefined,\n websiteUrl: org.websiteUrl ?? undefined,\n contactEmail: org.contactEmail ?? undefined,\n supportEmail: org.supportEmail ?? undefined,\n tier: org.tier as DeveloperOrganization[\"tier\"],\n partnerTier:\n (org.partnerTier as DeveloperOrganization[\"partnerTier\"]) ?? undefined,\n partnerSince: org.partnerSince ?? undefined,\n isVerified: org.isVerified ?? false,\n verifiedAt: org.verifiedAt ?? undefined,\n verificationMethod: org.verificationMethod ?? undefined,\n verificationRequestedAt:\n typeof rawOrg.verificationRequestedAt === \"string\"\n ? rawOrg.verificationRequestedAt\n : undefined,\n verificationStatus:\n (rawOrg.verificationStatus as DeveloperOrganization[\"verificationStatus\"]) ??\n (org.isVerified ? \"VERIFIED\" : \"UNVERIFIED\"),\n verificationRequestNotes:\n typeof rawOrg.verificationRequestNotes === \"string\"\n ? rawOrg.verificationRequestNotes\n : undefined,\n verificationEvidenceUrl:\n typeof rawOrg.verificationEvidenceUrl === \"string\"\n ? rawOrg.verificationEvidenceUrl\n : undefined,\n verificationDomain:\n typeof rawOrg.verificationDomain === \"string\"\n ? rawOrg.verificationDomain\n : undefined,\n verificationRequestedBy:\n typeof rawOrg.verificationRequestedBy === \"string\"\n ? rawOrg.verificationRequestedBy\n : undefined,\n verificationReviewedAt:\n typeof rawOrg.verificationReviewedAt === \"string\"\n ? rawOrg.verificationReviewedAt\n : undefined,\n verificationReviewedBy:\n typeof rawOrg.verificationReviewedBy === \"string\"\n ? rawOrg.verificationReviewedBy\n : undefined,\n verificationReviewNotes:\n typeof rawOrg.verificationReviewNotes === \"string\"\n ? rawOrg.verificationReviewNotes\n : undefined,\n verificationRejectedReason:\n typeof rawOrg.verificationRejectedReason === \"string\"\n ? rawOrg.verificationRejectedReason\n : undefined,\n isCertified: org.isCertified ?? false,\n certifiedAt: org.certifiedAt ?? undefined,\n totalApps: org.totalApps ?? 0,\n publishedApps: org.publishedApps ?? 0,\n totalInstalls: org.totalInstalls ?? 0,\n activeInstalls: org.activeInstalls ?? 0,\n totalApiCalls: org.totalApiCalls ?? \"0\",\n averageRating: org.averageRating ?? undefined,\n totalRevenue: org.totalRevenue ?? 0,\n totalPlatformFees: org.totalPlatformFees ?? 0,\n totalPayouts: org.totalPayouts ?? 0,\n pendingBalance: org.pendingBalance ?? 0,\n lifetimeRevenue: org.lifetimeRevenue ?? 0,\n platformFeeRate: org.platformFeeRate ?? 0.3,\n apiCallsLimit: org.apiCallsLimit ?? 100000,\n storageLimit: org.storageLimit ?? \"1073741824\",\n apiCallsUsed: org.apiCallsUsed ?? \"0\",\n storageUsed: org.storageUsed ?? \"0\",\n taxId: org.taxId ?? undefined,\n taxCountry: org.taxCountry ?? undefined,\n taxFormVerified: org.taxFormVerified ?? false,\n legalEntityName: org.legalEntityName ?? undefined,\n legalEntityType: org.legalEntityType ?? undefined,\n billingAccountId: org.billingAccountId ?? undefined,\n pickupPostalCode: org.pickupPostalCode ?? undefined,\n createdAt: org.createdAt,\n updatedAt: org.updatedAt,\n };\n}\n\n/**\n * Map GraphQL member fragment to local type\n */\nfunction mapMember(member: OrgMemberFieldsFragment): DeveloperOrgMember {\n return {\n id: member.id,\n organizationId: member.organizationId,\n userId: member.userId,\n email: member.email ?? undefined,\n role: member.role as DeveloperOrgMember[\"role\"],\n isActive: member.isActive ?? true,\n isSuspended: member.isSuspended ?? false,\n suspendedAt: member.suspendedAt ?? undefined,\n suspendedReason: member.suspendedReason ?? undefined,\n joinedAt: member.joinedAt,\n permissions: member.permissions ?? undefined,\n invitedBy: member.invitedBy ?? undefined,\n invitationId: member.invitationId ?? undefined,\n createdAt: member.createdAt,\n updatedAt: member.updatedAt,\n };\n}\n\ntype TabId = \"overview\" | \"apps\" | \"members\" | \"settings\";\n\ninterface VerificationDetails {\n verificationMethod?: string;\n verificationRequestedAt?: string;\n verificationStatus?: \"UNVERIFIED\" | \"PENDING\" | \"VERIFIED\" | \"REJECTED\";\n verificationRequestNotes?: string;\n verificationEvidenceUrl?: string;\n verificationDomain?: string;\n verificationRequestedBy?: string;\n verificationReviewedAt?: string;\n verificationReviewedBy?: string;\n verificationReviewNotes?: string;\n verificationRejectedReason?: string;\n}\n\nfunction isLikelyDomain(value: string): boolean {\n const trimmed = value.trim().toLowerCase();\n return /^[a-z0-9.-]+\\.[a-z]{2,}$/i.test(trimmed) && !trimmed.includes(\"@\");\n}\n\nfunction isLikelyUrl(value: string): boolean {\n try {\n const url = new URL(value.trim());\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\nfunction isLikelyEmail(value: string): boolean {\n const trimmed = value.trim();\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmed);\n}\n\nconst ORG_ROLE_PRIORITY: Record<DeveloperOrgMember[\"role\"], number> = {\n VIEWER: 0,\n DEVELOPER: 1,\n ADMIN: 2,\n OWNER: 3,\n};\n\n/**\n * Organization detail page\n */\nexport const OrganizationDetailPage: FC = () => {\n const {\n navigate,\n basePath,\n setActiveOrgId,\n setActivePhysicalOrgId,\n currentUser,\n } = useDevportal();\n const isSeller = useIsSellerSection();\n const { orgId: id } = useParams<{ orgId: string }>();\n // Lifted up from SettingsTab (and called unconditionally, before the\n // loading/error early returns below, per Rules of Hooks) so the guided\n // next-steps banner — which renders above the tabs regardless of which\n // one is active — can reflect whether a pickup address is configured.\n const {\n addresses: pickupAddresses,\n loading: pickupAddressesLoading,\n refetch: refetchPickupAddresses,\n } = useOrganizationPickupAddresses(id);\n // Only fetched to label the org-level revenue rollups (org.totalRevenue\n // etc, which have no currency field of their own on the backend model)\n // with the org's real dominant currency instead of a hardcoded $/USD —\n // same field already relied on by RevenueDashboardPage and the billing\n // Marketplace earnings page.\n const { data: revenueSummaryData } = useGetRevenueSummaryQuery({\n variables: { organizationId: id ?? \"\", period: \"monthly\" },\n skip: !id,\n });\n const orgCurrency =\n revenueSummaryData?.developerOrgRevenueSummary?.currency ?? \"USD\";\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n const [activeTab, setActiveTab] = useState<TabId>(\"overview\");\n // Set when a CTA (the pickup-address alert below) needs Settings to not\n // just open, but scroll to and briefly highlight the Fulfillment section\n // specifically — \"go to Settings\" alone would drop the seller on\n // Organization Details with no clue where \"Fulfillment\" even is.\n const [focusFulfillment, setFocusFulfillment] = useState(false);\n\n // Fetch organization data\n const { data, previousData, loading, error } = useGetOrganizationQuery({\n variables: { id: id! },\n skip: !id,\n });\n const resolvedData = data ?? previousData;\n\n const { data: appsData } = useGetApplicationsQuery({\n variables: { limit: 50, organizationId: id },\n skip: !id,\n fetchPolicy: \"cache-and-network\",\n });\n\n const isPhysicalOrg =\n resolvedData?.developerOrganization?.kind === \"PHYSICAL\";\n // PHYSICAL orgs never own Applications (see DeveloperOrgKind / BOFF-7285)\n // — their real \"apps\" are physical items, fetched separately since\n // StoreProduct has no FK to DeveloperOrganization (only publisherId).\n const { data: publisherData } = useGetMyPublisherQuery({\n skip: !isPhysicalOrg,\n });\n const { data: physicalItemsData } = useGetOrgPhysicalItemsQuery({\n variables: { publisherId: publisherData?.myPublisher?.id ?? \"\", limit: 50 },\n skip: !isPhysicalOrg || !publisherData?.myPublisher?.id,\n fetchPolicy: \"cache-and-network\",\n });\n const physicalItems = physicalItemsData?.products ?? [];\n\n const allTabs: Array<{\n id: TabId;\n label: string;\n icon: FC<{ size?: number }>;\n }> = [\n {\n id: \"overview\",\n label: tr(\"devportal.overview\", \"Overview\"),\n icon: Building2,\n },\n {\n id: \"apps\",\n label: isPhysicalOrg\n ? tr(\"devportal.items\", \"Items\")\n : tr(\"devportal.applications\", \"Applications\"),\n icon: AppWindow,\n },\n { id: \"members\", label: tr(\"devportal.members\", \"Members\"), icon: Users },\n {\n id: \"settings\",\n label: tr(\"devportal.settings\", \"Settings\"),\n icon: Settings,\n },\n ];\n\n const provisionalMembers: DeveloperOrgMember[] = (\n resolvedData?.developerOrganization?.members ?? []\n ).map(mapMember);\n const currentMembership = currentUser\n ? provisionalMembers.find(\n (member: DeveloperOrgMember) => member.userId === currentUser.id,\n )\n : undefined;\n const currentRole: DeveloperOrgMember[\"role\"] | undefined =\n currentMembership?.role;\n const canCreateApps =\n currentRole !== undefined &&\n ORG_ROLE_PRIORITY[currentRole] >= ORG_ROLE_PRIORITY.DEVELOPER;\n const canManageOrg =\n currentRole !== undefined &&\n ORG_ROLE_PRIORITY[currentRole] >= ORG_ROLE_PRIORITY.ADMIN;\n const canViewRevenue = canManageOrg;\n const canInviteMembers = canManageOrg;\n const tabs = allTabs.filter((tab) => tab.id !== \"settings\" || canManageOrg);\n\n const handleNavigate = (path: string) => {\n navigate?.(`${basePath}${path}`);\n };\n\n // Sync the active-org slot so the dashboard/switcher scopes to whichever\n // org the user is browsing — the PHYSICAL slot when reached via the seller\n // portal, the regular (DIGITAL) slot otherwise. See DeveloperOrgKind\n // (BOFF-7285).\n useEffect(() => {\n if (!id) return;\n if (isSeller) {\n setActivePhysicalOrgId(id);\n } else {\n setActiveOrgId(id);\n }\n }, [id, isSeller, setActiveOrgId, setActivePhysicalOrgId]);\n\n useEffect(() => {\n if (activeTab === \"settings\" && !canManageOrg) {\n setActiveTab(\"overview\");\n }\n }, [activeTab, canManageOrg]);\n\n // Register org name in breadcrumb registry so the URL ID shows as the org name\n useEffect(() => {\n const name = resolvedData?.developerOrganization?.name;\n if (!id || !name) return;\n const reg = (\n window as unknown as {\n __breadcrumbRegistry?: {\n register: (id: string, name: string) => void;\n unregister: (id: string) => void;\n };\n }\n ).__breadcrumbRegistry;\n reg?.register(id, name);\n return () => reg?.unregister(id);\n }, [id, data?.developerOrganization?.name]);\n\n // Loading state — only block on initial load, not refetches (keeps SettingsTab mounted)\n if (loading && !resolvedData) {\n return (\n <PageLayout\n title={tr(\"devportal.loadingDots\", \"Loading...\")}\n backLink={`${basePath}${orgSectionPath(isSeller)}`}\n backLabel={tr(\"devportal.backToOrganizations\", \"Back to Organizations\")}\n >\n <div className=\"flex items-center justify-center py-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-text-secondary\" />\n </div>\n </PageLayout>\n );\n }\n\n // Error state\n if (error || !resolvedData?.developerOrganization) {\n return (\n <PageLayout\n title={tr(\"devportal.organizationNotFound\", \"Organization Not Found\")}\n backLink={`${basePath}${orgSectionPath(isSeller)}`}\n backLabel={tr(\"devportal.backToOrganizations\", \"Back to Organizations\")}\n >\n <div className=\"flex flex-col items-center justify-center py-12 gap-4\">\n <AlertCircle className=\"h-12 w-12 text-status-error-text\" />\n <h2 className=\"text-lg font-semibold\">\n {tr(\n \"devportal.organizationNotFoundLower\",\n \"Organization not found\",\n )}\n </h2>\n <p className=\"text-text-secondary\">\n {error?.message ||\n tr(\n \"devportal.organizationNotFoundDescription\",\n \"The organization you're looking for doesn't exist or you don't have access to it.\",\n )}\n </p>\n <button\n onClick={() => handleNavigate(orgSectionPath(isSeller))}\n className=\"mt-4 inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n {tr(\"devportal.backToOrganizations\", \"Back to Organizations\")}\n </button>\n </div>\n </PageLayout>\n );\n }\n\n // Map GraphQL data to local types\n const org = mapOrganization(resolvedData!.developerOrganization!);\n const members = provisionalMembers;\n const apps = (appsData?.applications?.edges?.map(\n (e: { node: ApplicationFieldsFragment }) => e.node,\n ) ?? []) as Application[];\n // So the Marketplace earnings page (a different MFE) can offer a way back\n // here without needing to know whether this org is PHYSICAL or DIGITAL\n // (it isn't in scope there) — see EarningsPage.tsx's `returnTo` handling.\n const earningsUrl = `/billing/earnings?developerOrgId=${encodeURIComponent(org.id)}&developerOrgName=${encodeURIComponent(org.name)}&returnTo=${encodeURIComponent(`${basePath}${orgSectionPath(isSeller, org.id)}`)}`;\n\n return (\n <PageLayout\n title={org.name}\n description={org.description}\n purpose={tr(\n \"devportal.orgDetailPurpose\",\n \"This is the home for one organization — the apps it owns, the people who can work on them, and its store and billing settings. Invite teammates, add apps, and verify the org so your published listings look trustworthy.\",\n )}\n backLink={`${basePath}${orgSectionPath(isSeller)}`}\n backLabel={tr(\"devportal.backToOrganizations\", \"Back to Organizations\")}\n actions={\n <div className=\"flex items-center gap-2\">\n {canViewRevenue ? (\n <button\n onClick={() => navigate?.(earningsUrl)}\n className=\"inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors\"\n >\n <DollarSign size={16} />\n {tr(\"devportal.revenue\", \"Revenue\")}\n </button>\n ) : null}\n </div>\n }\n >\n {/* Tabs */}\n <div className=\"border-b\">\n <nav\n className=\"-mb-px flex gap-4 overflow-x-auto\"\n role=\"tablist\"\n aria-label={tr(\n \"devportal.organizationSections\",\n \"Organization sections\",\n )}\n >\n {tabs.map((tab) => {\n const Icon = tab.icon;\n return (\n <button\n key={tab.id}\n id={`organization-tab-${tab.id}`}\n role=\"tab\"\n aria-selected={activeTab === tab.id}\n aria-controls={`organization-panel-${tab.id}`}\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n \"flex items-center gap-2 border-b-2 px-1 py-3 text-sm font-medium transition-colors\",\n activeTab === tab.id\n ? \"border-primary text-primary\"\n : \"border-transparent text-text-secondary hover:text-text-primary hover:border-muted-foreground\",\n )}\n >\n <Icon size={16} />\n {tab.label}\n </button>\n );\n })}\n </nav>\n </div>\n\n {/* Pickup address is a hard requirement for PHYSICAL orgs, not a soft\n suggestion — surfaced as a persistent, non-dismissible alert (unlike\n NextSteps below) so it can't be dismissed away and forgotten. */}\n {canManageOrg &&\n isSeller &&\n !pickupAddressesLoading &&\n pickupAddresses.length === 0 && (\n <Alert\n variant=\"warning\"\n title={tr(\n \"devportal.pickupAddressRequiredTitle\",\n \"Pickup address required\",\n )}\n className=\"mt-6\"\n >\n <p>\n {tr(\n \"devportal.pickupAddressRequiredDesc\",\n \"This organization sells physical items, so it needs a real pickup address before it's fully set up — buyers need to know where orders actually ship from.\",\n )}\n </p>\n <button\n type=\"button\"\n onClick={() => {\n setActiveTab(\"settings\");\n setFocusFulfillment(true);\n }}\n className=\"mt-2 text-sm font-semibold underline\"\n >\n {tr(\"devportal.pickupAddressRequiredCta\", \"Configure it now\")}\n </button>\n </Alert>\n )}\n\n {/* Guided next steps (dismissable) */}\n <NextSteps\n className=\"mt-6\"\n storageKey={`devportal-org-${org.id}`}\n steps={[\n ...(canInviteMembers\n ? [\n {\n id: \"invite-members\",\n label: tr(\"devportal.inviteMembers\", \"Invite members\"),\n description: tr(\n \"devportal.orgStepInvite\",\n \"Add teammates so they can build alongside you\",\n ),\n icon: <Users size={16} />,\n onClick: () => setActiveTab(\"members\"),\n },\n ]\n : []),\n ...(canManageOrg\n ? [\n {\n id: \"settings\",\n label: tr(\n \"devportal.orgStepVerify\",\n \"Complete organization profile\",\n ),\n description: tr(\n \"devportal.orgStepVerifyDesc\",\n \"Add a logo and details, then request verification\",\n ),\n icon: <Settings size={16} />,\n onClick: () => setActiveTab(\"settings\"),\n done: Boolean(org.isVerified),\n },\n ]\n : []),\n // Billing account applies to every org, physical or digital —\n // both need somewhere for sale/payout revenue to land.\n ...(canManageOrg\n ? [\n {\n id: \"link-billing\",\n label: tr(\n \"devportal.orgStepLinkBilling\",\n \"Link billing account\",\n ),\n description: tr(\n \"devportal.orgStepLinkBillingDesc\",\n \"Connect a billing account so sale and payout revenue has somewhere to go\",\n ),\n icon: <CreditCard size={16} />,\n onClick: () => navigate?.(earningsUrl),\n done: Boolean(org.billingAccountId),\n },\n ]\n : []),\n // A PHYSICAL org never owns Applications (see DeveloperOrgKind /\n // BOFF-7285) — offer listing a physical item instead of the\n // digital-app step.\n ...(canCreateApps && !isSeller\n ? [\n {\n id: \"create-app\",\n label: tr(\"devportal.createApp\", \"Create App\"),\n description: tr(\n \"devportal.orgStepCreateApp\",\n \"Build a new application under this organization\",\n ),\n icon: <AppWindow size={16} />,\n onClick: () => handleNavigate(\"/apps/new\"),\n },\n ]\n : []),\n ...(canCreateApps && isSeller\n ? [\n {\n id: \"list-item\",\n label: tr(\"devportal.listAnItem\", \"List an Item\"),\n description: tr(\n \"devportal.orgStepListItem\",\n \"List a physical product for sale under this organization\",\n ),\n icon: <Plus size={16} />,\n onClick: () => handleNavigate(\"/seller/items/new\"),\n },\n ]\n : []),\n ]}\n />\n\n {/* Tab content */}\n <div\n className=\"mt-6\"\n id={`organization-panel-${activeTab}`}\n role=\"tabpanel\"\n aria-labelledby={`organization-tab-${activeTab}`}\n tabIndex={0}\n >\n {activeTab === \"overview\" && (\n <OverviewTab\n org={org}\n apps={apps}\n physicalItems={physicalItems}\n members={members}\n canCreateApps={canCreateApps}\n canViewRevenue={canViewRevenue}\n currency={orgCurrency}\n onNavigate={handleNavigate}\n onShowApps={() => setActiveTab(\"apps\")}\n />\n )}\n {activeTab === \"apps\" && (\n <AppsTab\n org={org}\n apps={apps}\n physicalItems={physicalItems}\n onNavigate={handleNavigate}\n canCreateApps={canCreateApps}\n />\n )}\n {activeTab === \"members\" && (\n <MembersTab\n members={members}\n onNavigate={handleNavigate}\n orgId={org.id}\n canInviteMembers={canInviteMembers}\n />\n )}\n {activeTab === \"settings\" && canManageOrg && (\n <SettingsTab\n org={org}\n pickupAddresses={pickupAddresses}\n pickupAddressesLoading={pickupAddressesLoading}\n refetchPickupAddresses={refetchPickupAddresses}\n focusFulfillment={focusFulfillment}\n onFocusFulfillmentHandled={() => setFocusFulfillment(false)}\n />\n )}\n </div>\n </PageLayout>\n );\n};\n\n// Overview Tab\nconst OverviewTab: FC<{\n org: DeveloperOrganization;\n apps: Application[];\n physicalItems: PhysicalItem[];\n members: DeveloperOrgMember[];\n canCreateApps: boolean;\n canViewRevenue: boolean;\n currency: string;\n onNavigate: (path: string) => void;\n onShowApps: () => void;\n}> = ({\n org,\n apps,\n physicalItems,\n members,\n canCreateApps,\n canViewRevenue,\n currency,\n onNavigate,\n onShowApps,\n}) => {\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n\n return (\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-6\">\n {/* Stats — primary emphasis zone */}\n <EmphasisPanel>\n <StatCardGrid\n columns={org.kind === \"PHYSICAL\" ? 2 : canViewRevenue ? 4 : 3}\n >\n {/* Published Apps / Total Installs are app-marketplace concepts\n — meaningless for a PHYSICAL (seller) org, which sells real\n items, not installable apps. */}\n {org.kind !== \"PHYSICAL\" && (\n <>\n <StatCard\n title={tr(\"devportal.publishedApps\", \"Published Apps\")}\n value={`${org.publishedApps}/${org.totalApps}`}\n icon={<AppWindow size={20} />}\n />\n <StatCard\n title={tr(\"devportal.totalInstalls\", \"Total Installs\")}\n value={org.totalInstalls.toLocaleString()}\n icon={<TrendingUp size={20} />}\n />\n </>\n )}\n {canViewRevenue ? (\n <StatCard\n title={tr(\"devportal.totalRevenue\", \"Total Revenue\")}\n value={formatCurrency(org.totalRevenue, currency)}\n icon={<DollarSign size={20} />}\n />\n ) : null}\n <StatCard\n title={tr(\"devportal.avgRating\", \"Avg Rating\")}\n value={\n org.averageRating\n ? `${org.averageRating.toFixed(1)} ★`\n : tr(\"devportal.notAvailable\", \"N/A\")\n }\n icon={<BarChart3 size={20} />}\n />\n </StatCardGrid>\n </EmphasisPanel>\n\n {/* Recent Apps / Items */}\n <PageSection\n title={\n org.kind === \"PHYSICAL\"\n ? tr(\"devportal.recentItems\", \"Recent Items\")\n : tr(\"devportal.recentApplications\", \"Recent Applications\")\n }\n actions={\n <button\n onClick={onShowApps}\n className=\"text-sm text-primary hover:underline flex items-center gap-1\"\n >\n {tr(\"devportal.viewAll\", \"View all\")} <ArrowRight size={14} />\n </button>\n }\n >\n {org.kind === \"PHYSICAL\" ? (\n physicalItems.length > 0 ? (\n <div className=\"space-y-2\">\n {physicalItems.slice(0, 3).map((item) => (\n <PhysicalItemListItem\n key={item.id}\n item={item}\n onClick={() => onNavigate(`/seller/items/${item.id}`)}\n />\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-data\"\n icon={<AppWindow size={24} />}\n title={tr(\"devportal.noItems\", \"No items\")}\n description={tr(\n \"devportal.createYourFirstItem\",\n \"List your first physical item\",\n )}\n action={\n canCreateApps ? (\n <button\n onClick={() => onNavigate(\"/seller/items/new\")}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus size={16} />\n {tr(\"devportal.createItem\", \"Create Item\")}\n </button>\n ) : undefined\n }\n />\n )\n ) : apps.length > 0 ? (\n <div className=\"space-y-2\">\n {apps.slice(0, 3).map((app) => (\n <AppListItem\n key={app.id}\n app={app}\n onClick={() => onNavigate(`/apps/${app.id}`)}\n />\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-data\"\n icon={<AppWindow size={24} />}\n title={tr(\"devportal.noApplications\", \"No applications\")}\n description={tr(\n \"devportal.createYourFirstApplication\",\n \"Create your first application\",\n )}\n action={\n canCreateApps ? (\n <button\n onClick={() => onNavigate(\"/apps/new\")}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus size={16} />\n {tr(\"devportal.createApp\", \"Create App\")}\n </button>\n ) : undefined\n }\n />\n )}\n </PageSection>\n </div>\n\n {/* Sidebar */}\n <div className=\"space-y-6\">\n {/* No separate \"Revenue Summary\" section here — it would just\n repeat the \"Total Revenue\" stat card above. Platform fees, net\n payouts, pending balance, and lifetime revenue are period- and\n payout-cycle-dependent breakdowns that belong on the actual\n Revenue page (see the \"Revenue\" button above), not a\n quick-glance Overview sidebar. */}\n\n {/* Team */}\n <PageSection\n title={tr(\"devportal.teamMembers\", \"Team Members\")}\n actions={\n <button\n onClick={() => onNavigate(`/organizations/${org.id}/members`)}\n className=\"text-sm text-primary hover:underline\"\n >\n {tr(\"devportal.manage\", \"Manage\")}\n </button>\n }\n >\n <div className=\"space-y-2\">\n {members.slice(0, 3).map((member) => (\n <div\n key={member.id}\n className=\"flex items-center justify-between py-2\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-sm font-medium text-primary\">\n {member.email?.charAt(0).toUpperCase() || \"U\"}\n </div>\n <div>\n <p className=\"text-sm font-medium\">{member.email}</p>\n <p className=\"text-xs text-text-secondary\">\n {ORG_ROLE_LABELS[member.role]}\n </p>\n </div>\n </div>\n </div>\n ))}\n {members.length > 3 && (\n <p className=\"text-xs text-text-secondary\">\n +{members.length - 3}{\" \"}\n {tr(\"devportal.moreMembers\", \"more members\")}\n </p>\n )}\n </div>\n </PageSection>\n\n {/* Links */}\n <PageSection title={tr(\"devportal.links\", \"Links\")}>\n <div className=\"space-y-2\">\n {org.websiteUrl && (\n <a\n href={org.websiteUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 text-sm text-primary hover:underline\"\n >\n <ExternalLink size={14} />\n {tr(\"devportal.website\", \"Website\")}\n </a>\n )}\n {org.contactEmail && (\n <a\n href={`mailto:${org.contactEmail}`}\n className=\"flex items-center gap-2 text-sm text-primary hover:underline\"\n >\n <ExternalLink size={14} />\n {org.contactEmail}\n </a>\n )}\n </div>\n </PageSection>\n </div>\n </div>\n );\n};\n\n// Apps Tab\nconst AppsTab: FC<{\n org: DeveloperOrganization;\n apps: Application[];\n physicalItems: PhysicalItem[];\n onNavigate: (path: string) => void;\n canCreateApps: boolean;\n}> = ({ org, apps, physicalItems, onNavigate, canCreateApps }) => {\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n // A PHYSICAL org never owns Applications (see DeveloperOrgKind / BOFF-7285)\n // — this is checked against the org's real kind, not the route, so a\n // physical org opened via a stale non-seller URL still routes correctly.\n // Its real \"apps\" are physical items instead.\n const isPhysical = org.kind === \"PHYSICAL\";\n const items: Array<Application | PhysicalItem> = isPhysical\n ? physicalItems\n : apps;\n const createPath = isPhysical ? \"/seller/items/new\" : \"/apps/new\";\n const createLabel = isPhysical\n ? tr(\"devportal.createItem\", \"Create Item\")\n : tr(\"devportal.createApp\", \"Create App\");\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const normalizedQuery = searchQuery.trim().toLowerCase();\n const filteredItems = normalizedQuery\n ? items.filter((item) => item.name.toLowerCase().includes(normalizedQuery))\n : items;\n const isSearching = normalizedQuery.length > 0;\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm text-text-secondary\">\n {filteredItems.length}\n {isSearching ? ` / ${items.length}` : \"\"}{\" \"}\n {isPhysical\n ? filteredItems.length !== 1\n ? tr(\"devportal.items\", \"items\")\n : tr(\"devportal.item\", \"item\")\n : filteredItems.length !== 1\n ? tr(\"devportal.applications\", \"applications\")\n : tr(\"devportal.application\", \"application\")}\n </p>\n {canCreateApps ? (\n <button\n onClick={() => onNavigate(createPath)}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <Plus size={16} />\n {createLabel}\n </button>\n ) : null}\n </div>\n\n {items.length > 0 ? (\n <div className=\"relative max-w-md\">\n <Search\n size={16}\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary\"\n />\n <input\n type=\"text\"\n placeholder={\n isPhysical\n ? tr(\"devportal.searchItems\", \"Search items...\")\n : tr(\"devportal.searchApplications\", \"Search applications...\")\n }\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full rounded-md border bg-bg-surface pl-9 pr-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n </div>\n ) : null}\n\n {filteredItems.length > 0 ? (\n <div className=\"space-y-2\">\n {isPhysical\n ? (filteredItems as PhysicalItem[]).map((item) => (\n <PhysicalItemListItem\n key={item.id}\n item={item}\n onClick={() => onNavigate(`/seller/items/${item.id}`)}\n />\n ))\n : (filteredItems as Application[]).map((app) => (\n <AppListItem\n key={app.id}\n app={app}\n onClick={() => onNavigate(`/apps/${app.id}`)}\n />\n ))}\n </div>\n ) : isSearching ? (\n <EmptyState\n illustration=\"empty-search\"\n icon={<Search size={32} />}\n title={\n isPhysical\n ? tr(\"devportal.noItemsFound\", \"No items found\")\n : tr(\"devportal.noApplicationsFound\", \"No applications found\")\n }\n description={tr(\n \"devportal.tryAdjustingSearch\",\n \"Try a different search term\",\n )}\n />\n ) : (\n <EmptyState\n illustration=\"empty-data\"\n icon={<AppWindow size={32} />}\n title={\n isPhysical\n ? tr(\"devportal.noItems\", \"No items\")\n : tr(\"devportal.noApplications\", \"No applications\")\n }\n description={\n isPhysical\n ? tr(\n \"devportal.createFirstItemForOrg\",\n \"List your first physical item for this organization\",\n )\n : tr(\n \"devportal.createFirstAppForOrg\",\n \"Create your first application for this organization\",\n )\n }\n action={\n canCreateApps ? (\n <button\n onClick={() => onNavigate(createPath)}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus size={16} />\n {createLabel}\n </button>\n ) : undefined\n }\n />\n )}\n </div>\n );\n};\n\ntype PhysicalItem = GetOrgPhysicalItemsQuery[\"products\"][number];\n\nconst ITEM_STATUS_STYLES: Record<PhysicalItem[\"status\"], string> = {\n PUBLISHED: \"text-status-success-text bg-status-success-bg-subtle\",\n PENDING_REVIEW: \"text-status-warning-text bg-status-warning-bg-subtle\",\n DRAFT: \"text-text-muted bg-bg-muted\",\n REJECTED: \"text-status-error-text bg-status-error-bg/10\",\n ARCHIVED: \"text-text-muted bg-bg-muted\",\n DEPRECATED: \"text-text-muted bg-bg-muted\",\n UNLISTED: \"text-text-muted bg-bg-muted\",\n};\n\n/** Lightweight row for a physical item — StoreProduct doesn't fit AppListItem's\n * Application-shaped props (price/stock vs installs/rating), so this is its\n * own small renderer rather than forcing an ill-fitting reuse. */\nconst PhysicalItemListItem: FC<{ item: PhysicalItem; onClick: () => void }> = ({\n item,\n onClick,\n}) => {\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onClick();\n }\n }}\n className=\"flex cursor-pointer items-center justify-between gap-4 rounded-lg border border-border-seam bg-bg-surface p-4 transition-colors hover:bg-bg-sunken focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n >\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate font-medium text-text-primary\">{item.name}</p>\n <p className=\"mt-0.5 text-xs text-text-secondary\">\n {item.stockQuantity ?? 0} in stock\n </p>\n </div>\n <span\n className={cn(\n \"rounded-full px-2 py-0.5 text-xs font-medium\",\n ITEM_STATUS_STYLES[item.status],\n )}\n >\n {item.status.replace(/_/g, \" \")}\n </span>\n <span className=\"whitespace-nowrap text-sm font-semibold tabular-nums\">\n {formatCurrency(item.price, item.currency)}\n </span>\n </div>\n );\n};\n\n// Members Tab\nconst MembersTab: FC<{\n members: DeveloperOrgMember[];\n onNavigate: (path: string) => void;\n orgId: string;\n canInviteMembers: boolean;\n}> = ({ members, onNavigate, orgId, canInviteMembers }) => {\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm text-text-secondary\">\n {members.length}{\" \"}\n {members.length !== 1\n ? tr(\"devportal.membersLower\", \"members\")\n : tr(\"devportal.memberLower\", \"member\")}\n </p>\n {canInviteMembers ? (\n <button\n onClick={() => onNavigate(`/organizations/${orgId}/members`)}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <Plus size={16} />\n {tr(\"devportal.inviteMember\", \"Invite Member\")}\n </button>\n ) : null}\n </div>\n\n <DataTable\n data={members}\n keyField=\"id\"\n columns={[\n {\n key: \"email\",\n header: tr(\"devportal.memberColumn\", \"Member\"),\n render: (member) => (\n <div className=\"flex items-center gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-sm font-medium text-primary\">\n {member.email?.charAt(0).toUpperCase() || \"U\"}\n </div>\n <span className=\"font-medium\">{member.email}</span>\n </div>\n ),\n },\n {\n key: \"role\",\n header: tr(\"devportal.roleColumn\", \"Role\"),\n render: (member) => (\n <span\n className={cn(\n \"inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium\",\n member.role === \"OWNER\"\n ? \"bg-accent-purple-subtle text-accent-purple\"\n : member.role === \"ADMIN\"\n ? \"bg-status-info-bg-subtle text-status-info-text\"\n : member.role === \"DEVELOPER\"\n ? \"bg-status-success-bg-subtle text-status-success-text\"\n : \"bg-bg-sunken text-text-primary\",\n )}\n >\n {ORG_ROLE_LABELS[member.role]}\n </span>\n ),\n },\n {\n key: \"joinedAt\",\n header: tr(\"devportal.joinedColumn\", \"Joined\"),\n render: (member) => new Date(member.joinedAt).toLocaleDateString(),\n },\n ]}\n />\n </div>\n );\n};\n\n// Settings Tab\nconst SettingsTab: FC<{\n org: DeveloperOrganization;\n pickupAddresses: OrganizationPickupAddress[];\n pickupAddressesLoading: boolean;\n refetchPickupAddresses: () => void;\n /** Set when the caller navigated here specifically to fix the pickup\n * address (e.g. the \"Configure it now\" alert on Overview) — \"Settings\" on\n * its own drops the seller on Organization Details with no clue where\n * \"Fulfillment\" even is, so scroll to and briefly highlight it instead. */\n focusFulfillment?: boolean;\n onFocusFulfillmentHandled?: () => void;\n}> = ({\n org,\n pickupAddresses,\n pickupAddressesLoading,\n refetchPickupAddresses,\n focusFulfillment,\n onFocusFulfillmentHandled,\n}) => {\n const [highlightFulfillment, setHighlightFulfillment] = useState(false);\n useEffect(() => {\n if (!focusFulfillment) return;\n const el = document.getElementById(\"fulfillment-section\");\n el?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n setHighlightFulfillment(true);\n const timeout = setTimeout(() => setHighlightFulfillment(false), 2500);\n onFocusFulfillmentHandled?.();\n return () => clearTimeout(timeout);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only re-run when focusFulfillment itself flips to true\n }, [focusFulfillment]);\n const { t } = useI18n();\n const { allowed: canUpdate } = useDevportalPermission(\n DEVPORTAL_PERMISSIONS.ORG_UPDATE,\n );\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n const [profileForm, setProfileForm] = useState({\n name: org.name,\n description: org.description ?? \"\",\n websiteUrl: org.websiteUrl ?? \"\",\n contactEmail: org.contactEmail ?? \"\",\n supportEmail: org.supportEmail ?? \"\",\n logoUrl: org.logoUrl ?? \"\",\n bannerUrl: org.bannerUrl ?? \"\",\n });\n const [legalForm, setLegalForm] = useState({\n legalEntityName: org.legalEntityName ?? \"\",\n legalEntityType: org.legalEntityType ?? \"\",\n });\n const [taxForm, setTaxForm] = useState({\n taxId: org.taxId ?? \"\",\n taxCountry: org.taxCountry ?? \"\",\n });\n const { locations: pickupLocations, refetch: refetchPickupLocations } =\n useCarrierPickupLocations();\n const [showRegisterPickupModal, setShowRegisterPickupModal] = useState(false);\n const [removeConfirmAddressId, setRemoveConfirmAddressId] = useState<\n string | null\n >(null);\n const [pickupActionPendingId, setPickupActionPendingId] = useState<\n string | null\n >(null);\n const [fulfillmentMessage, setFulfillmentMessage] = useState<string | null>(\n null,\n );\n const [fulfillmentError, setFulfillmentError] = useState<string | null>(null);\n const [saveMessage, setSaveMessage] = useState<string | null>(null);\n const [saveError, setSaveError] = useState<string | null>(null);\n const [verifyMethod, setVerifyMethod] = useState<string>(\"manual\");\n const [verifySuccess, setVerifySuccess] = useState(false);\n const [verificationNotes, setVerificationNotes] = useState(\"\");\n const [verificationEvidenceUrl, setVerificationEvidenceUrl] = useState(\"\");\n const [verificationDomain, setVerificationDomain] = useState(\"\");\n const [verificationDetails, setVerificationDetails] =\n useState<VerificationDetails | null>(null);\n const [verifying, setVerifying] = useState(false);\n const currentVerification = verificationDetails ?? {\n verificationMethod: org.verificationMethod,\n verificationRequestedAt: org.verificationRequestedAt,\n verificationStatus: org.verificationStatus,\n verificationRequestNotes: org.verificationRequestNotes,\n verificationRejectedReason: org.verificationRejectedReason,\n };\n const verificationReadinessIssues: string[] = [];\n if (!profileForm.contactEmail.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.contactEmailRequired\", \"Contact email is required\"),\n );\n } else if (!isLikelyEmail(profileForm.contactEmail)) {\n verificationReadinessIssues.push(\n tr(\"devportal.contactEmailInvalid\", \"Contact email must be valid\"),\n );\n }\n if (\n profileForm.supportEmail.trim() &&\n !isLikelyEmail(profileForm.supportEmail)\n ) {\n verificationReadinessIssues.push(\n tr(\"devportal.supportEmailInvalid\", \"Support email must be valid\"),\n );\n }\n if (!profileForm.websiteUrl.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.websiteRequired\", \"Website URL is required\"),\n );\n } else if (!isLikelyUrl(profileForm.websiteUrl)) {\n verificationReadinessIssues.push(\n tr(\"devportal.websiteInvalid\", \"Website URL must be valid\"),\n );\n }\n if (!legalForm.legalEntityName.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.legalEntityNameRequired\", \"Legal entity name is required\"),\n );\n }\n if (!legalForm.legalEntityType.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.legalEntityTypeRequired\", \"Entity type is required\"),\n );\n }\n if (!taxForm.taxId.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.taxIdRequired\", \"Tax ID is required\"),\n );\n }\n if (!taxForm.taxCountry.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.taxCountryRequired\", \"Tax country is required\"),\n );\n } else if (!/^[A-Za-z]{2}$/.test(taxForm.taxCountry.trim())) {\n verificationReadinessIssues.push(\n tr(\"devportal.taxCountryInvalid\", \"Tax country must be a 2-letter code\"),\n );\n }\n const verificationFormIssues: string[] = [];\n if (verifyMethod === \"domain\" && !isLikelyDomain(verificationDomain.trim())) {\n verificationFormIssues.push(\n tr(\n \"devportal.verification.errors.domainRequired\",\n \"Enter a valid domain like burdenoff.com\",\n ),\n );\n }\n if (\n verifyMethod === \"document\" &&\n !isLikelyUrl(verificationEvidenceUrl.trim())\n ) {\n verificationFormIssues.push(\n tr(\n \"devportal.verification.errors.evidenceUrlRequired\",\n \"Enter a valid evidence URL starting with http:// or https://\",\n ),\n );\n }\n if (verifyMethod === \"manual\" && !verificationNotes.trim()) {\n verificationFormIssues.push(\n tr(\n \"devportal.verification.errors.notesRequired\",\n \"Add notes so the reviewer knows what to verify\",\n ),\n );\n }\n const canSubmitVerification =\n verificationReadinessIssues.length === 0 &&\n verificationFormIssues.length === 0 &&\n !verifying &&\n canUpdate;\n const [updateOrganization, { loading: updatingOrg }] =\n useUpdateOrganizationMutation({\n refetchQueries: [\"GetOrganization\"],\n });\n const [updateOrgLegalInfo, { loading: updatingLegal }] =\n useUpdateOrgLegalInfoMutation({\n refetchQueries: [\"GetOrganization\"],\n });\n const [updateOrgTaxInfo, { loading: updatingTax }] =\n useUpdateOrgTaxInfoMutation({\n refetchQueries: [\"GetOrganization\"],\n });\n useEffect(() => {\n setProfileForm({\n name: org.name,\n description: org.description ?? \"\",\n websiteUrl: org.websiteUrl ?? \"\",\n contactEmail: org.contactEmail ?? \"\",\n supportEmail: org.supportEmail ?? \"\",\n logoUrl: org.logoUrl ?? \"\",\n bannerUrl: org.bannerUrl ?? \"\",\n });\n setLegalForm({\n legalEntityName: org.legalEntityName ?? \"\",\n legalEntityType: org.legalEntityType ?? \"\",\n });\n setTaxForm({\n taxId: org.taxId ?? \"\",\n taxCountry: org.taxCountry ?? \"\",\n });\n }, [org.id]);\n\n useEffect(() => {\n if (!org.id) return;\n void graphqlFetch<{ developerOrganization: VerificationDetails | null }>({\n gateway: \"global\",\n query: ORGANIZATION_VERIFICATION_QUERY,\n variables: { id: org.id },\n })\n .then((result) =>\n setVerificationDetails(result.data?.developerOrganization ?? null),\n )\n .catch(() => setVerificationDetails(null));\n }, [org.id, verifySuccess]);\n\n const handleProfileSave = async () => {\n setSaveError(null);\n setSaveMessage(null);\n try {\n await updateOrganization({\n variables: {\n id: org.id,\n input: {\n name: profileForm.name.trim() || undefined,\n description: profileForm.description.trim() || null,\n websiteUrl: profileForm.websiteUrl.trim() || null,\n contactEmail: profileForm.contactEmail.trim() || null,\n supportEmail: profileForm.supportEmail.trim() || null,\n logoUrl: profileForm.logoUrl.trim() || null,\n bannerUrl: profileForm.bannerUrl.trim() || null,\n },\n },\n });\n setSaveMessage(\n tr(\"devportal.organizationUpdated\", \"Organization details updated\"),\n );\n } catch (error) {\n setSaveError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.failedToUpdateOrganization\",\n \"Failed to update organization\",\n ),\n );\n }\n };\n\n const handleLegalSave = async () => {\n setSaveError(null);\n setSaveMessage(null);\n try {\n await updateOrgLegalInfo({\n variables: {\n id: org.id,\n input: {\n legalEntityName: legalForm.legalEntityName.trim() || null,\n legalEntityType: legalForm.legalEntityType.trim() || null,\n },\n },\n });\n setSaveMessage(\n tr(\"devportal.legalInfoUpdated\", \"Legal information updated\"),\n );\n } catch (error) {\n setSaveError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.failedToUpdateLegalInfo\",\n \"Failed to update legal information\",\n ),\n );\n }\n };\n\n const handleTaxSave = async () => {\n setSaveError(null);\n setSaveMessage(null);\n try {\n await updateOrgTaxInfo({\n variables: {\n id: org.id,\n input: {\n taxId: taxForm.taxId.trim() || null,\n taxCountry: taxForm.taxCountry.trim() || null,\n },\n },\n });\n setSaveMessage(tr(\"devportal.taxInfoUpdated\", \"Tax information updated\"));\n } catch (error) {\n setSaveError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.failedToUpdateTaxInfo\",\n \"Failed to update tax information\",\n ),\n );\n }\n };\n\n const handleSetDefaultPickupAddress = async (addressId: string) => {\n setFulfillmentError(null);\n setFulfillmentMessage(null);\n setPickupActionPendingId(addressId);\n try {\n const result = await graphqlFetch<{\n setDefaultPickupAddress: { id: string };\n }>({\n gateway: \"global\",\n query: `\n mutation DevportalSetDefaultPickupAddress($id: ID!) {\n setDefaultPickupAddress(id: $id) {\n id\n }\n }\n `,\n variables: { id: addressId },\n });\n if (result.errors?.length) {\n throw new Error(\n result.errors[0]?.message ?? \"Failed to switch pickup address\",\n );\n }\n // Without this, refetchPickupAddresses would serve the pre-mutation\n // list back from graphqlFetch's short-lived response cache (same\n // query+variables), hiding the new default until a full reload.\n clearGraphqlFetchResponseCache();\n refetchPickupAddresses();\n setFulfillmentMessage(\n tr(\"devportal.pickupAddressSetActive\", \"Pickup address updated\"),\n );\n } catch (error) {\n setFulfillmentError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.failedToSwitchPickupAddress\",\n \"Failed to switch pickup address\",\n ),\n );\n } finally {\n setPickupActionPendingId(null);\n }\n };\n\n const handleRemovePickupAddress = async (addressId: string) => {\n setFulfillmentError(null);\n setFulfillmentMessage(null);\n setPickupActionPendingId(addressId);\n try {\n const result = await graphqlFetch<{\n removeDeveloperOrgPickupAddress: boolean;\n }>({\n gateway: \"global\",\n query: `\n mutation DevportalRemoveOrgPickupAddress($id: ID!) {\n removeDeveloperOrgPickupAddress(id: $id)\n }\n `,\n variables: { id: addressId },\n });\n if (result.errors?.length) {\n throw new Error(\n result.errors[0]?.message ?? \"Failed to remove pickup address\",\n );\n }\n clearGraphqlFetchResponseCache();\n refetchPickupAddresses();\n setFulfillmentMessage(\n tr(\"devportal.pickupAddressRemoved\", \"Pickup address removed\"),\n );\n } catch (error) {\n setFulfillmentError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.failedToRemovePickupAddress\",\n \"Failed to remove pickup address\",\n ),\n );\n } finally {\n setPickupActionPendingId(null);\n setRemoveConfirmAddressId(null);\n }\n };\n\n return (\n <div className=\"space-y-6 max-w-2xl\">\n {saveError && (\n <div className=\"rounded-md border border-status-error-bg bg-status-error-bg-subtle px-4 py-3 text-sm text-status-error-text\">\n {saveError}\n </div>\n )}\n {saveMessage && (\n <div className=\"rounded-md border border-status-success-bg bg-status-success-bg-subtle px-4 py-3 text-sm text-status-success-text\">\n {saveMessage}\n </div>\n )}\n <PageSection\n title={tr(\"devportal.organizationDetails\", \"Organization Details\")}\n >\n <div className=\"space-y-4\">\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <InputField\n label={tr(\"devportal.organizationName\", \"Organization Name\")}\n value={profileForm.name}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n name: event.target.value,\n }))\n }\n disabled={!canUpdate}\n required\n />\n <InputField\n label={tr(\"devportal.slug\", \"Slug\")}\n value={org.slug}\n disabled\n hint={tr(\"devportal.slugReadOnly\", \"Slug cannot be changed here\")}\n />\n </div>\n <TextareaField\n label={tr(\"devportal.description\", \"Description\")}\n value={profileForm.description}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n description: event.target.value,\n }))\n }\n disabled={!canUpdate}\n rows={4}\n />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <InputField\n label={tr(\"devportal.website\", \"Website\")}\n type=\"url\"\n value={profileForm.websiteUrl}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n websiteUrl: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.contactEmail\", \"Contact Email\")}\n type=\"email\"\n value={profileForm.contactEmail}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n contactEmail: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.supportEmail\", \"Support Email\")}\n type=\"email\"\n value={profileForm.supportEmail}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n supportEmail: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.logoUrl\", \"Logo URL\")}\n type=\"url\"\n value={profileForm.logoUrl}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n logoUrl: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n </div>\n <InputField\n label={tr(\"devportal.bannerUrl\", \"Banner URL\")}\n type=\"url\"\n value={profileForm.bannerUrl}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n bannerUrl: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <DetailList\n items={[\n {\n label: tr(\"devportal.organizationId\", \"Organization ID\"),\n value: <code className=\"text-xs\">{org.id}</code>,\n },\n { label: tr(\"devportal.tier\", \"Tier\"), value: org.tier },\n {\n label: tr(\"devportal.partnerTier\", \"Partner Tier\"),\n value: org.partnerTier || tr(\"devportal.none\", \"None\"),\n },\n {\n label: tr(\"devportal.created\", \"Created\"),\n value: new Date(org.createdAt).toLocaleDateString(),\n },\n {\n label: tr(\"devportal.platformFeeRate\", \"Platform Fee Rate\"),\n value: `${(org.platformFeeRate * 100).toFixed(0)}%`,\n },\n ]}\n />\n <div className=\"flex justify-end\">\n <button\n type=\"button\"\n disabled={!canUpdate || updatingOrg}\n onClick={() => void handleProfileSave()}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {updatingOrg ? (\n <Loader2 size={14} className=\"animate-spin\" />\n ) : (\n <Settings size={14} />\n )}\n {tr(\"devportal.saveChanges\", \"Save Changes\")}\n </button>\n </div>\n </div>\n </PageSection>\n\n <PageSection\n title={tr(\"devportal.legalInformation\", \"Legal Information\")}\n >\n <div className=\"space-y-4\">\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <InputField\n label={tr(\"devportal.legalEntityName\", \"Legal Entity Name\")}\n value={legalForm.legalEntityName}\n onChange={(event) =>\n setLegalForm((current) => ({\n ...current,\n legalEntityName: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.entityType\", \"Entity Type\")}\n value={legalForm.legalEntityType}\n onChange={(event) =>\n setLegalForm((current) => ({\n ...current,\n legalEntityType: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.taxId\", \"Tax ID\")}\n value={taxForm.taxId}\n onChange={(event) =>\n setTaxForm((current) => ({\n ...current,\n taxId: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.taxCountry\", \"Tax Country\")}\n value={taxForm.taxCountry}\n onChange={(event) =>\n setTaxForm((current) => ({\n ...current,\n taxCountry: event.target.value.toUpperCase(),\n }))\n }\n disabled={!canUpdate}\n />\n </div>\n <DetailList\n items={[\n {\n label: tr(\"devportal.taxForm\", \"Tax Form\"),\n value:\n org.taxFormType ||\n tr(\"devportal.notSubmitted\", \"Not submitted\"),\n },\n {\n label: tr(\"devportal.taxFormStatus\", \"Tax Form Status\"),\n value: !org.taxFormType ? (\n tr(\"devportal.notSubmitted\", \"Not submitted\")\n ) : org.taxFormVerified ? (\n <span className=\"text-status-success-text flex items-center gap-1\">\n <CheckCircle size={14} />{\" \"}\n {tr(\"devportal.verified\", \"Verified\")}\n </span>\n ) : (\n tr(\"devportal.pendingVerification\", \"Pending verification\")\n ),\n },\n ]}\n />\n <div className=\"flex justify-end gap-2\">\n <button\n type=\"button\"\n disabled={!canUpdate || updatingLegal}\n onClick={() => void handleLegalSave()}\n className=\"inline-flex items-center gap-2 rounded-md border border-border-seam px-4 py-2 text-sm font-medium hover:bg-bg-sunken disabled:opacity-50\"\n >\n {updatingLegal ? (\n <Loader2 size={14} className=\"animate-spin\" />\n ) : null}\n {tr(\"devportal.saveLegalInfo\", \"Save Legal Info\")}\n </button>\n <button\n type=\"button\"\n disabled={!canUpdate || updatingTax}\n onClick={() => void handleTaxSave()}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {updatingTax ? (\n <Loader2 size={14} className=\"animate-spin\" />\n ) : null}\n {tr(\"devportal.saveTaxInfo\", \"Save Tax Info\")}\n </button>\n </div>\n </div>\n </PageSection>\n\n {org.kind === \"PHYSICAL\" && (\n <PageSection\n id=\"fulfillment-section\"\n title={tr(\"devportal.fulfillment\", \"Fulfillment\")}\n className={cn(\n \"scroll-mt-6 rounded-lg transition-shadow duration-500\",\n highlightFulfillment &&\n \"ring-2 ring-action-primary-bg ring-offset-4\",\n )}\n >\n <div className=\"space-y-3\">\n {fulfillmentError && (\n <div className=\"rounded-md border border-status-error-bg bg-status-error-bg-subtle px-4 py-3 text-sm text-status-error-text\">\n {fulfillmentError}\n </div>\n )}\n {fulfillmentMessage && (\n <div className=\"rounded-md border border-status-success-bg bg-status-success-bg-subtle px-4 py-3 text-sm text-status-success-text\">\n {fulfillmentMessage}\n </div>\n )}\n\n {!pickupAddressesLoading && pickupAddresses.length === 0 && (\n <div className=\"rounded-md border border-border-seam bg-bg-sunken p-4\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.noPickupAddress\",\n \"No pickup address set up yet\",\n )}\n </p>\n <p className=\"mt-1 text-sm text-text-secondary\">\n {tr(\n \"devportal.noPickupAddressHint\",\n \"Buyers need to know where your physical orders actually ship from — a bare pincode isn't enough, two sellers can share one. Add your real pickup address and we'll register it with our shipping carrier for you, free of charge.\",\n )}\n </p>\n </div>\n )}\n\n {pickupAddresses.length > 0 && (\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n {pickupAddresses.map((pickupAddress) => {\n const isRegisteredWithCarrier = pickupLocations.some(\n (location) =>\n location.carrier === pickupAddress.carrier &&\n location.postalCode === pickupAddress.postalCode,\n );\n const isPending = pickupActionPendingId === pickupAddress.id;\n\n return (\n <div\n key={pickupAddress.id}\n className={cn(\n \"rounded-md border p-4\",\n pickupAddress.isDefault\n ? \"border-status-success-border bg-status-success-bg-subtle\"\n : \"border-border-seam bg-bg-sunken\",\n )}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <p className=\"text-sm font-medium\">\n {pickupAddress.carrierLocationLabel}\n </p>\n {pickupAddress.isDefault && (\n <span className=\"rounded-full bg-status-success-bg px-2 py-0.5 text-xs font-medium text-white\">\n {tr(\"devportal.active\", \"Active\")}\n </span>\n )}\n </div>\n <p className=\"mt-1 text-sm text-text-secondary\">\n {pickupAddress.address}\n {pickupAddress.addressLine2\n ? `, ${pickupAddress.addressLine2}`\n : \"\"}\n , {pickupAddress.city}, {pickupAddress.state}{\" \"}\n {pickupAddress.postalCode}, {pickupAddress.country}\n </p>\n <p className=\"mt-1 text-xs text-text-secondary\">\n {capitalizeCarrierName(pickupAddress.carrier)}\n </p>\n {!isRegisteredWithCarrier && (\n <p className=\"mt-2 text-xs text-status-error-text\">\n {tr(\n \"devportal.pickupAddressNotRegisteredHint\",\n \"Not currently registered with the carrier — physical orders can't auto-ship from this address right now.\",\n )}\n </p>\n )}\n\n {canUpdate && (\n <div className=\"mt-3 flex items-center gap-4\">\n {!pickupAddress.isDefault && (\n <button\n type=\"button\"\n disabled={isPending}\n onClick={() =>\n void handleSetDefaultPickupAddress(\n pickupAddress.id,\n )\n }\n className=\"text-sm font-medium text-action-primary-text hover:underline disabled:opacity-50\"\n >\n {tr(\n \"devportal.setPickupAddressActiveCta\",\n \"Set as active\",\n )}\n </button>\n )}\n <button\n type=\"button\"\n disabled={isPending}\n onClick={() =>\n setRemoveConfirmAddressId(pickupAddress.id)\n }\n className=\"flex items-center gap-1.5 text-sm text-status-error-text hover:underline disabled:opacity-50\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n {tr(\"devportal.removePickupAddressCta\", \"Remove\")}\n </button>\n </div>\n )}\n </div>\n );\n })}\n </div>\n )}\n\n {canUpdate && (\n <div className=\"flex justify-end\">\n <button\n type=\"button\"\n onClick={() => setShowRegisterPickupModal(true)}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus size={14} />\n {tr(\"devportal.addPickupAddressCta\", \"Add pickup address\")}\n </button>\n </div>\n )}\n\n {showRegisterPickupModal && (\n <RegisterPickupLocationModal\n open={showRegisterPickupModal}\n onOpenChange={setShowRegisterPickupModal}\n organizationId={org.id}\n // Only carrier that supports self-service registration\n // today — becomes a real choice once more adapters\n // implement registerPickupLocation().\n carrier=\"shiprocket\"\n onRegistered={() => {\n refetchPickupAddresses();\n refetchPickupLocations();\n setFulfillmentMessage(\n tr(\"devportal.pickupAddressAdded\", \"Pickup address added\"),\n );\n }}\n />\n )}\n\n <ConfirmDialog\n open={removeConfirmAddressId !== null}\n onOpenChange={(open) => {\n if (!open) setRemoveConfirmAddressId(null);\n }}\n variant=\"danger\"\n loading={pickupActionPendingId === removeConfirmAddressId}\n title={tr(\n \"devportal.removePickupAddressConfirmTitle\",\n \"Remove this pickup address?\",\n )}\n description={tr(\n \"devportal.removePickupAddressConfirmDesc\",\n \"We'll stop using it to quote and book shipments for this organization. Carriers like Shiprocket don't offer a way to delete an address from their own account once added, so it may still show up there, but it won't be used for your orders anymore.\",\n )}\n confirmLabel={tr(\"devportal.remove\", \"Remove\")}\n cancelLabel={tr(\"devportal.cancel\", \"Cancel\")}\n onConfirm={async () => {\n if (removeConfirmAddressId) {\n await handleRemovePickupAddress(removeConfirmAddressId);\n }\n }}\n />\n </div>\n </PageSection>\n )}\n\n <PageSection\n title={tr(\"devportal.verificationStatus\", \"Verification Status\")}\n >\n <DetailList\n items={[\n {\n label: tr(\"devportal.verifiedLabel\", \"Verified\"),\n value:\n currentVerification.verificationStatus === \"VERIFIED\" ? (\n <span className=\"text-status-success-text flex items-center gap-1\">\n <CheckCircle size={14} />{\" \"}\n {tr(\"devportal.verifiedVia\", \"Verified via\")}{\" \"}\n {currentVerification.verificationMethod}\n </span>\n ) : currentVerification.verificationStatus === \"PENDING\" ? (\n tr(\"devportal.pendingVerification\", \"Pending verification\")\n ) : currentVerification.verificationStatus === \"REJECTED\" ? (\n tr(\"devportal.verificationRejected\", \"Rejected\")\n ) : (\n tr(\"devportal.notVerified\", \"Not verified\")\n ),\n },\n {\n label: tr(\"devportal.certifiedLabel\", \"Certified\"),\n value: org.isCertified ? (\n <span className=\"text-accent-blue flex items-center gap-1\">\n <Shield size={14} />{\" \"}\n {tr(\"devportal.certifiedUntil\", \"Certified until\")}{\" \"}\n {org.certificationExpiry\n ? new Date(org.certificationExpiry).toLocaleDateString()\n : \"N/A\"}\n </span>\n ) : (\n tr(\"devportal.notCertified\", \"Not certified\")\n ),\n },\n ]}\n />\n {currentVerification.verificationStatus !== \"VERIFIED\" && (\n <div className=\"mt-4 rounded-md border border-border-subtle p-4 space-y-3\">\n {verifySuccess ? (\n <p className=\"text-sm text-status-success-text flex items-center gap-2\">\n <CheckCircle size={14} />\n {tr(\n \"devportal.verificationRequested\",\n \"Verification request submitted. Our team will review and contact you.\",\n )}\n </p>\n ) : (\n <>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n \"devportal.requestVerificationHint\",\n \"Get your organization verified to build trust with users. Choose a verification method:\",\n )}\n </p>\n {currentVerification.verificationStatus === \"PENDING\" && (\n <div className=\"rounded-md border border-border-subtle bg-bg-sunken/40 p-3 text-sm text-text-secondary\">\n {tr(\n \"devportal.pendingVerification\",\n \"Pending verification\",\n )}\n {currentVerification.verificationMethod\n ? ` · ${currentVerification.verificationMethod}`\n : \"\"}\n {currentVerification.verificationRequestNotes\n ? ` · ${currentVerification.verificationRequestNotes}`\n : \"\"}\n </div>\n )}\n {currentVerification.verificationStatus === \"REJECTED\" &&\n currentVerification.verificationRejectedReason && (\n <div className=\"rounded-md border border-status-error-border bg-status-error-bg-subtle p-3 text-sm text-status-error-text\">\n {currentVerification.verificationRejectedReason}\n </div>\n )}\n {verificationReadinessIssues.length > 0 && (\n <div className=\"rounded-md border border-border-subtle bg-bg-sunken/40 p-3 text-sm text-text-secondary\">\n <div className=\"font-medium text-text-primary\">\n {tr(\n \"devportal.completeBeforeVerification\",\n \"Complete these details before submitting for review\",\n )}\n </div>\n <ul className=\"mt-2 list-disc pl-5 space-y-1\">\n {verificationReadinessIssues.map((issue) => (\n <li key={issue}>{issue}</li>\n ))}\n </ul>\n </div>\n )}\n {currentVerification.verificationStatus !== \"PENDING\" && (\n <>\n <div className=\"flex gap-2 flex-wrap\">\n {[\"domain\", \"document\", \"manual\"].map((m) => (\n <button\n key={m}\n type=\"button\"\n onClick={() => setVerifyMethod(m)}\n className={`rounded-md border px-3 py-1 text-xs font-medium transition-colors ${\n verifyMethod === m\n ? \"bg-action-primary-bg text-action-primary-text border-primary\"\n : \"border-border-subtle hover:bg-bg-sunken\"\n }`}\n >\n {m === \"domain\"\n ? tr(\"devportal.domainVerification\", \"Domain\")\n : m === \"document\"\n ? tr(\"devportal.documentVerification\", \"Document\")\n : tr(\n \"devportal.manualVerification\",\n \"Manual review\",\n )}\n </button>\n ))}\n </div>\n {verifyMethod === \"domain\" ? (\n <InputField\n label={tr(\"devportal.domainVerification\", \"Domain\")}\n value={verificationDomain}\n onChange={(event) =>\n setVerificationDomain(event.target.value)\n }\n placeholder=\"example.com\"\n />\n ) : verifyMethod === \"document\" ? (\n <InputField\n label={tr(\"devportal.evidenceUrl\", \"Evidence URL\")}\n value={verificationEvidenceUrl}\n onChange={(event) =>\n setVerificationEvidenceUrl(event.target.value)\n }\n placeholder=\"https://...\"\n />\n ) : null}\n <TextareaField\n label={tr(\"devportal.notes\", \"Notes\")}\n value={verificationNotes}\n onChange={(event) =>\n setVerificationNotes(event.target.value)\n }\n placeholder=\"What should reviewers validate?\"\n />\n <button\n type=\"button\"\n disabled={!canSubmitVerification}\n onClick={() =>\n void (async () => {\n const trimmedDomain = verificationDomain.trim();\n const trimmedEvidenceUrl =\n verificationEvidenceUrl.trim();\n const trimmedNotes = verificationNotes.trim();\n\n if (\n verifyMethod === \"domain\" &&\n !isLikelyDomain(trimmedDomain)\n ) {\n setSaveError(\n tr(\n \"devportal.verification.errors.domainRequired\",\n \"Enter a valid domain like burdenoff.com\",\n ),\n );\n return;\n }\n\n if (\n verifyMethod === \"document\" &&\n !isLikelyUrl(trimmedEvidenceUrl)\n ) {\n setSaveError(\n tr(\n \"devportal.verification.errors.evidenceUrlRequired\",\n \"Enter a valid evidence URL starting with http:// or https://\",\n ),\n );\n return;\n }\n\n if (verifyMethod === \"manual\" && !trimmedNotes) {\n setSaveError(\n tr(\n \"devportal.verification.errors.notesRequired\",\n \"Add notes so the reviewer knows what to verify\",\n ),\n );\n return;\n }\n\n setSaveError(null);\n setSaveMessage(null);\n setVerifying(true);\n try {\n await updateOrganization({\n variables: {\n id: org.id,\n input: {\n name: profileForm.name.trim() || undefined,\n description:\n profileForm.description.trim() || null,\n websiteUrl:\n profileForm.websiteUrl.trim() || null,\n contactEmail:\n profileForm.contactEmail.trim() || null,\n supportEmail:\n profileForm.supportEmail.trim() || null,\n logoUrl: profileForm.logoUrl.trim() || null,\n bannerUrl:\n profileForm.bannerUrl.trim() || null,\n },\n },\n });\n\n await updateOrgLegalInfo({\n variables: {\n id: org.id,\n input: {\n legalEntityName:\n legalForm.legalEntityName.trim() || null,\n legalEntityType:\n legalForm.legalEntityType.trim() || null,\n },\n },\n });\n\n await updateOrgTaxInfo({\n variables: {\n id: org.id,\n input: {\n taxId: taxForm.taxId.trim() || null,\n taxCountry: taxForm.taxCountry.trim() || null,\n },\n },\n });\n\n const submitResult = await graphqlFetch({\n gateway: \"global\",\n query: REQUEST_ORG_VERIFICATION_MUTATION,\n variables: {\n id: org.id,\n method: verifyMethod,\n notes: trimmedNotes || null,\n evidenceUrl:\n verifyMethod === \"domain\"\n ? null\n : trimmedEvidenceUrl || null,\n domain:\n verifyMethod === \"domain\"\n ? trimmedDomain || null\n : null,\n },\n });\n if (submitResult.errors?.length) {\n throw new Error(\n submitResult.errors[0]?.message ||\n \"Verification request failed\",\n );\n }\n setVerifySuccess(true);\n setSaveMessage(\n tr(\n \"devportal.verificationRequested\",\n \"Verification request submitted. Our team will review and contact you.\",\n ),\n );\n const refreshed = await graphqlFetch<{\n developerOrganization: VerificationDetails | null;\n }>({\n gateway: \"global\",\n query: ORGANIZATION_VERIFICATION_QUERY,\n variables: { id: org.id },\n });\n setVerificationDetails(\n refreshed.data?.developerOrganization ?? null,\n );\n } catch (error) {\n setSaveError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.verificationRequestFailed\",\n \"Verification request failed\",\n ),\n );\n } finally {\n setVerifying(false);\n }\n })()\n }\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {verifying ? (\n <Loader2 size={14} className=\"animate-spin\" />\n ) : (\n <Shield size={14} />\n )}\n {tr(\n \"devportal.requestVerification\",\n \"Request Verification\",\n )}\n </button>\n </>\n )}\n </>\n )}\n </div>\n )}\n </PageSection>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OrganizationDetailPage.js","names":["_Fragment","EmptyState","EmptyState$1","ORGANIZATION_VERIFICATION_QUERY","REQUEST_ORG_VERIFICATION_MUTATION","mapOrganization","rawOrg","org","mapMember","member","isLikelyDomain","trimmed","value","isLikelyUrl","url","isLikelyEmail","ORG_ROLE_PRIORITY","OrganizationDetailPage","useDevportal","isSeller","useIsSellerSection","id","useParams","pickupAddresses","pickupAddressesLoading","refetchPickupAddresses","useOrganizationPickupAddresses","revenueSummaryData","useGetRevenueSummaryQuery","orgCurrency","useI18n","tr","t","key","fallback","activeTab","setActiveTab","useState","focusFulfillment","setFocusFulfillment","useGetOrganizationQuery","resolvedData","data","previousData","appsData","useGetApplicationsQuery","isPhysicalOrg","publisherData","useGetMyPublisherQuery","physicalItemsData","useGetOrgPhysicalItemsQuery","physicalItems","allTabs","Building2","AppWindow","Users","Settings","provisionalMembers","currentRole","currentUser","canCreateApps","canManageOrg","canViewRevenue","canInviteMembers","tabs","tab","handleNavigate","basePath","path","useEffect","setActivePhysicalOrgId","setActiveOrgId","name","reg","loading","PageLayout","orgSectionPath","Loader2","error","AlertCircle","members","apps","earningsUrl","navigate","DollarSign","Icon","cn","Alert","NextSteps","CreditCard","Plus","OverviewTab","AppsTab","MembersTab","SettingsTab","EmphasisPanel","StatCardGrid","Fragment","StatCard","TrendingUp","formatCurrency","currency","BarChart3","PageSection","onShowApps","ArrowRight","PhysicalItemListItem","onNavigate","item","AppListItem","app","ORG_ROLE_LABELS","ExternalLink","isPhysical","items","createPath","createLabel","searchQuery","setSearchQuery","normalizedQuery","filteredItems","isSearching","Search","ITEM_STATUS_STYLES","event","onClick","orgId","DataTable","highlightFulfillment","setHighlightFulfillment","timeout","onFocusFulfillmentHandled","canUpdate","useDevportalPermission","DEVPORTAL_PERMISSIONS","profileForm","setProfileForm","legalForm","setLegalForm","taxForm","setTaxForm","pickupLocations","refetchPickupLocations","useCarrierPickupLocations","showRegisterPickupModal","setShowRegisterPickupModal","removeConfirmAddressId","setRemoveConfirmAddressId","pickupActionPendingId","setPickupActionPendingId","fulfillmentMessage","setFulfillmentMessage","fulfillmentError","setFulfillmentError","saveMessage","setSaveMessage","saveError","setSaveError","verifyMethod","setVerifyMethod","verifySuccess","setVerifySuccess","verificationNotes","setVerificationNotes","verificationEvidenceUrl","setVerificationEvidenceUrl","verificationDomain","setVerificationDomain","verificationDetails","setVerificationDetails","verifying","setVerifying","currentVerification","verificationReadinessIssues","verificationFormIssues","canSubmitVerification","updateOrganization","updatingOrg","useUpdateOrganizationMutation","updateOrgLegalInfo","updatingLegal","useUpdateOrgLegalInfoMutation","updateOrgTaxInfo","updatingTax","useUpdateOrgTaxInfoMutation","graphqlFetch","result","handleProfileSave","handleLegalSave","handleTaxSave","handleSetDefaultPickupAddress","addressId","clearGraphqlFetchResponseCache","handleRemovePickupAddress","InputField","current","TextareaField","DetailList","CheckCircle","isRegisteredWithCarrier","location","pickupAddress","isPending","capitalizeCarrierName","Trash2","RegisterPickupLocationModal","ConfirmDialog","open","Shield","issue","m","trimmedDomain","trimmedEvidenceUrl","trimmedNotes","submitResult","refreshed"],"sources":["../../../src/devportal/pages/OrganizationDetailPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useState, useEffect } from \"react\";\nimport { useParams } from \"react-router\";\nimport {\n useIsSellerSection,\n orgSectionPath,\n} from \"../hooks/useIsSellerSection\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport {\n Building2,\n Users,\n AppWindow,\n DollarSign,\n Settings,\n ExternalLink,\n CheckCircle,\n BarChart3,\n TrendingUp,\n ArrowRight,\n Plus,\n Shield,\n Loader2,\n AlertCircle,\n Trash2,\n CreditCard,\n Search,\n} from \"lucide-react\";\nimport { EmphasisPanel, NextSteps } from \"@burdenoff/fe-libs/ui\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { StatCard, StatCardGrid } from \"../components/StatCard\";\nimport { DataTable, DetailList } from \"../components/DataTable\";\nimport { AppListItem } from \"../components/AppCard\";\nimport { EmptyState } from \"../components/EmptyState\";\nimport { InputField, TextareaField } from \"../components/FormField\";\nimport { RegisterPickupLocationModal } from \"../components/RegisterPickupLocationModal\";\nimport { Alert, ConfirmDialog } from \"../components/ConfirmDialog\";\nimport {\n useCarrierPickupLocations,\n capitalizeCarrierName,\n} from \"../hooks/useCarrierPickupLocations\";\nimport {\n useOrganizationPickupAddresses,\n type OrganizationPickupAddress,\n} from \"../hooks/useOrganizationPickupAddresses\";\nimport { useDevportal } from \"../providers/DevportalProvider\";\nimport { DEVPORTAL_PERMISSIONS } from \"../constants/permissions\";\nimport { useDevportalPermission } from \"../hooks/usePermission\";\nimport type {\n DeveloperOrganization,\n Application,\n DeveloperOrgMember,\n} from \"../types\";\nimport { cn } from \"../utils/cn\";\nimport { formatCurrency } from \"../utils/currency\";\nimport { ORG_ROLE_LABELS } from \"../utils/constants\";\nimport {\n graphqlFetch,\n clearGraphqlFetchResponseCache,\n} from \"@burdenoff/fe-libs/shared/graphql\";\nimport {\n useGetOrganizationQuery,\n useGetApplicationsQuery,\n useGetRevenueSummaryQuery,\n useGetMyPublisherQuery,\n useGetOrgPhysicalItemsQuery,\n useUpdateOrganizationMutation,\n useUpdateOrgLegalInfoMutation,\n useUpdateOrgTaxInfoMutation,\n} from \"../../generated/global-operations\";\nimport type {\n OrganizationFieldsFragment,\n OrgMemberFieldsFragment,\n ApplicationFieldsFragment,\n GetOrgPhysicalItemsQuery,\n} from \"../../generated/global-operations\";\n\nconst ORGANIZATION_VERIFICATION_QUERY = `\n query OrganizationVerificationDetails($id: ID!) {\n developerOrganization(id: $id) {\n id\n verificationMethod\n verificationRequestedAt\n verificationStatus\n verificationRequestNotes\n verificationEvidenceUrl\n verificationDomain\n verificationRequestedBy\n verificationReviewedAt\n verificationReviewedBy\n verificationReviewNotes\n verificationRejectedReason\n }\n }\n`;\n\nconst REQUEST_ORG_VERIFICATION_MUTATION = `\n mutation RequestOrgVerificationExtended(\n $id: ID!\n $method: String!\n $notes: String\n $evidenceUrl: String\n $domain: String\n ) {\n requestOrgVerification(\n id: $id\n method: $method\n notes: $notes\n evidenceUrl: $evidenceUrl\n domain: $domain\n ) {\n id\n verificationMethod\n verificationRequestedAt\n verificationStatus\n verificationRequestNotes\n verificationEvidenceUrl\n verificationDomain\n verificationRejectedReason\n }\n }\n`;\n\n/**\n * Map GraphQL organization fragment to local type\n */\nfunction mapOrganization(\n org: OrganizationFieldsFragment,\n): DeveloperOrganization {\n const rawOrg = org as unknown as Record<string, unknown>;\n return {\n id: org.id,\n name: org.name,\n slug: org.slug,\n kind: org.kind as DeveloperOrganization[\"kind\"],\n description: org.description ?? undefined,\n logoUrl: org.logoUrl ?? undefined,\n bannerUrl: org.bannerUrl ?? undefined,\n websiteUrl: org.websiteUrl ?? undefined,\n contactEmail: org.contactEmail ?? undefined,\n supportEmail: org.supportEmail ?? undefined,\n tier: org.tier as DeveloperOrganization[\"tier\"],\n partnerTier:\n (org.partnerTier as DeveloperOrganization[\"partnerTier\"]) ?? undefined,\n partnerSince: org.partnerSince ?? undefined,\n isVerified: org.isVerified ?? false,\n verifiedAt: org.verifiedAt ?? undefined,\n verificationMethod: org.verificationMethod ?? undefined,\n verificationRequestedAt:\n typeof rawOrg.verificationRequestedAt === \"string\"\n ? rawOrg.verificationRequestedAt\n : undefined,\n verificationStatus:\n (rawOrg.verificationStatus as DeveloperOrganization[\"verificationStatus\"]) ??\n (org.isVerified ? \"VERIFIED\" : \"UNVERIFIED\"),\n verificationRequestNotes:\n typeof rawOrg.verificationRequestNotes === \"string\"\n ? rawOrg.verificationRequestNotes\n : undefined,\n verificationEvidenceUrl:\n typeof rawOrg.verificationEvidenceUrl === \"string\"\n ? rawOrg.verificationEvidenceUrl\n : undefined,\n verificationDomain:\n typeof rawOrg.verificationDomain === \"string\"\n ? rawOrg.verificationDomain\n : undefined,\n verificationRequestedBy:\n typeof rawOrg.verificationRequestedBy === \"string\"\n ? rawOrg.verificationRequestedBy\n : undefined,\n verificationReviewedAt:\n typeof rawOrg.verificationReviewedAt === \"string\"\n ? rawOrg.verificationReviewedAt\n : undefined,\n verificationReviewedBy:\n typeof rawOrg.verificationReviewedBy === \"string\"\n ? rawOrg.verificationReviewedBy\n : undefined,\n verificationReviewNotes:\n typeof rawOrg.verificationReviewNotes === \"string\"\n ? rawOrg.verificationReviewNotes\n : undefined,\n verificationRejectedReason:\n typeof rawOrg.verificationRejectedReason === \"string\"\n ? rawOrg.verificationRejectedReason\n : undefined,\n isCertified: org.isCertified ?? false,\n certifiedAt: org.certifiedAt ?? undefined,\n totalApps: org.totalApps ?? 0,\n publishedApps: org.publishedApps ?? 0,\n totalInstalls: org.totalInstalls ?? 0,\n activeInstalls: org.activeInstalls ?? 0,\n totalApiCalls: org.totalApiCalls ?? \"0\",\n averageRating: org.averageRating ?? undefined,\n totalRevenue: org.totalRevenue ?? 0,\n totalPlatformFees: org.totalPlatformFees ?? 0,\n totalPayouts: org.totalPayouts ?? 0,\n pendingBalance: org.pendingBalance ?? 0,\n lifetimeRevenue: org.lifetimeRevenue ?? 0,\n platformFeeRate: org.platformFeeRate ?? 0.3,\n apiCallsLimit: org.apiCallsLimit ?? 100000,\n storageLimit: org.storageLimit ?? \"1073741824\",\n apiCallsUsed: org.apiCallsUsed ?? \"0\",\n storageUsed: org.storageUsed ?? \"0\",\n taxId: org.taxId ?? undefined,\n taxCountry: org.taxCountry ?? undefined,\n taxFormVerified: org.taxFormVerified ?? false,\n legalEntityName: org.legalEntityName ?? undefined,\n legalEntityType: org.legalEntityType ?? undefined,\n billingAccountId: org.billingAccountId ?? undefined,\n pickupPostalCode: org.pickupPostalCode ?? undefined,\n createdAt: org.createdAt,\n updatedAt: org.updatedAt,\n };\n}\n\n/**\n * Map GraphQL member fragment to local type\n */\nfunction mapMember(member: OrgMemberFieldsFragment): DeveloperOrgMember {\n return {\n id: member.id,\n organizationId: member.organizationId,\n userId: member.userId,\n email: member.email ?? undefined,\n role: member.role as DeveloperOrgMember[\"role\"],\n isActive: member.isActive ?? true,\n isSuspended: member.isSuspended ?? false,\n suspendedAt: member.suspendedAt ?? undefined,\n suspendedReason: member.suspendedReason ?? undefined,\n joinedAt: member.joinedAt,\n permissions: member.permissions ?? undefined,\n invitedBy: member.invitedBy ?? undefined,\n invitationId: member.invitationId ?? undefined,\n createdAt: member.createdAt,\n updatedAt: member.updatedAt,\n };\n}\n\ntype TabId = \"overview\" | \"apps\" | \"members\" | \"settings\";\n\ninterface VerificationDetails {\n verificationMethod?: string;\n verificationRequestedAt?: string;\n verificationStatus?: \"UNVERIFIED\" | \"PENDING\" | \"VERIFIED\" | \"REJECTED\";\n verificationRequestNotes?: string;\n verificationEvidenceUrl?: string;\n verificationDomain?: string;\n verificationRequestedBy?: string;\n verificationReviewedAt?: string;\n verificationReviewedBy?: string;\n verificationReviewNotes?: string;\n verificationRejectedReason?: string;\n}\n\nfunction isLikelyDomain(value: string): boolean {\n const trimmed = value.trim().toLowerCase();\n return /^[a-z0-9.-]+\\.[a-z]{2,}$/i.test(trimmed) && !trimmed.includes(\"@\");\n}\n\nfunction isLikelyUrl(value: string): boolean {\n try {\n const url = new URL(value.trim());\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\nfunction isLikelyEmail(value: string): boolean {\n const trimmed = value.trim();\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmed);\n}\n\nconst ORG_ROLE_PRIORITY: Record<DeveloperOrgMember[\"role\"], number> = {\n VIEWER: 0,\n DEVELOPER: 1,\n ADMIN: 2,\n OWNER: 3,\n};\n\n/**\n * Organization detail page\n */\nexport const OrganizationDetailPage: FC = () => {\n const {\n navigate,\n basePath,\n setActiveOrgId,\n setActivePhysicalOrgId,\n currentUser,\n } = useDevportal();\n const isSeller = useIsSellerSection();\n const { orgId: id } = useParams<{ orgId: string }>();\n // Lifted up from SettingsTab (and called unconditionally, before the\n // loading/error early returns below, per Rules of Hooks) so the guided\n // next-steps banner — which renders above the tabs regardless of which\n // one is active — can reflect whether a pickup address is configured.\n const {\n addresses: pickupAddresses,\n loading: pickupAddressesLoading,\n refetch: refetchPickupAddresses,\n } = useOrganizationPickupAddresses(id);\n // Only fetched to label the org-level revenue rollups (org.totalRevenue\n // etc, which have no currency field of their own on the backend model)\n // with the org's real dominant currency instead of a hardcoded $/USD —\n // same field already relied on by RevenueDashboardPage and the billing\n // Marketplace earnings page.\n const { data: revenueSummaryData } = useGetRevenueSummaryQuery({\n variables: { organizationId: id ?? \"\", period: \"monthly\" },\n skip: !id,\n });\n const orgCurrency =\n revenueSummaryData?.developerOrgRevenueSummary?.currency ?? \"USD\";\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n const [activeTab, setActiveTab] = useState<TabId>(\"overview\");\n // Set when a CTA (the pickup-address alert below) needs Settings to not\n // just open, but scroll to and briefly highlight the Fulfillment section\n // specifically — \"go to Settings\" alone would drop the seller on\n // Organization Details with no clue where \"Fulfillment\" even is.\n const [focusFulfillment, setFocusFulfillment] = useState(false);\n\n // Fetch organization data\n const { data, previousData, loading, error } = useGetOrganizationQuery({\n variables: { id: id! },\n skip: !id,\n });\n const resolvedData = data ?? previousData;\n\n const { data: appsData } = useGetApplicationsQuery({\n variables: { limit: 50, organizationId: id },\n skip: !id,\n fetchPolicy: \"cache-and-network\",\n });\n\n const isPhysicalOrg =\n resolvedData?.developerOrganization?.kind === \"PHYSICAL\";\n // PHYSICAL orgs never own Applications (see DeveloperOrgKind / BOFF-7285)\n // — their real \"apps\" are physical items, fetched separately since\n // StoreProduct has no FK to DeveloperOrganization (only publisherId).\n const { data: publisherData } = useGetMyPublisherQuery({\n skip: !isPhysicalOrg,\n });\n const { data: physicalItemsData } = useGetOrgPhysicalItemsQuery({\n variables: { publisherId: publisherData?.myPublisher?.id ?? \"\", limit: 50 },\n skip: !isPhysicalOrg || !publisherData?.myPublisher?.id,\n fetchPolicy: \"cache-and-network\",\n });\n const physicalItems = physicalItemsData?.products ?? [];\n\n const allTabs: Array<{\n id: TabId;\n label: string;\n icon: FC<{ size?: number }>;\n }> = [\n {\n id: \"overview\",\n label: tr(\"devportal.overview\", \"Overview\"),\n icon: Building2,\n },\n {\n id: \"apps\",\n label: isPhysicalOrg\n ? tr(\"devportal.items\", \"Items\")\n : tr(\"devportal.applications\", \"Applications\"),\n icon: AppWindow,\n },\n { id: \"members\", label: tr(\"devportal.members\", \"Members\"), icon: Users },\n {\n id: \"settings\",\n label: tr(\"devportal.settings\", \"Settings\"),\n icon: Settings,\n },\n ];\n\n const provisionalMembers: DeveloperOrgMember[] = (\n resolvedData?.developerOrganization?.members ?? []\n ).map(mapMember);\n const currentMembership = currentUser\n ? provisionalMembers.find(\n (member: DeveloperOrgMember) => member.userId === currentUser.id,\n )\n : undefined;\n const currentRole: DeveloperOrgMember[\"role\"] | undefined =\n currentMembership?.role;\n const canCreateApps =\n currentRole !== undefined &&\n ORG_ROLE_PRIORITY[currentRole] >= ORG_ROLE_PRIORITY.DEVELOPER;\n const canManageOrg =\n currentRole !== undefined &&\n ORG_ROLE_PRIORITY[currentRole] >= ORG_ROLE_PRIORITY.ADMIN;\n const canViewRevenue = canManageOrg;\n const canInviteMembers = canManageOrg;\n const tabs = allTabs.filter((tab) => tab.id !== \"settings\" || canManageOrg);\n\n const handleNavigate = (path: string) => {\n navigate?.(`${basePath}${path}`);\n };\n\n // Sync the active-org slot so the dashboard/switcher scopes to whichever\n // org the user is browsing — the PHYSICAL slot when reached via the seller\n // portal, the regular (DIGITAL) slot otherwise. See DeveloperOrgKind\n // (BOFF-7285).\n useEffect(() => {\n if (!id) return;\n if (isSeller) {\n setActivePhysicalOrgId(id);\n } else {\n setActiveOrgId(id);\n }\n }, [id, isSeller, setActiveOrgId, setActivePhysicalOrgId]);\n\n useEffect(() => {\n if (activeTab === \"settings\" && !canManageOrg) {\n setActiveTab(\"overview\");\n }\n }, [activeTab, canManageOrg]);\n\n // Register org name in breadcrumb registry so the URL ID shows as the org name\n useEffect(() => {\n const name = resolvedData?.developerOrganization?.name;\n if (!id || !name) return;\n const reg = (\n window as unknown as {\n __breadcrumbRegistry?: {\n register: (id: string, name: string) => void;\n unregister: (id: string) => void;\n };\n }\n ).__breadcrumbRegistry;\n reg?.register(id, name);\n return () => reg?.unregister(id);\n }, [id, data?.developerOrganization?.name]);\n\n // Loading state — only block on initial load, not refetches (keeps SettingsTab mounted)\n if (loading && !resolvedData) {\n return (\n <PageLayout\n title={tr(\"devportal.loadingDots\", \"Loading...\")}\n backLink={`${basePath}${orgSectionPath(isSeller)}`}\n backLabel={tr(\"devportal.backToOrganizations\", \"Back to Organizations\")}\n >\n <div className=\"flex items-center justify-center py-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-text-secondary\" />\n </div>\n </PageLayout>\n );\n }\n\n // Error state\n if (error || !resolvedData?.developerOrganization) {\n return (\n <PageLayout\n title={tr(\"devportal.organizationNotFound\", \"Organization Not Found\")}\n backLink={`${basePath}${orgSectionPath(isSeller)}`}\n backLabel={tr(\"devportal.backToOrganizations\", \"Back to Organizations\")}\n >\n <div className=\"flex flex-col items-center justify-center py-12 gap-4\">\n <AlertCircle className=\"h-12 w-12 text-status-error-text\" />\n <h2 className=\"text-lg font-semibold\">\n {tr(\n \"devportal.organizationNotFoundLower\",\n \"Organization not found\",\n )}\n </h2>\n <p className=\"text-text-secondary\">\n {error?.message ||\n tr(\n \"devportal.organizationNotFoundDescription\",\n \"The organization you're looking for doesn't exist or you don't have access to it.\",\n )}\n </p>\n <button\n onClick={() => handleNavigate(orgSectionPath(isSeller))}\n className=\"mt-4 inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n {tr(\"devportal.backToOrganizations\", \"Back to Organizations\")}\n </button>\n </div>\n </PageLayout>\n );\n }\n\n // Map GraphQL data to local types\n const org = mapOrganization(resolvedData!.developerOrganization!);\n const members = provisionalMembers;\n const apps = (appsData?.applications?.edges?.map(\n (e: { node: ApplicationFieldsFragment }) => e.node,\n ) ?? []) as Application[];\n // So the Marketplace earnings page (a different MFE) can offer a way back\n // here without needing to know whether this org is PHYSICAL or DIGITAL\n // (it isn't in scope there) — see EarningsPage.tsx's `returnTo` handling.\n const earningsUrl = `/billing/earnings?developerOrgId=${encodeURIComponent(org.id)}&developerOrgName=${encodeURIComponent(org.name)}&returnTo=${encodeURIComponent(`${basePath}${orgSectionPath(isSeller, org.id)}`)}`;\n\n return (\n <PageLayout\n title={org.name}\n description={org.description}\n purpose={tr(\n \"devportal.orgDetailPurpose\",\n \"This is the home for one organization — the apps it owns, the people who can work on them, and its store and billing settings. Invite teammates, add apps, and verify the org so your published listings look trustworthy.\",\n )}\n backLink={`${basePath}${orgSectionPath(isSeller)}`}\n backLabel={tr(\"devportal.backToOrganizations\", \"Back to Organizations\")}\n actions={\n <div className=\"flex items-center gap-2\">\n {canViewRevenue ? (\n <button\n onClick={() => navigate?.(earningsUrl)}\n className=\"inline-flex items-center gap-2 rounded-md border px-4 py-2 text-sm font-medium hover:bg-bg-sunken transition-colors\"\n >\n <DollarSign size={16} />\n {tr(\"devportal.revenue\", \"Revenue\")}\n </button>\n ) : null}\n </div>\n }\n >\n {/* Tabs */}\n <div className=\"border-b\">\n <nav\n className=\"-mb-px flex gap-4 overflow-x-auto\"\n role=\"tablist\"\n aria-label={tr(\n \"devportal.organizationSections\",\n \"Organization sections\",\n )}\n >\n {tabs.map((tab) => {\n const Icon = tab.icon;\n return (\n <button\n key={tab.id}\n id={`organization-tab-${tab.id}`}\n role=\"tab\"\n aria-selected={activeTab === tab.id}\n aria-controls={`organization-panel-${tab.id}`}\n onClick={() => setActiveTab(tab.id)}\n className={cn(\n \"flex items-center gap-2 border-b-2 px-1 py-3 text-sm font-medium transition-colors\",\n activeTab === tab.id\n ? \"border-primary text-primary\"\n : \"border-transparent text-text-secondary hover:text-text-primary hover:border-muted-foreground\",\n )}\n >\n <Icon size={16} />\n {tab.label}\n </button>\n );\n })}\n </nav>\n </div>\n\n {/* Pickup address is a hard requirement for PHYSICAL orgs, not a soft\n suggestion — surfaced as a persistent, non-dismissible alert (unlike\n NextSteps below) so it can't be dismissed away and forgotten. */}\n {canManageOrg &&\n isSeller &&\n !pickupAddressesLoading &&\n pickupAddresses.length === 0 && (\n <Alert\n variant=\"warning\"\n title={tr(\n \"devportal.pickupAddressRequiredTitle\",\n \"Pickup address required\",\n )}\n className=\"mt-6\"\n >\n <p>\n {tr(\n \"devportal.pickupAddressRequiredDesc\",\n \"This organization sells physical items, so it needs a real pickup address before it's fully set up — buyers need to know where orders actually ship from.\",\n )}\n </p>\n <button\n type=\"button\"\n onClick={() => {\n setActiveTab(\"settings\");\n setFocusFulfillment(true);\n }}\n className=\"mt-2 text-sm font-semibold underline\"\n >\n {tr(\"devportal.pickupAddressRequiredCta\", \"Configure it now\")}\n </button>\n </Alert>\n )}\n\n {/* Guided next steps (dismissable) */}\n <NextSteps\n className=\"mt-6\"\n storageKey={`devportal-org-${org.id}`}\n steps={[\n ...(canInviteMembers\n ? [\n {\n id: \"invite-members\",\n label: tr(\"devportal.inviteMembers\", \"Invite members\"),\n description: tr(\n \"devportal.orgStepInvite\",\n \"Add teammates so they can build alongside you\",\n ),\n icon: <Users size={16} />,\n onClick: () => setActiveTab(\"members\"),\n },\n ]\n : []),\n ...(canManageOrg\n ? [\n {\n id: \"settings\",\n label: tr(\n \"devportal.orgStepVerify\",\n \"Complete organization profile\",\n ),\n description: tr(\n \"devportal.orgStepVerifyDesc\",\n \"Add a logo and details, then request verification\",\n ),\n icon: <Settings size={16} />,\n onClick: () => setActiveTab(\"settings\"),\n done: Boolean(org.isVerified),\n },\n ]\n : []),\n // Billing account applies to every org, physical or digital —\n // both need somewhere for sale/payout revenue to land.\n ...(canManageOrg\n ? [\n {\n id: \"link-billing\",\n label: tr(\n \"devportal.orgStepLinkBilling\",\n \"Link billing account\",\n ),\n description: tr(\n \"devportal.orgStepLinkBillingDesc\",\n \"Connect a billing account so sale and payout revenue has somewhere to go\",\n ),\n icon: <CreditCard size={16} />,\n onClick: () => navigate?.(earningsUrl),\n done: Boolean(org.billingAccountId),\n },\n ]\n : []),\n // A PHYSICAL org never owns Applications (see DeveloperOrgKind /\n // BOFF-7285) — offer listing a physical item instead of the\n // digital-app step.\n ...(canCreateApps && !isSeller\n ? [\n {\n id: \"create-app\",\n label: tr(\"devportal.createApp\", \"Create App\"),\n description: tr(\n \"devportal.orgStepCreateApp\",\n \"Build a new application under this organization\",\n ),\n icon: <AppWindow size={16} />,\n onClick: () => handleNavigate(\"/apps/new\"),\n },\n ]\n : []),\n ...(canCreateApps && isSeller\n ? [\n {\n id: \"list-item\",\n label: tr(\"devportal.listAnItem\", \"List an Item\"),\n description: tr(\n \"devportal.orgStepListItem\",\n \"List a physical product for sale under this organization\",\n ),\n icon: <Plus size={16} />,\n onClick: () => handleNavigate(\"/seller/items/new\"),\n },\n ]\n : []),\n ]}\n />\n\n {/* Tab content */}\n <div\n className=\"mt-6\"\n id={`organization-panel-${activeTab}`}\n role=\"tabpanel\"\n aria-labelledby={`organization-tab-${activeTab}`}\n tabIndex={0}\n >\n {activeTab === \"overview\" && (\n <OverviewTab\n org={org}\n apps={apps}\n physicalItems={physicalItems}\n members={members}\n canCreateApps={canCreateApps}\n canViewRevenue={canViewRevenue}\n currency={orgCurrency}\n onNavigate={handleNavigate}\n onShowApps={() => setActiveTab(\"apps\")}\n />\n )}\n {activeTab === \"apps\" && (\n <AppsTab\n org={org}\n apps={apps}\n physicalItems={physicalItems}\n onNavigate={handleNavigate}\n canCreateApps={canCreateApps}\n />\n )}\n {activeTab === \"members\" && (\n <MembersTab\n members={members}\n onNavigate={handleNavigate}\n orgId={org.id}\n canInviteMembers={canInviteMembers}\n />\n )}\n {activeTab === \"settings\" && canManageOrg && (\n <SettingsTab\n org={org}\n pickupAddresses={pickupAddresses}\n pickupAddressesLoading={pickupAddressesLoading}\n refetchPickupAddresses={refetchPickupAddresses}\n focusFulfillment={focusFulfillment}\n onFocusFulfillmentHandled={() => setFocusFulfillment(false)}\n />\n )}\n </div>\n </PageLayout>\n );\n};\n\n// Overview Tab\nconst OverviewTab: FC<{\n org: DeveloperOrganization;\n apps: Application[];\n physicalItems: PhysicalItem[];\n members: DeveloperOrgMember[];\n canCreateApps: boolean;\n canViewRevenue: boolean;\n currency: string;\n onNavigate: (path: string) => void;\n onShowApps: () => void;\n}> = ({\n org,\n apps,\n physicalItems,\n members,\n canCreateApps,\n canViewRevenue,\n currency,\n onNavigate,\n onShowApps,\n}) => {\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n\n return (\n <div className=\"grid gap-6 lg:grid-cols-3\">\n <div className=\"lg:col-span-2 space-y-6\">\n {/* Stats — primary emphasis zone */}\n <EmphasisPanel>\n <StatCardGrid\n columns={org.kind === \"PHYSICAL\" ? 2 : canViewRevenue ? 4 : 3}\n >\n {/* Published Apps / Total Installs are app-marketplace concepts\n — meaningless for a PHYSICAL (seller) org, which sells real\n items, not installable apps. */}\n {org.kind !== \"PHYSICAL\" && (\n <>\n <StatCard\n title={tr(\"devportal.publishedApps\", \"Published Apps\")}\n value={`${org.publishedApps}/${org.totalApps}`}\n icon={<AppWindow size={20} />}\n />\n <StatCard\n title={tr(\"devportal.totalInstalls\", \"Total Installs\")}\n value={org.totalInstalls.toLocaleString()}\n icon={<TrendingUp size={20} />}\n />\n </>\n )}\n {canViewRevenue ? (\n <StatCard\n title={tr(\"devportal.totalRevenue\", \"Total Revenue\")}\n value={formatCurrency(org.totalRevenue, currency)}\n icon={<DollarSign size={20} />}\n />\n ) : null}\n <StatCard\n title={tr(\"devportal.avgRating\", \"Avg Rating\")}\n value={\n org.averageRating\n ? `${org.averageRating.toFixed(1)} ★`\n : tr(\"devportal.notAvailable\", \"N/A\")\n }\n icon={<BarChart3 size={20} />}\n />\n </StatCardGrid>\n </EmphasisPanel>\n\n {/* Recent Apps / Items */}\n <PageSection\n title={\n org.kind === \"PHYSICAL\"\n ? tr(\"devportal.recentItems\", \"Recent Items\")\n : tr(\"devportal.recentApplications\", \"Recent Applications\")\n }\n actions={\n <button\n onClick={onShowApps}\n className=\"text-sm text-primary hover:underline flex items-center gap-1\"\n >\n {tr(\"devportal.viewAll\", \"View all\")} <ArrowRight size={14} />\n </button>\n }\n >\n {org.kind === \"PHYSICAL\" ? (\n physicalItems.length > 0 ? (\n <div className=\"space-y-2\">\n {physicalItems.slice(0, 3).map((item) => (\n <PhysicalItemListItem\n key={item.id}\n item={item}\n onClick={() => onNavigate(`/seller/items/${item.id}`)}\n />\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-data\"\n icon={<AppWindow size={24} />}\n title={tr(\"devportal.noItems\", \"No items\")}\n description={tr(\n \"devportal.createYourFirstItem\",\n \"List your first physical item\",\n )}\n action={\n canCreateApps ? (\n <button\n onClick={() => onNavigate(\"/seller/items/new\")}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus size={16} />\n {tr(\"devportal.createItem\", \"Create Item\")}\n </button>\n ) : undefined\n }\n />\n )\n ) : apps.length > 0 ? (\n <div className=\"space-y-2\">\n {apps.slice(0, 3).map((app) => (\n <AppListItem\n key={app.id}\n app={app}\n onClick={() => onNavigate(`/apps/${app.id}`)}\n />\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-data\"\n icon={<AppWindow size={24} />}\n title={tr(\"devportal.noApplications\", \"No applications\")}\n description={tr(\n \"devportal.createYourFirstApplication\",\n \"Create your first application\",\n )}\n action={\n canCreateApps ? (\n <button\n onClick={() => onNavigate(\"/apps/new\")}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus size={16} />\n {tr(\"devportal.createApp\", \"Create App\")}\n </button>\n ) : undefined\n }\n />\n )}\n </PageSection>\n </div>\n\n {/* Sidebar */}\n <div className=\"space-y-6\">\n {/* No separate \"Revenue Summary\" section here — it would just\n repeat the \"Total Revenue\" stat card above. Platform fees, net\n payouts, pending balance, and lifetime revenue are period- and\n payout-cycle-dependent breakdowns that belong on the actual\n Revenue page (see the \"Revenue\" button above), not a\n quick-glance Overview sidebar. */}\n\n {/* Team */}\n <PageSection\n title={tr(\"devportal.teamMembers\", \"Team Members\")}\n actions={\n <button\n onClick={() => onNavigate(`/organizations/${org.id}/members`)}\n className=\"text-sm text-primary hover:underline\"\n >\n {tr(\"devportal.manage\", \"Manage\")}\n </button>\n }\n >\n <div className=\"space-y-2\">\n {members.slice(0, 3).map((member) => (\n <div\n key={member.id}\n className=\"flex items-center justify-between py-2\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-sm font-medium text-primary\">\n {member.email?.charAt(0).toUpperCase() || \"U\"}\n </div>\n <div>\n <p className=\"text-sm font-medium\">{member.email}</p>\n <p className=\"text-xs text-text-secondary\">\n {ORG_ROLE_LABELS[member.role]}\n </p>\n </div>\n </div>\n </div>\n ))}\n {members.length > 3 && (\n <p className=\"text-xs text-text-secondary\">\n +{members.length - 3}{\" \"}\n {tr(\"devportal.moreMembers\", \"more members\")}\n </p>\n )}\n </div>\n </PageSection>\n\n {/* Links */}\n <PageSection title={tr(\"devportal.links\", \"Links\")}>\n <div className=\"space-y-2\">\n {org.websiteUrl && (\n <a\n href={org.websiteUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 text-sm text-primary hover:underline\"\n >\n <ExternalLink size={14} />\n {tr(\"devportal.website\", \"Website\")}\n </a>\n )}\n {org.contactEmail && (\n <a\n href={`mailto:${org.contactEmail}`}\n className=\"flex items-center gap-2 text-sm text-primary hover:underline\"\n >\n <ExternalLink size={14} />\n {org.contactEmail}\n </a>\n )}\n </div>\n </PageSection>\n </div>\n </div>\n );\n};\n\n// Apps Tab\nconst AppsTab: FC<{\n org: DeveloperOrganization;\n apps: Application[];\n physicalItems: PhysicalItem[];\n onNavigate: (path: string) => void;\n canCreateApps: boolean;\n}> = ({ org, apps, physicalItems, onNavigate, canCreateApps }) => {\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n // A PHYSICAL org never owns Applications (see DeveloperOrgKind / BOFF-7285)\n // — this is checked against the org's real kind, not the route, so a\n // physical org opened via a stale non-seller URL still routes correctly.\n // Its real \"apps\" are physical items instead.\n const isPhysical = org.kind === \"PHYSICAL\";\n const items: Array<Application | PhysicalItem> = isPhysical\n ? physicalItems\n : apps;\n const createPath = isPhysical ? \"/seller/items/new\" : \"/apps/new\";\n const createLabel = isPhysical\n ? tr(\"devportal.createItem\", \"Create Item\")\n : tr(\"devportal.createApp\", \"Create App\");\n\n const [searchQuery, setSearchQuery] = useState(\"\");\n const normalizedQuery = searchQuery.trim().toLowerCase();\n const filteredItems = normalizedQuery\n ? items.filter((item) => item.name.toLowerCase().includes(normalizedQuery))\n : items;\n const isSearching = normalizedQuery.length > 0;\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm text-text-secondary\">\n {filteredItems.length}\n {isSearching ? ` / ${items.length}` : \"\"}{\" \"}\n {isPhysical\n ? filteredItems.length !== 1\n ? tr(\"devportal.items\", \"items\")\n : tr(\"devportal.item\", \"item\")\n : filteredItems.length !== 1\n ? tr(\"devportal.applications\", \"applications\")\n : tr(\"devportal.application\", \"application\")}\n </p>\n {canCreateApps ? (\n <button\n onClick={() => onNavigate(createPath)}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <Plus size={16} />\n {createLabel}\n </button>\n ) : null}\n </div>\n\n {items.length > 0 ? (\n <div className=\"relative max-w-md\">\n <Search\n size={16}\n className=\"absolute left-3 top-1/2 -translate-y-1/2 text-text-secondary\"\n />\n <input\n type=\"text\"\n placeholder={\n isPhysical\n ? tr(\"devportal.searchItems\", \"Search items...\")\n : tr(\"devportal.searchApplications\", \"Search applications...\")\n }\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"w-full rounded-md border bg-bg-surface pl-9 pr-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary\"\n />\n </div>\n ) : null}\n\n {filteredItems.length > 0 ? (\n <div className=\"space-y-2\">\n {isPhysical\n ? (filteredItems as PhysicalItem[]).map((item) => (\n <PhysicalItemListItem\n key={item.id}\n item={item}\n onClick={() => onNavigate(`/seller/items/${item.id}`)}\n />\n ))\n : (filteredItems as Application[]).map((app) => (\n <AppListItem\n key={app.id}\n app={app}\n onClick={() => onNavigate(`/apps/${app.id}`)}\n />\n ))}\n </div>\n ) : isSearching ? (\n <EmptyState\n illustration=\"empty-search\"\n icon={<Search size={32} />}\n title={\n isPhysical\n ? tr(\"devportal.noItemsFound\", \"No items found\")\n : tr(\"devportal.noApplicationsFound\", \"No applications found\")\n }\n description={tr(\n \"devportal.tryAdjustingSearch\",\n \"Try a different search term\",\n )}\n />\n ) : (\n <EmptyState\n illustration=\"empty-data\"\n icon={<AppWindow size={32} />}\n title={\n isPhysical\n ? tr(\"devportal.noItems\", \"No items\")\n : tr(\"devportal.noApplications\", \"No applications\")\n }\n description={\n isPhysical\n ? tr(\n \"devportal.createFirstItemForOrg\",\n \"List your first physical item for this organization\",\n )\n : tr(\n \"devportal.createFirstAppForOrg\",\n \"Create your first application for this organization\",\n )\n }\n action={\n canCreateApps ? (\n <button\n onClick={() => onNavigate(createPath)}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus size={16} />\n {createLabel}\n </button>\n ) : undefined\n }\n />\n )}\n </div>\n );\n};\n\ntype PhysicalItem = GetOrgPhysicalItemsQuery[\"products\"][number];\n\nconst ITEM_STATUS_STYLES: Record<PhysicalItem[\"status\"], string> = {\n PUBLISHED: \"text-status-success-text bg-status-success-bg-subtle\",\n PENDING_REVIEW: \"text-status-warning-text bg-status-warning-bg-subtle\",\n DRAFT: \"text-text-muted bg-bg-muted\",\n REJECTED: \"text-status-error-text bg-status-error-bg/10\",\n ARCHIVED: \"text-text-muted bg-bg-muted\",\n DEPRECATED: \"text-text-muted bg-bg-muted\",\n UNLISTED: \"text-text-muted bg-bg-muted\",\n};\n\n/** Lightweight row for a physical item — StoreProduct doesn't fit AppListItem's\n * Application-shaped props (price/stock vs installs/rating), so this is its\n * own small renderer rather than forcing an ill-fitting reuse. */\nconst PhysicalItemListItem: FC<{ item: PhysicalItem; onClick: () => void }> = ({\n item,\n onClick,\n}) => {\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onClick();\n }\n }}\n className=\"flex cursor-pointer items-center justify-between gap-4 rounded-lg border border-border-seam bg-bg-surface p-4 transition-colors hover:bg-bg-sunken focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n >\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate font-medium text-text-primary\">{item.name}</p>\n <p className=\"mt-0.5 text-xs text-text-secondary\">\n {item.stockQuantity ?? 0} in stock\n </p>\n </div>\n <span\n className={cn(\n \"rounded-full px-2 py-0.5 text-xs font-medium\",\n ITEM_STATUS_STYLES[item.status],\n )}\n >\n {item.status.replace(/_/g, \" \")}\n </span>\n <span className=\"whitespace-nowrap text-sm font-semibold tabular-nums\">\n {formatCurrency(item.price, item.currency)}\n </span>\n </div>\n );\n};\n\n// Members Tab\nconst MembersTab: FC<{\n members: DeveloperOrgMember[];\n onNavigate: (path: string) => void;\n orgId: string;\n canInviteMembers: boolean;\n}> = ({ members, onNavigate, orgId, canInviteMembers }) => {\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm text-text-secondary\">\n {members.length}{\" \"}\n {members.length !== 1\n ? tr(\"devportal.membersLower\", \"members\")\n : tr(\"devportal.memberLower\", \"member\")}\n </p>\n {canInviteMembers ? (\n <button\n onClick={() => onNavigate(`/organizations/${orgId}/members`)}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 transition-colors\"\n >\n <Plus size={16} />\n {tr(\"devportal.inviteMember\", \"Invite Member\")}\n </button>\n ) : null}\n </div>\n\n <DataTable\n data={members}\n keyField=\"id\"\n columns={[\n {\n key: \"email\",\n header: tr(\"devportal.memberColumn\", \"Member\"),\n render: (member) => (\n <div className=\"flex items-center gap-3\">\n <div className=\"h-8 w-8 rounded-full bg-action-primary-bg/10 flex items-center justify-center text-sm font-medium text-primary\">\n {member.email?.charAt(0).toUpperCase() || \"U\"}\n </div>\n <span className=\"font-medium\">{member.email}</span>\n </div>\n ),\n },\n {\n key: \"role\",\n header: tr(\"devportal.roleColumn\", \"Role\"),\n render: (member) => (\n <span\n className={cn(\n \"inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium\",\n member.role === \"OWNER\"\n ? \"bg-accent-purple-subtle text-accent-purple\"\n : member.role === \"ADMIN\"\n ? \"bg-status-info-bg-subtle text-status-info-text\"\n : member.role === \"DEVELOPER\"\n ? \"bg-status-success-bg-subtle text-status-success-text\"\n : \"bg-bg-sunken text-text-primary\",\n )}\n >\n {ORG_ROLE_LABELS[member.role]}\n </span>\n ),\n },\n {\n key: \"joinedAt\",\n header: tr(\"devportal.joinedColumn\", \"Joined\"),\n render: (member) => new Date(member.joinedAt).toLocaleDateString(),\n },\n ]}\n />\n </div>\n );\n};\n\n// Settings Tab\nconst SettingsTab: FC<{\n org: DeveloperOrganization;\n pickupAddresses: OrganizationPickupAddress[];\n pickupAddressesLoading: boolean;\n refetchPickupAddresses: () => void;\n /** Set when the caller navigated here specifically to fix the pickup\n * address (e.g. the \"Configure it now\" alert on Overview) — \"Settings\" on\n * its own drops the seller on Organization Details with no clue where\n * \"Fulfillment\" even is, so scroll to and briefly highlight it instead. */\n focusFulfillment?: boolean;\n onFocusFulfillmentHandled?: () => void;\n}> = ({\n org,\n pickupAddresses,\n pickupAddressesLoading,\n refetchPickupAddresses,\n focusFulfillment,\n onFocusFulfillmentHandled,\n}) => {\n const [highlightFulfillment, setHighlightFulfillment] = useState(false);\n useEffect(() => {\n if (!focusFulfillment) return;\n const el = document.getElementById(\"fulfillment-section\");\n el?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n setHighlightFulfillment(true);\n const timeout = setTimeout(() => setHighlightFulfillment(false), 2500);\n onFocusFulfillmentHandled?.();\n return () => clearTimeout(timeout);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only re-run when focusFulfillment itself flips to true\n }, [focusFulfillment]);\n const { t } = useI18n();\n const { allowed: canUpdate } = useDevportalPermission(\n DEVPORTAL_PERMISSIONS.ORG_UPDATE,\n );\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n const [profileForm, setProfileForm] = useState({\n name: org.name,\n description: org.description ?? \"\",\n websiteUrl: org.websiteUrl ?? \"\",\n contactEmail: org.contactEmail ?? \"\",\n supportEmail: org.supportEmail ?? \"\",\n logoUrl: org.logoUrl ?? \"\",\n bannerUrl: org.bannerUrl ?? \"\",\n });\n const [legalForm, setLegalForm] = useState({\n legalEntityName: org.legalEntityName ?? \"\",\n legalEntityType: org.legalEntityType ?? \"\",\n });\n const [taxForm, setTaxForm] = useState({\n taxId: org.taxId ?? \"\",\n taxCountry: org.taxCountry ?? \"\",\n });\n const { locations: pickupLocations, refetch: refetchPickupLocations } =\n useCarrierPickupLocations();\n const [showRegisterPickupModal, setShowRegisterPickupModal] = useState(false);\n const [removeConfirmAddressId, setRemoveConfirmAddressId] = useState<\n string | null\n >(null);\n const [pickupActionPendingId, setPickupActionPendingId] = useState<\n string | null\n >(null);\n const [fulfillmentMessage, setFulfillmentMessage] = useState<string | null>(\n null,\n );\n const [fulfillmentError, setFulfillmentError] = useState<string | null>(null);\n const [saveMessage, setSaveMessage] = useState<string | null>(null);\n const [saveError, setSaveError] = useState<string | null>(null);\n const [verifyMethod, setVerifyMethod] = useState<string>(\"manual\");\n const [verifySuccess, setVerifySuccess] = useState(false);\n const [verificationNotes, setVerificationNotes] = useState(\"\");\n const [verificationEvidenceUrl, setVerificationEvidenceUrl] = useState(\"\");\n const [verificationDomain, setVerificationDomain] = useState(\"\");\n const [verificationDetails, setVerificationDetails] =\n useState<VerificationDetails | null>(null);\n const [verifying, setVerifying] = useState(false);\n const currentVerification = verificationDetails ?? {\n verificationMethod: org.verificationMethod,\n verificationRequestedAt: org.verificationRequestedAt,\n verificationStatus: org.verificationStatus,\n verificationRequestNotes: org.verificationRequestNotes,\n verificationRejectedReason: org.verificationRejectedReason,\n };\n const verificationReadinessIssues: string[] = [];\n if (!profileForm.contactEmail.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.contactEmailRequired\", \"Contact email is required\"),\n );\n } else if (!isLikelyEmail(profileForm.contactEmail)) {\n verificationReadinessIssues.push(\n tr(\"devportal.contactEmailInvalid\", \"Contact email must be valid\"),\n );\n }\n if (\n profileForm.supportEmail.trim() &&\n !isLikelyEmail(profileForm.supportEmail)\n ) {\n verificationReadinessIssues.push(\n tr(\"devportal.supportEmailInvalid\", \"Support email must be valid\"),\n );\n }\n if (!profileForm.websiteUrl.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.websiteRequired\", \"Website URL is required\"),\n );\n } else if (!isLikelyUrl(profileForm.websiteUrl)) {\n verificationReadinessIssues.push(\n tr(\"devportal.websiteInvalid\", \"Website URL must be valid\"),\n );\n }\n if (!legalForm.legalEntityName.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.legalEntityNameRequired\", \"Legal entity name is required\"),\n );\n }\n if (!legalForm.legalEntityType.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.legalEntityTypeRequired\", \"Entity type is required\"),\n );\n }\n if (!taxForm.taxId.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.taxIdRequired\", \"Tax ID is required\"),\n );\n }\n if (!taxForm.taxCountry.trim()) {\n verificationReadinessIssues.push(\n tr(\"devportal.taxCountryRequired\", \"Tax country is required\"),\n );\n } else if (!/^[A-Za-z]{2}$/.test(taxForm.taxCountry.trim())) {\n verificationReadinessIssues.push(\n tr(\"devportal.taxCountryInvalid\", \"Tax country must be a 2-letter code\"),\n );\n }\n const verificationFormIssues: string[] = [];\n if (verifyMethod === \"domain\" && !isLikelyDomain(verificationDomain.trim())) {\n verificationFormIssues.push(\n tr(\n \"devportal.verification.errors.domainRequired\",\n \"Enter a valid domain like burdenoff.com\",\n ),\n );\n }\n if (\n verifyMethod === \"document\" &&\n !isLikelyUrl(verificationEvidenceUrl.trim())\n ) {\n verificationFormIssues.push(\n tr(\n \"devportal.verification.errors.evidenceUrlRequired\",\n \"Enter a valid evidence URL starting with http:// or https://\",\n ),\n );\n }\n if (verifyMethod === \"manual\" && !verificationNotes.trim()) {\n verificationFormIssues.push(\n tr(\n \"devportal.verification.errors.notesRequired\",\n \"Add notes so the reviewer knows what to verify\",\n ),\n );\n }\n const canSubmitVerification =\n verificationReadinessIssues.length === 0 &&\n verificationFormIssues.length === 0 &&\n !verifying &&\n canUpdate;\n const [updateOrganization, { loading: updatingOrg }] =\n useUpdateOrganizationMutation({\n refetchQueries: [\"GetOrganization\"],\n });\n const [updateOrgLegalInfo, { loading: updatingLegal }] =\n useUpdateOrgLegalInfoMutation({\n refetchQueries: [\"GetOrganization\"],\n });\n const [updateOrgTaxInfo, { loading: updatingTax }] =\n useUpdateOrgTaxInfoMutation({\n refetchQueries: [\"GetOrganization\"],\n });\n useEffect(() => {\n setProfileForm({\n name: org.name,\n description: org.description ?? \"\",\n websiteUrl: org.websiteUrl ?? \"\",\n contactEmail: org.contactEmail ?? \"\",\n supportEmail: org.supportEmail ?? \"\",\n logoUrl: org.logoUrl ?? \"\",\n bannerUrl: org.bannerUrl ?? \"\",\n });\n setLegalForm({\n legalEntityName: org.legalEntityName ?? \"\",\n legalEntityType: org.legalEntityType ?? \"\",\n });\n setTaxForm({\n taxId: org.taxId ?? \"\",\n taxCountry: org.taxCountry ?? \"\",\n });\n }, [org.id]);\n\n useEffect(() => {\n if (!org.id) return;\n void graphqlFetch<{ developerOrganization: VerificationDetails | null }>({\n gateway: \"global\",\n query: ORGANIZATION_VERIFICATION_QUERY,\n variables: { id: org.id },\n })\n .then((result) =>\n setVerificationDetails(result.data?.developerOrganization ?? null),\n )\n .catch(() => setVerificationDetails(null));\n }, [org.id, verifySuccess]);\n\n const handleProfileSave = async () => {\n setSaveError(null);\n setSaveMessage(null);\n try {\n await updateOrganization({\n variables: {\n id: org.id,\n input: {\n name: profileForm.name.trim() || undefined,\n description: profileForm.description.trim() || null,\n websiteUrl: profileForm.websiteUrl.trim() || null,\n contactEmail: profileForm.contactEmail.trim() || null,\n supportEmail: profileForm.supportEmail.trim() || null,\n logoUrl: profileForm.logoUrl.trim() || null,\n bannerUrl: profileForm.bannerUrl.trim() || null,\n },\n },\n });\n setSaveMessage(\n tr(\"devportal.organizationUpdated\", \"Organization details updated\"),\n );\n } catch (error) {\n setSaveError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.failedToUpdateOrganization\",\n \"Failed to update organization\",\n ),\n );\n }\n };\n\n const handleLegalSave = async () => {\n setSaveError(null);\n setSaveMessage(null);\n try {\n await updateOrgLegalInfo({\n variables: {\n id: org.id,\n input: {\n legalEntityName: legalForm.legalEntityName.trim() || null,\n legalEntityType: legalForm.legalEntityType.trim() || null,\n },\n },\n });\n setSaveMessage(\n tr(\"devportal.legalInfoUpdated\", \"Legal information updated\"),\n );\n } catch (error) {\n setSaveError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.failedToUpdateLegalInfo\",\n \"Failed to update legal information\",\n ),\n );\n }\n };\n\n const handleTaxSave = async () => {\n setSaveError(null);\n setSaveMessage(null);\n try {\n await updateOrgTaxInfo({\n variables: {\n id: org.id,\n input: {\n taxId: taxForm.taxId.trim() || null,\n taxCountry: taxForm.taxCountry.trim() || null,\n },\n },\n });\n setSaveMessage(tr(\"devportal.taxInfoUpdated\", \"Tax information updated\"));\n } catch (error) {\n setSaveError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.failedToUpdateTaxInfo\",\n \"Failed to update tax information\",\n ),\n );\n }\n };\n\n const handleSetDefaultPickupAddress = async (addressId: string) => {\n setFulfillmentError(null);\n setFulfillmentMessage(null);\n setPickupActionPendingId(addressId);\n try {\n const result = await graphqlFetch<{\n setDefaultPickupAddress: { id: string };\n }>({\n gateway: \"global\",\n query: `\n mutation DevportalSetDefaultPickupAddress($id: ID!) {\n setDefaultPickupAddress(id: $id) {\n id\n }\n }\n `,\n variables: { id: addressId },\n });\n if (result.errors?.length) {\n throw new Error(\n result.errors[0]?.message ?? \"Failed to switch pickup address\",\n );\n }\n // Without this, refetchPickupAddresses would serve the pre-mutation\n // list back from graphqlFetch's short-lived response cache (same\n // query+variables), hiding the new default until a full reload.\n clearGraphqlFetchResponseCache();\n refetchPickupAddresses();\n setFulfillmentMessage(\n tr(\"devportal.pickupAddressSetActive\", \"Pickup address updated\"),\n );\n } catch (error) {\n setFulfillmentError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.failedToSwitchPickupAddress\",\n \"Failed to switch pickup address\",\n ),\n );\n } finally {\n setPickupActionPendingId(null);\n }\n };\n\n const handleRemovePickupAddress = async (addressId: string) => {\n setFulfillmentError(null);\n setFulfillmentMessage(null);\n setPickupActionPendingId(addressId);\n try {\n const result = await graphqlFetch<{\n removeDeveloperOrgPickupAddress: boolean;\n }>({\n gateway: \"global\",\n query: `\n mutation DevportalRemoveOrgPickupAddress($id: ID!) {\n removeDeveloperOrgPickupAddress(id: $id)\n }\n `,\n variables: { id: addressId },\n });\n if (result.errors?.length) {\n throw new Error(\n result.errors[0]?.message ?? \"Failed to remove pickup address\",\n );\n }\n clearGraphqlFetchResponseCache();\n refetchPickupAddresses();\n setFulfillmentMessage(\n tr(\"devportal.pickupAddressRemoved\", \"Pickup address removed\"),\n );\n } catch (error) {\n setFulfillmentError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.failedToRemovePickupAddress\",\n \"Failed to remove pickup address\",\n ),\n );\n } finally {\n setPickupActionPendingId(null);\n setRemoveConfirmAddressId(null);\n }\n };\n\n return (\n <div className=\"space-y-6 max-w-2xl\">\n {saveError && (\n <div className=\"rounded-md border border-status-error-bg bg-status-error-bg-subtle px-4 py-3 text-sm text-status-error-text\">\n {saveError}\n </div>\n )}\n {saveMessage && (\n <div className=\"rounded-md border border-status-success-bg bg-status-success-bg-subtle px-4 py-3 text-sm text-status-success-text\">\n {saveMessage}\n </div>\n )}\n <PageSection\n title={tr(\"devportal.organizationDetails\", \"Organization Details\")}\n >\n <div className=\"space-y-4\">\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <InputField\n label={tr(\"devportal.organizationName\", \"Organization Name\")}\n value={profileForm.name}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n name: event.target.value,\n }))\n }\n disabled={!canUpdate}\n required\n />\n <InputField\n label={tr(\"devportal.slug\", \"Slug\")}\n value={org.slug}\n disabled\n hint={tr(\"devportal.slugReadOnly\", \"Slug cannot be changed here\")}\n />\n </div>\n <TextareaField\n label={tr(\"devportal.description\", \"Description\")}\n value={profileForm.description}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n description: event.target.value,\n }))\n }\n disabled={!canUpdate}\n rows={4}\n />\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <InputField\n label={tr(\"devportal.website\", \"Website\")}\n type=\"url\"\n value={profileForm.websiteUrl}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n websiteUrl: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.contactEmail\", \"Contact Email\")}\n type=\"email\"\n value={profileForm.contactEmail}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n contactEmail: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.supportEmail\", \"Support Email\")}\n type=\"email\"\n value={profileForm.supportEmail}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n supportEmail: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.logoUrl\", \"Logo URL\")}\n type=\"url\"\n value={profileForm.logoUrl}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n logoUrl: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n </div>\n <InputField\n label={tr(\"devportal.bannerUrl\", \"Banner URL\")}\n type=\"url\"\n value={profileForm.bannerUrl}\n onChange={(event) =>\n setProfileForm((current) => ({\n ...current,\n bannerUrl: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <DetailList\n items={[\n {\n label: tr(\"devportal.organizationId\", \"Organization ID\"),\n value: <code className=\"text-xs\">{org.id}</code>,\n },\n { label: tr(\"devportal.tier\", \"Tier\"), value: org.tier },\n {\n label: tr(\"devportal.partnerTier\", \"Partner Tier\"),\n value: org.partnerTier || tr(\"devportal.none\", \"None\"),\n },\n {\n label: tr(\"devportal.created\", \"Created\"),\n value: new Date(org.createdAt).toLocaleDateString(),\n },\n {\n label: tr(\"devportal.platformFeeRate\", \"Platform Fee Rate\"),\n value: `${(org.platformFeeRate * 100).toFixed(0)}%`,\n },\n ]}\n />\n <div className=\"flex justify-end\">\n <button\n type=\"button\"\n disabled={!canUpdate || updatingOrg}\n onClick={() => void handleProfileSave()}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {updatingOrg ? (\n <Loader2 size={14} className=\"animate-spin\" />\n ) : (\n <Settings size={14} />\n )}\n {tr(\"devportal.saveChanges\", \"Save Changes\")}\n </button>\n </div>\n </div>\n </PageSection>\n\n <PageSection\n title={tr(\"devportal.legalInformation\", \"Legal Information\")}\n >\n <div className=\"space-y-4\">\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <InputField\n label={tr(\"devportal.legalEntityName\", \"Legal Entity Name\")}\n value={legalForm.legalEntityName}\n onChange={(event) =>\n setLegalForm((current) => ({\n ...current,\n legalEntityName: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.entityType\", \"Entity Type\")}\n value={legalForm.legalEntityType}\n onChange={(event) =>\n setLegalForm((current) => ({\n ...current,\n legalEntityType: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.taxId\", \"Tax ID\")}\n value={taxForm.taxId}\n onChange={(event) =>\n setTaxForm((current) => ({\n ...current,\n taxId: event.target.value,\n }))\n }\n disabled={!canUpdate}\n />\n <InputField\n label={tr(\"devportal.taxCountry\", \"Tax Country\")}\n value={taxForm.taxCountry}\n onChange={(event) =>\n setTaxForm((current) => ({\n ...current,\n taxCountry: event.target.value.toUpperCase(),\n }))\n }\n disabled={!canUpdate}\n />\n </div>\n <DetailList\n items={[\n {\n label: tr(\"devportal.taxForm\", \"Tax Form\"),\n value:\n org.taxFormType ||\n tr(\"devportal.notSubmitted\", \"Not submitted\"),\n },\n {\n label: tr(\"devportal.taxFormStatus\", \"Tax Form Status\"),\n value: !org.taxFormType ? (\n tr(\"devportal.notSubmitted\", \"Not submitted\")\n ) : org.taxFormVerified ? (\n <span className=\"text-status-success-text flex items-center gap-1\">\n <CheckCircle size={14} />{\" \"}\n {tr(\"devportal.verified\", \"Verified\")}\n </span>\n ) : (\n tr(\"devportal.pendingVerification\", \"Pending verification\")\n ),\n },\n ]}\n />\n <div className=\"flex justify-end gap-2\">\n <button\n type=\"button\"\n disabled={!canUpdate || updatingLegal}\n onClick={() => void handleLegalSave()}\n className=\"inline-flex items-center gap-2 rounded-md border border-border-seam px-4 py-2 text-sm font-medium hover:bg-bg-sunken disabled:opacity-50\"\n >\n {updatingLegal ? (\n <Loader2 size={14} className=\"animate-spin\" />\n ) : null}\n {tr(\"devportal.saveLegalInfo\", \"Save Legal Info\")}\n </button>\n <button\n type=\"button\"\n disabled={!canUpdate || updatingTax}\n onClick={() => void handleTaxSave()}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {updatingTax ? (\n <Loader2 size={14} className=\"animate-spin\" />\n ) : null}\n {tr(\"devportal.saveTaxInfo\", \"Save Tax Info\")}\n </button>\n </div>\n </div>\n </PageSection>\n\n {org.kind === \"PHYSICAL\" && (\n <PageSection\n id=\"fulfillment-section\"\n title={tr(\"devportal.fulfillment\", \"Fulfillment\")}\n className={cn(\n \"scroll-mt-6 rounded-lg transition-shadow duration-500\",\n highlightFulfillment &&\n \"ring-2 ring-action-primary-bg ring-offset-4\",\n )}\n >\n <div className=\"space-y-3\">\n {fulfillmentError && (\n <div className=\"rounded-md border border-status-error-bg bg-status-error-bg-subtle px-4 py-3 text-sm text-status-error-text\">\n {fulfillmentError}\n </div>\n )}\n {fulfillmentMessage && (\n <div className=\"rounded-md border border-status-success-bg bg-status-success-bg-subtle px-4 py-3 text-sm text-status-success-text\">\n {fulfillmentMessage}\n </div>\n )}\n\n {!pickupAddressesLoading && pickupAddresses.length === 0 && (\n <div className=\"rounded-md border border-border-seam bg-bg-sunken p-4\">\n <p className=\"text-sm font-medium\">\n {tr(\n \"devportal.noPickupAddress\",\n \"No pickup address set up yet\",\n )}\n </p>\n <p className=\"mt-1 text-sm text-text-secondary\">\n {tr(\n \"devportal.noPickupAddressHint\",\n \"Buyers need to know where your physical orders actually ship from — a bare pincode isn't enough, two sellers can share one. Add your real pickup address and we'll register it with our shipping carrier for you, free of charge.\",\n )}\n </p>\n </div>\n )}\n\n {pickupAddresses.length > 0 && (\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n {pickupAddresses.map((pickupAddress) => {\n const isRegisteredWithCarrier = pickupLocations.some(\n (location) =>\n location.carrier === pickupAddress.carrier &&\n location.postalCode === pickupAddress.postalCode,\n );\n const isPending = pickupActionPendingId === pickupAddress.id;\n\n return (\n <div\n key={pickupAddress.id}\n className={cn(\n \"rounded-md border p-4\",\n pickupAddress.isDefault\n ? \"border-status-success-border bg-status-success-bg-subtle\"\n : \"border-border-seam bg-bg-sunken\",\n )}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <p className=\"text-sm font-medium\">\n {pickupAddress.carrierLocationLabel}\n </p>\n {pickupAddress.isDefault && (\n <span className=\"rounded-full bg-status-success-bg px-2 py-0.5 text-xs font-medium text-white\">\n {tr(\"devportal.active\", \"Active\")}\n </span>\n )}\n </div>\n <p className=\"mt-1 text-sm text-text-secondary\">\n {pickupAddress.address}\n {pickupAddress.addressLine2\n ? `, ${pickupAddress.addressLine2}`\n : \"\"}\n , {pickupAddress.city}, {pickupAddress.state}{\" \"}\n {pickupAddress.postalCode}, {pickupAddress.country}\n </p>\n <p className=\"mt-1 text-xs text-text-secondary\">\n {capitalizeCarrierName(pickupAddress.carrier)}\n </p>\n {!isRegisteredWithCarrier && (\n <p className=\"mt-2 text-xs text-status-error-text\">\n {tr(\n \"devportal.pickupAddressNotRegisteredHint\",\n \"Not currently registered with the carrier — physical orders can't auto-ship from this address right now.\",\n )}\n </p>\n )}\n\n {canUpdate && (\n <div className=\"mt-3 flex items-center gap-4\">\n {!pickupAddress.isDefault && (\n <button\n type=\"button\"\n disabled={isPending}\n onClick={() =>\n void handleSetDefaultPickupAddress(\n pickupAddress.id,\n )\n }\n className=\"text-sm font-medium text-action-primary-text hover:underline disabled:opacity-50\"\n >\n {tr(\n \"devportal.setPickupAddressActiveCta\",\n \"Set as active\",\n )}\n </button>\n )}\n <button\n type=\"button\"\n disabled={isPending}\n onClick={() =>\n setRemoveConfirmAddressId(pickupAddress.id)\n }\n className=\"flex items-center gap-1.5 text-sm text-status-error-text hover:underline disabled:opacity-50\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n {tr(\"devportal.removePickupAddressCta\", \"Remove\")}\n </button>\n </div>\n )}\n </div>\n );\n })}\n </div>\n )}\n\n {canUpdate && (\n <div className=\"flex justify-end\">\n <button\n type=\"button\"\n onClick={() => setShowRegisterPickupModal(true)}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus size={14} />\n {tr(\"devportal.addPickupAddressCta\", \"Add pickup address\")}\n </button>\n </div>\n )}\n\n {showRegisterPickupModal && (\n <RegisterPickupLocationModal\n open={showRegisterPickupModal}\n onOpenChange={setShowRegisterPickupModal}\n organizationId={org.id}\n // Only carrier that supports self-service registration\n // today — becomes a real choice once more adapters\n // implement registerPickupLocation().\n carrier=\"shiprocket\"\n onRegistered={() => {\n refetchPickupAddresses();\n refetchPickupLocations();\n setFulfillmentMessage(\n tr(\"devportal.pickupAddressAdded\", \"Pickup address added\"),\n );\n }}\n />\n )}\n\n <ConfirmDialog\n open={removeConfirmAddressId !== null}\n onOpenChange={(open) => {\n if (!open) setRemoveConfirmAddressId(null);\n }}\n variant=\"danger\"\n loading={pickupActionPendingId === removeConfirmAddressId}\n title={tr(\n \"devportal.removePickupAddressConfirmTitle\",\n \"Remove this pickup address?\",\n )}\n description={tr(\n \"devportal.removePickupAddressConfirmDesc\",\n \"We'll stop using it to quote and book shipments for this organization. Carriers like Shiprocket don't offer a way to delete an address from their own account once added, so it may still show up there, but it won't be used for your orders anymore.\",\n )}\n confirmLabel={tr(\"devportal.remove\", \"Remove\")}\n cancelLabel={tr(\"devportal.cancel\", \"Cancel\")}\n onConfirm={async () => {\n if (removeConfirmAddressId) {\n await handleRemovePickupAddress(removeConfirmAddressId);\n }\n }}\n />\n </div>\n </PageSection>\n )}\n\n <PageSection\n title={tr(\"devportal.verificationStatus\", \"Verification Status\")}\n >\n <DetailList\n items={[\n {\n label: tr(\"devportal.verifiedLabel\", \"Verified\"),\n value:\n currentVerification.verificationStatus === \"VERIFIED\" ? (\n <span className=\"text-status-success-text flex items-center gap-1\">\n <CheckCircle size={14} />{\" \"}\n {tr(\"devportal.verifiedVia\", \"Verified via\")}{\" \"}\n {currentVerification.verificationMethod}\n </span>\n ) : currentVerification.verificationStatus === \"PENDING\" ? (\n tr(\"devportal.pendingVerification\", \"Pending verification\")\n ) : currentVerification.verificationStatus === \"REJECTED\" ? (\n tr(\"devportal.verificationRejected\", \"Rejected\")\n ) : (\n tr(\"devportal.notVerified\", \"Not verified\")\n ),\n },\n {\n label: tr(\"devportal.certifiedLabel\", \"Certified\"),\n value: org.isCertified ? (\n <span className=\"text-accent-blue flex items-center gap-1\">\n <Shield size={14} />{\" \"}\n {tr(\"devportal.certifiedUntil\", \"Certified until\")}{\" \"}\n {org.certificationExpiry\n ? new Date(org.certificationExpiry).toLocaleDateString()\n : \"N/A\"}\n </span>\n ) : (\n tr(\"devportal.notCertified\", \"Not certified\")\n ),\n },\n ]}\n />\n {currentVerification.verificationStatus !== \"VERIFIED\" && (\n <div className=\"mt-4 rounded-md border border-border-subtle p-4 space-y-3\">\n {verifySuccess ? (\n <p className=\"text-sm text-status-success-text flex items-center gap-2\">\n <CheckCircle size={14} />\n {tr(\n \"devportal.verificationRequested\",\n \"Verification request submitted. Our team will review and contact you.\",\n )}\n </p>\n ) : (\n <>\n <p className=\"text-sm text-text-secondary\">\n {tr(\n \"devportal.requestVerificationHint\",\n \"Get your organization verified to build trust with users. Choose a verification method:\",\n )}\n </p>\n {currentVerification.verificationStatus === \"PENDING\" && (\n <div className=\"rounded-md border border-border-subtle bg-bg-sunken/40 p-3 text-sm text-text-secondary\">\n {tr(\n \"devportal.pendingVerification\",\n \"Pending verification\",\n )}\n {currentVerification.verificationMethod\n ? ` · ${currentVerification.verificationMethod}`\n : \"\"}\n {currentVerification.verificationRequestNotes\n ? ` · ${currentVerification.verificationRequestNotes}`\n : \"\"}\n </div>\n )}\n {currentVerification.verificationStatus === \"REJECTED\" &&\n currentVerification.verificationRejectedReason && (\n <div className=\"rounded-md border border-status-error-border bg-status-error-bg-subtle p-3 text-sm text-status-error-text\">\n {currentVerification.verificationRejectedReason}\n </div>\n )}\n {verificationReadinessIssues.length > 0 && (\n <div className=\"rounded-md border border-border-subtle bg-bg-sunken/40 p-3 text-sm text-text-secondary\">\n <div className=\"font-medium text-text-primary\">\n {tr(\n \"devportal.completeBeforeVerification\",\n \"Complete these details before submitting for review\",\n )}\n </div>\n <ul className=\"mt-2 list-disc pl-5 space-y-1\">\n {verificationReadinessIssues.map((issue) => (\n <li key={issue}>{issue}</li>\n ))}\n </ul>\n </div>\n )}\n {currentVerification.verificationStatus !== \"PENDING\" && (\n <>\n <div className=\"flex gap-2 flex-wrap\">\n {[\"domain\", \"document\", \"manual\"].map((m) => (\n <button\n key={m}\n type=\"button\"\n onClick={() => setVerifyMethod(m)}\n className={`rounded-md border px-3 py-1 text-xs font-medium transition-colors ${\n verifyMethod === m\n ? \"bg-action-primary-bg text-action-primary-text border-primary\"\n : \"border-border-subtle hover:bg-bg-sunken\"\n }`}\n >\n {m === \"domain\"\n ? tr(\"devportal.domainVerification\", \"Domain\")\n : m === \"document\"\n ? tr(\"devportal.documentVerification\", \"Document\")\n : tr(\n \"devportal.manualVerification\",\n \"Manual review\",\n )}\n </button>\n ))}\n </div>\n {verifyMethod === \"domain\" ? (\n <InputField\n label={tr(\"devportal.domainVerification\", \"Domain\")}\n value={verificationDomain}\n onChange={(event) =>\n setVerificationDomain(event.target.value)\n }\n placeholder=\"example.com\"\n />\n ) : verifyMethod === \"document\" ? (\n <InputField\n label={tr(\"devportal.evidenceUrl\", \"Evidence URL\")}\n value={verificationEvidenceUrl}\n onChange={(event) =>\n setVerificationEvidenceUrl(event.target.value)\n }\n placeholder=\"https://...\"\n />\n ) : null}\n <TextareaField\n label={tr(\"devportal.notes\", \"Notes\")}\n value={verificationNotes}\n onChange={(event) =>\n setVerificationNotes(event.target.value)\n }\n placeholder=\"What should reviewers validate?\"\n />\n <button\n type=\"button\"\n disabled={!canSubmitVerification}\n onClick={() =>\n void (async () => {\n const trimmedDomain = verificationDomain.trim();\n const trimmedEvidenceUrl =\n verificationEvidenceUrl.trim();\n const trimmedNotes = verificationNotes.trim();\n\n if (\n verifyMethod === \"domain\" &&\n !isLikelyDomain(trimmedDomain)\n ) {\n setSaveError(\n tr(\n \"devportal.verification.errors.domainRequired\",\n \"Enter a valid domain like burdenoff.com\",\n ),\n );\n return;\n }\n\n if (\n verifyMethod === \"document\" &&\n !isLikelyUrl(trimmedEvidenceUrl)\n ) {\n setSaveError(\n tr(\n \"devportal.verification.errors.evidenceUrlRequired\",\n \"Enter a valid evidence URL starting with http:// or https://\",\n ),\n );\n return;\n }\n\n if (verifyMethod === \"manual\" && !trimmedNotes) {\n setSaveError(\n tr(\n \"devportal.verification.errors.notesRequired\",\n \"Add notes so the reviewer knows what to verify\",\n ),\n );\n return;\n }\n\n setSaveError(null);\n setSaveMessage(null);\n setVerifying(true);\n try {\n await updateOrganization({\n variables: {\n id: org.id,\n input: {\n name: profileForm.name.trim() || undefined,\n description:\n profileForm.description.trim() || null,\n websiteUrl:\n profileForm.websiteUrl.trim() || null,\n contactEmail:\n profileForm.contactEmail.trim() || null,\n supportEmail:\n profileForm.supportEmail.trim() || null,\n logoUrl: profileForm.logoUrl.trim() || null,\n bannerUrl:\n profileForm.bannerUrl.trim() || null,\n },\n },\n });\n\n await updateOrgLegalInfo({\n variables: {\n id: org.id,\n input: {\n legalEntityName:\n legalForm.legalEntityName.trim() || null,\n legalEntityType:\n legalForm.legalEntityType.trim() || null,\n },\n },\n });\n\n await updateOrgTaxInfo({\n variables: {\n id: org.id,\n input: {\n taxId: taxForm.taxId.trim() || null,\n taxCountry: taxForm.taxCountry.trim() || null,\n },\n },\n });\n\n const submitResult = await graphqlFetch({\n gateway: \"global\",\n query: REQUEST_ORG_VERIFICATION_MUTATION,\n variables: {\n id: org.id,\n method: verifyMethod,\n notes: trimmedNotes || null,\n evidenceUrl:\n verifyMethod === \"domain\"\n ? null\n : trimmedEvidenceUrl || null,\n domain:\n verifyMethod === \"domain\"\n ? trimmedDomain || null\n : null,\n },\n });\n if (submitResult.errors?.length) {\n throw new Error(\n submitResult.errors[0]?.message ||\n \"Verification request failed\",\n );\n }\n setVerifySuccess(true);\n setSaveMessage(\n tr(\n \"devportal.verificationRequested\",\n \"Verification request submitted. Our team will review and contact you.\",\n ),\n );\n const refreshed = await graphqlFetch<{\n developerOrganization: VerificationDetails | null;\n }>({\n gateway: \"global\",\n query: ORGANIZATION_VERIFICATION_QUERY,\n variables: { id: org.id },\n });\n setVerificationDetails(\n refreshed.data?.developerOrganization ?? null,\n );\n } catch (error) {\n setSaveError(\n error instanceof Error\n ? error.message\n : tr(\n \"devportal.verificationRequestFailed\",\n \"Verification request failed\",\n ),\n );\n } finally {\n setVerifying(false);\n }\n })()\n }\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {verifying ? (\n <Loader2 size={14} className=\"animate-spin\" />\n ) : (\n <Shield size={14} />\n )}\n {tr(\n \"devportal.requestVerification\",\n \"Request Verification\",\n )}\n </button>\n </>\n )}\n </>\n )}\n </div>\n )}\n </PageSection>\n </div>\n );\n};\n"],"mappings":"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"}
|