@burdenoff/microfe-devportal 2026.609.2 → 2026.609.3
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.
|
@@ -161,10 +161,6 @@ function K() {
|
|
|
161
161
|
path: "settings",
|
|
162
162
|
element: g("settings", /* @__PURE__ */ p(R, {}))
|
|
163
163
|
}),
|
|
164
|
-
/* @__PURE__ */ p(u, {
|
|
165
|
-
path: "setup",
|
|
166
|
-
element: g("setup", /* @__PURE__ */ p(G, {}))
|
|
167
|
-
}),
|
|
168
164
|
/* @__PURE__ */ p(u, {
|
|
169
165
|
path: "*",
|
|
170
166
|
element: /* @__PURE__ */ p(h, {})
|
|
@@ -174,10 +170,13 @@ function K() {
|
|
|
174
170
|
function q() {
|
|
175
171
|
return /* @__PURE__ */ p(o, {
|
|
176
172
|
fallback: /* @__PURE__ */ p(t, { message: "Loading page..." }),
|
|
177
|
-
children: /* @__PURE__ */
|
|
173
|
+
children: /* @__PURE__ */ m(d, { children: [/* @__PURE__ */ p(u, {
|
|
174
|
+
path: "setup",
|
|
175
|
+
element: g("setup", /* @__PURE__ */ p(G, {}))
|
|
176
|
+
}), /* @__PURE__ */ p(u, {
|
|
178
177
|
path: "/*",
|
|
179
178
|
element: /* @__PURE__ */ p(K, {})
|
|
180
|
-
}) })
|
|
179
|
+
})] })
|
|
181
180
|
});
|
|
182
181
|
}
|
|
183
182
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevportalRoutes.js","names":[],"sources":["../../src/devportal/DevportalRoutes.tsx"],"sourcesContent":["import { Suspense, lazy, useEffect, type ReactNode } from \"react\";\nimport { Routes, Route, Navigate } from \"react-router-dom\";\nimport { LoadingState } from \"./components/LoadingState\";\nimport { FeatureFlaggedRoute } from \"./components/FeatureFlaggedRoute\";\nimport { TelemetryErrorBoundary } from \"./components/TelemetryErrorBoundary\";\nimport { SectionNav } from \"./components/SectionNav\";\nimport { useDevportal } from \"./providers/DevportalProvider\";\n\n/**\n * Catch-all redirect target for the unmatched `*` route. Uses the\n * DevportalProvider's `basePath` and `navigate` so the redirect works\n * regardless of the integration mode (shell or standalone). Falls back to a\n * relative Navigate when neither is wired, which is the standalone/test path.\n */\nfunction CatchAllRedirect() {\n const { basePath, navigate } = useDevportal();\n useEffect(() => {\n if (basePath && navigate) {\n const target = basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath;\n navigate(target || \"/\");\n }\n }, [basePath, navigate]);\n if (basePath && navigate) return null;\n return <Navigate to=\"..\" replace />;\n}\n\n/**\n * Wrap a page element with the per-route feature flag gate and a\n * telemetry-emitting error boundary. The flag name follows\n * `devportal.<page-slug>` convention; when disabled the user sees a\n * graceful fallback instead of a route-level crash.\n *\n * Per `dev/platform/context/feature-flags` and spec\n * `microfrontends/47-FRONTEND-EVENT-BUS.md` (error.boundary emission).\n */\nfunction gated(slug: string, element: ReactNode): ReactNode {\n return (\n <TelemetryErrorBoundary scope={slug}>\n <FeatureFlaggedRoute flag={`devportal.${slug}`}>\n {element}\n </FeatureFlaggedRoute>\n </TelemetryErrorBoundary>\n );\n}\n\n// Eager load the main dashboard page\nimport { DashboardPage } from \"./pages/DashboardPage\";\n\n// Lazy load all other pages\nconst OrganizationsPage = lazy(() =>\n import(\"./pages/OrganizationsPage\").then((m) => ({\n default: m.OrganizationsPage,\n })),\n);\nconst OrganizationDetailPage = lazy(() =>\n import(\"./pages/OrganizationDetailPage\").then((m) => ({\n default: m.OrganizationDetailPage,\n })),\n);\nconst CreateOrganizationPage = lazy(() =>\n import(\"./pages/CreateOrganizationPage\").then((m) => ({\n default: m.CreateOrganizationPage,\n })),\n);\nconst OrganizationMembersPage = lazy(() =>\n import(\"./pages/OrganizationMembersPage\").then((m) => ({\n default: m.OrganizationMembersPage,\n })),\n);\nconst RevenueRedirectPage = lazy(() =>\n import(\"./pages/RevenueRedirectPage\").then((m) => ({\n default: m.RevenueRedirectPage,\n })),\n);\nconst ApplicationsPage = lazy(() =>\n import(\"./pages/ApplicationsPage\").then((m) => ({\n default: m.ApplicationsPage,\n })),\n);\nconst ApplicationDetailPage = lazy(() =>\n import(\"./pages/ApplicationDetailPage\").then((m) => ({\n default: m.ApplicationDetailPage,\n })),\n);\nconst CreateApplicationPage = lazy(() =>\n import(\"./pages/CreateApplicationPage\").then((m) => ({\n default: m.CreateApplicationPage,\n })),\n);\nconst EditApplicationPage = lazy(() =>\n import(\"./pages/EditApplicationPage\").then((m) => ({\n default: m.EditApplicationPage,\n })),\n);\nconst ApplicationVersionsPage = lazy(() =>\n import(\"./pages/ApplicationVersionsPage\").then((m) => ({\n default: m.ApplicationVersionsPage,\n })),\n);\nconst OAuthClientsPage = lazy(() =>\n import(\"./pages/OAuthClientsPage\").then((m) => ({\n default: m.OAuthClientsPage,\n })),\n);\nconst CreateOAuthClientPage = lazy(() =>\n import(\"./pages/CreateOAuthClientPage\").then((m) => ({\n default: m.CreateOAuthClientPage,\n })),\n);\nconst OAuthClientDetailPage = lazy(() =>\n import(\"./pages/OAuthClientDetailPage\").then((m) => ({\n default: m.OAuthClientDetailPage,\n })),\n);\nconst ApiKeysPage = lazy(() =>\n import(\"./pages/ApiKeysPage\").then((m) => ({ default: m.ApiKeysPage })),\n);\nconst CreateApiKeyPage = lazy(() =>\n import(\"./pages/CreateApiKeyPage\").then((m) => ({\n default: m.CreateApiKeyPage,\n })),\n);\nconst WebhooksPage = lazy(() =>\n import(\"./pages/WebhooksPage\").then((m) => ({ default: m.WebhooksPage })),\n);\nconst CreateWebhookPage = lazy(() =>\n import(\"./pages/CreateWebhookPage\").then((m) => ({\n default: m.CreateWebhookPage,\n })),\n);\nconst WebhookDetailPage = lazy(() =>\n import(\"./pages/WebhookDetailPage\").then((m) => ({\n default: m.WebhookDetailPage,\n })),\n);\nconst AnalyticsDashboardPage = lazy(() =>\n import(\"./pages/AnalyticsDashboardPage\").then((m) => ({\n default: m.AnalyticsDashboardPage,\n })),\n);\nconst DocumentationPage = lazy(() =>\n import(\"./pages/DocumentationPage\").then((m) => ({\n default: m.DocumentationPage,\n })),\n);\nconst ResourcesPage = lazy(() =>\n import(\"./pages/ResourcesPage\").then((m) => ({ default: m.ResourcesPage })),\n);\nconst SettingsPage = lazy(() =>\n import(\"./pages/SettingsPage\").then((m) => ({ default: m.SettingsPage })),\n);\nconst PublishPage = lazy(() =>\n import(\"./pages/PublishPage\").then((m) => ({ default: m.PublishPage })),\n);\nconst AppLogsPage = lazy(() =>\n import(\"./pages/AppLogsPage\").then((m) => ({ default: m.AppLogsPage })),\n);\nconst DelegationsPage = lazy(() =>\n import(\"./pages/DelegationsPage\").then((m) => ({\n default: m.DelegationsPage,\n })),\n);\nconst ListingPreviewPage = lazy(() =>\n import(\"./pages/ListingPreviewPage\").then((m) => ({\n default: m.ListingPreviewPage,\n })),\n);\nconst StoreSubmissionPage = lazy(() =>\n import(\"./pages/StoreSubmissionPage\").then((m) => ({\n default: m.StoreSubmissionPage,\n })),\n);\nconst PublisherProfilePage = lazy(() =>\n import(\"./pages/PublisherProfilePage\").then((m) => ({\n default: m.PublisherProfilePage,\n })),\n);\nconst SetupPage = lazy(() =>\n import(\"./pages/SetupPage\").then((m) => ({ default: m.SetupPage })),\n);\n\n/**\n * Inner routes component - renders actual page routes\n */\nfunction InnerRoutes() {\n return (\n <>\n <SectionNav />\n <Routes>\n {/* Dashboard */}\n <Route index element={gated(\"dashboard\", <DashboardPage />)} />\n\n {/* Organizations */}\n <Route\n path=\"organizations\"\n element={gated(\"organizations\", <OrganizationsPage />)}\n />\n <Route\n path=\"organizations/new\"\n element={gated(\"organizations.create\", <CreateOrganizationPage />)}\n />\n <Route\n path=\"organizations/:orgId\"\n element={gated(\"organizations.detail\", <OrganizationDetailPage />)}\n />\n <Route\n path=\"organizations/:orgId/members\"\n element={gated(\"organizations.members\", <OrganizationMembersPage />)}\n />\n <Route\n path=\"organizations/:orgId/revenue\"\n element={gated(\"organizations.revenue\", <RevenueRedirectPage />)}\n />\n\n {/* Applications */}\n <Route path=\"apps\" element={gated(\"apps\", <ApplicationsPage />)} />\n <Route\n path=\"apps/new\"\n element={gated(\"apps.create\", <CreateApplicationPage />)}\n />\n <Route\n path=\"apps/:appId\"\n element={gated(\"apps.detail\", <ApplicationDetailPage />)}\n />\n <Route\n path=\"apps/:appId/edit\"\n element={gated(\"apps.edit\", <EditApplicationPage />)}\n />\n <Route\n path=\"apps/:appId/versions\"\n element={gated(\"apps.versions\", <ApplicationVersionsPage />)}\n />\n <Route\n path=\"apps/:appId/publish\"\n element={gated(\"apps.publish\", <PublishPage />)}\n />\n <Route\n path=\"apps/:appId/store-submission\"\n element={gated(\"apps.storeSubmission\", <StoreSubmissionPage />)}\n />\n <Route\n path=\"apps/:appId/listing\"\n element={gated(\"apps.listing\", <ListingPreviewPage />)}\n />\n <Route\n path=\"apps/:appId/logs\"\n element={gated(\"apps.logs\", <AppLogsPage />)}\n />\n\n {/* OAuth Clients — user-scoped via auth-svc (no app nesting) */}\n <Route path=\"oauth\" element={gated(\"oauth\", <OAuthClientsPage />)} />\n <Route\n path=\"oauth/new\"\n element={gated(\"oauth.create\", <CreateOAuthClientPage />)}\n />\n <Route\n path=\"oauth/:clientId\"\n element={gated(\"oauth.detail\", <OAuthClientDetailPage />)}\n />\n\n {/* API Keys — user-scoped via auth-svc (no app nesting) */}\n <Route path=\"api-keys\" element={gated(\"apiKeys\", <ApiKeysPage />)} />\n <Route\n path=\"api-keys/new\"\n element={gated(\"apiKeys.create\", <CreateApiKeyPage />)}\n />\n\n {/* Webhooks (App-specific) */}\n <Route\n path=\"apps/:appId/webhooks\"\n element={gated(\"apps.webhooks\", <WebhooksPage />)}\n />\n <Route\n path=\"apps/:appId/webhooks/new\"\n element={gated(\"apps.webhooks.create\", <CreateWebhookPage />)}\n />\n <Route\n path=\"apps/:appId/webhooks/:webhookId\"\n element={gated(\"apps.webhooks.detail\", <WebhookDetailPage />)}\n />\n\n {/* App Analytics */}\n <Route\n path=\"apps/:appId/analytics\"\n element={gated(\"apps.analytics\", <AnalyticsDashboardPage />)}\n />\n\n {/* Delegations */}\n <Route\n path=\"delegations\"\n element={gated(\"delegations\", <DelegationsPage />)}\n />\n\n {/* Global Webhooks views */}\n <Route\n path=\"webhooks/new\"\n element={gated(\"webhooks.create\", <CreateWebhookPage />)}\n />\n <Route path=\"webhooks\" element={gated(\"webhooks\", <WebhooksPage />)} />\n\n {/* Analytics & Revenue */}\n <Route\n path=\"analytics\"\n element={gated(\"analytics\", <AnalyticsDashboardPage />)}\n />\n <Route\n path=\"revenue\"\n element={gated(\"revenue\", <RevenueRedirectPage />)}\n />\n\n {/* Documentation & Resources */}\n <Route path=\"docs\" element={gated(\"docs\", <DocumentationPage />)} />\n <Route\n path=\"resources\"\n element={gated(\"resources\", <ResourcesPage />)}\n />\n\n {/* Admin surfaces (e.g. /admin/reviews) live in admin-app via\n AdminDevportalRoot — intentionally not mounted in user shells. */}\n\n {/* Publisher */}\n <Route\n path=\"publisher/profile\"\n element={gated(\"publisher.profile\", <PublisherProfilePage />)}\n />\n\n {/* Settings */}\n <Route path=\"settings\" element={gated(\"settings\", <SettingsPage />)} />\n\n {/* First-time setup wizard */}\n <Route path=\"setup\" element={gated(\"setup\", <SetupPage />)} />\n\n {/* Catch-all redirect to dashboard */}\n <Route path=\"*\" element={<CatchAllRedirect />} />\n </Routes>\n </>\n );\n}\n\n/**\n * Developer Portal Routes\n *\n * Defines all the routes for the developer portal microfrontend.\n * Uses lazy loading for all pages except the dashboard for optimal performance.\n *\n * When integrated into a shell (basePath provided), the shell already handles\n * the basePath route (e.g., /devportal/*), so this component should render\n * routes relative to that path - NOT nest them under basePath again.\n *\n * Example:\n * - Shell route: /devportal/*\n * - User navigates to: /devportal/organizations\n * - Inside DevportalRoutes, the path is: /organizations (relative to shell route)\n * - InnerRoutes matches: organizations -> OrganizationsPage\n */\nexport function DevportalRoutes() {\n // When basePath is provided, we're in shell integration mode.\n // The shell already matched the basePath route, so we render routes\n // relative to that - using wildcard to catch all sub-paths.\n // When no basePath (standalone mode), just render InnerRoutes at root.\n return (\n <Suspense fallback={<LoadingState message=\"Loading page...\" />}>\n <Routes>\n {/* Wildcard route to let InnerRoutes handle all paths */}\n <Route path=\"/*\" element={<InnerRoutes />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DevportalRoutes.js","names":[],"sources":["../../src/devportal/DevportalRoutes.tsx"],"sourcesContent":["import { Suspense, lazy, useEffect, type ReactNode } from \"react\";\nimport { Routes, Route, Navigate } from \"react-router-dom\";\nimport { LoadingState } from \"./components/LoadingState\";\nimport { FeatureFlaggedRoute } from \"./components/FeatureFlaggedRoute\";\nimport { TelemetryErrorBoundary } from \"./components/TelemetryErrorBoundary\";\nimport { SectionNav } from \"./components/SectionNav\";\nimport { useDevportal } from \"./providers/DevportalProvider\";\n\n/**\n * Catch-all redirect target for the unmatched `*` route. Uses the\n * DevportalProvider's `basePath` and `navigate` so the redirect works\n * regardless of the integration mode (shell or standalone). Falls back to a\n * relative Navigate when neither is wired, which is the standalone/test path.\n */\nfunction CatchAllRedirect() {\n const { basePath, navigate } = useDevportal();\n useEffect(() => {\n if (basePath && navigate) {\n const target = basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath;\n navigate(target || \"/\");\n }\n }, [basePath, navigate]);\n if (basePath && navigate) return null;\n return <Navigate to=\"..\" replace />;\n}\n\n/**\n * Wrap a page element with the per-route feature flag gate and a\n * telemetry-emitting error boundary. The flag name follows\n * `devportal.<page-slug>` convention; when disabled the user sees a\n * graceful fallback instead of a route-level crash.\n *\n * Per `dev/platform/context/feature-flags` and spec\n * `microfrontends/47-FRONTEND-EVENT-BUS.md` (error.boundary emission).\n */\nfunction gated(slug: string, element: ReactNode): ReactNode {\n return (\n <TelemetryErrorBoundary scope={slug}>\n <FeatureFlaggedRoute flag={`devportal.${slug}`}>\n {element}\n </FeatureFlaggedRoute>\n </TelemetryErrorBoundary>\n );\n}\n\n// Eager load the main dashboard page\nimport { DashboardPage } from \"./pages/DashboardPage\";\n\n// Lazy load all other pages\nconst OrganizationsPage = lazy(() =>\n import(\"./pages/OrganizationsPage\").then((m) => ({\n default: m.OrganizationsPage,\n })),\n);\nconst OrganizationDetailPage = lazy(() =>\n import(\"./pages/OrganizationDetailPage\").then((m) => ({\n default: m.OrganizationDetailPage,\n })),\n);\nconst CreateOrganizationPage = lazy(() =>\n import(\"./pages/CreateOrganizationPage\").then((m) => ({\n default: m.CreateOrganizationPage,\n })),\n);\nconst OrganizationMembersPage = lazy(() =>\n import(\"./pages/OrganizationMembersPage\").then((m) => ({\n default: m.OrganizationMembersPage,\n })),\n);\nconst RevenueRedirectPage = lazy(() =>\n import(\"./pages/RevenueRedirectPage\").then((m) => ({\n default: m.RevenueRedirectPage,\n })),\n);\nconst ApplicationsPage = lazy(() =>\n import(\"./pages/ApplicationsPage\").then((m) => ({\n default: m.ApplicationsPage,\n })),\n);\nconst ApplicationDetailPage = lazy(() =>\n import(\"./pages/ApplicationDetailPage\").then((m) => ({\n default: m.ApplicationDetailPage,\n })),\n);\nconst CreateApplicationPage = lazy(() =>\n import(\"./pages/CreateApplicationPage\").then((m) => ({\n default: m.CreateApplicationPage,\n })),\n);\nconst EditApplicationPage = lazy(() =>\n import(\"./pages/EditApplicationPage\").then((m) => ({\n default: m.EditApplicationPage,\n })),\n);\nconst ApplicationVersionsPage = lazy(() =>\n import(\"./pages/ApplicationVersionsPage\").then((m) => ({\n default: m.ApplicationVersionsPage,\n })),\n);\nconst OAuthClientsPage = lazy(() =>\n import(\"./pages/OAuthClientsPage\").then((m) => ({\n default: m.OAuthClientsPage,\n })),\n);\nconst CreateOAuthClientPage = lazy(() =>\n import(\"./pages/CreateOAuthClientPage\").then((m) => ({\n default: m.CreateOAuthClientPage,\n })),\n);\nconst OAuthClientDetailPage = lazy(() =>\n import(\"./pages/OAuthClientDetailPage\").then((m) => ({\n default: m.OAuthClientDetailPage,\n })),\n);\nconst ApiKeysPage = lazy(() =>\n import(\"./pages/ApiKeysPage\").then((m) => ({ default: m.ApiKeysPage })),\n);\nconst CreateApiKeyPage = lazy(() =>\n import(\"./pages/CreateApiKeyPage\").then((m) => ({\n default: m.CreateApiKeyPage,\n })),\n);\nconst WebhooksPage = lazy(() =>\n import(\"./pages/WebhooksPage\").then((m) => ({ default: m.WebhooksPage })),\n);\nconst CreateWebhookPage = lazy(() =>\n import(\"./pages/CreateWebhookPage\").then((m) => ({\n default: m.CreateWebhookPage,\n })),\n);\nconst WebhookDetailPage = lazy(() =>\n import(\"./pages/WebhookDetailPage\").then((m) => ({\n default: m.WebhookDetailPage,\n })),\n);\nconst AnalyticsDashboardPage = lazy(() =>\n import(\"./pages/AnalyticsDashboardPage\").then((m) => ({\n default: m.AnalyticsDashboardPage,\n })),\n);\nconst DocumentationPage = lazy(() =>\n import(\"./pages/DocumentationPage\").then((m) => ({\n default: m.DocumentationPage,\n })),\n);\nconst ResourcesPage = lazy(() =>\n import(\"./pages/ResourcesPage\").then((m) => ({ default: m.ResourcesPage })),\n);\nconst SettingsPage = lazy(() =>\n import(\"./pages/SettingsPage\").then((m) => ({ default: m.SettingsPage })),\n);\nconst PublishPage = lazy(() =>\n import(\"./pages/PublishPage\").then((m) => ({ default: m.PublishPage })),\n);\nconst AppLogsPage = lazy(() =>\n import(\"./pages/AppLogsPage\").then((m) => ({ default: m.AppLogsPage })),\n);\nconst DelegationsPage = lazy(() =>\n import(\"./pages/DelegationsPage\").then((m) => ({\n default: m.DelegationsPage,\n })),\n);\nconst ListingPreviewPage = lazy(() =>\n import(\"./pages/ListingPreviewPage\").then((m) => ({\n default: m.ListingPreviewPage,\n })),\n);\nconst StoreSubmissionPage = lazy(() =>\n import(\"./pages/StoreSubmissionPage\").then((m) => ({\n default: m.StoreSubmissionPage,\n })),\n);\nconst PublisherProfilePage = lazy(() =>\n import(\"./pages/PublisherProfilePage\").then((m) => ({\n default: m.PublisherProfilePage,\n })),\n);\nconst SetupPage = lazy(() =>\n import(\"./pages/SetupPage\").then((m) => ({ default: m.SetupPage })),\n);\n\n/**\n * Inner routes component - renders actual page routes\n */\nfunction InnerRoutes() {\n return (\n <>\n <SectionNav />\n <Routes>\n {/* Dashboard */}\n <Route index element={gated(\"dashboard\", <DashboardPage />)} />\n\n {/* Organizations */}\n <Route\n path=\"organizations\"\n element={gated(\"organizations\", <OrganizationsPage />)}\n />\n <Route\n path=\"organizations/new\"\n element={gated(\"organizations.create\", <CreateOrganizationPage />)}\n />\n <Route\n path=\"organizations/:orgId\"\n element={gated(\"organizations.detail\", <OrganizationDetailPage />)}\n />\n <Route\n path=\"organizations/:orgId/members\"\n element={gated(\"organizations.members\", <OrganizationMembersPage />)}\n />\n <Route\n path=\"organizations/:orgId/revenue\"\n element={gated(\"organizations.revenue\", <RevenueRedirectPage />)}\n />\n\n {/* Applications */}\n <Route path=\"apps\" element={gated(\"apps\", <ApplicationsPage />)} />\n <Route\n path=\"apps/new\"\n element={gated(\"apps.create\", <CreateApplicationPage />)}\n />\n <Route\n path=\"apps/:appId\"\n element={gated(\"apps.detail\", <ApplicationDetailPage />)}\n />\n <Route\n path=\"apps/:appId/edit\"\n element={gated(\"apps.edit\", <EditApplicationPage />)}\n />\n <Route\n path=\"apps/:appId/versions\"\n element={gated(\"apps.versions\", <ApplicationVersionsPage />)}\n />\n <Route\n path=\"apps/:appId/publish\"\n element={gated(\"apps.publish\", <PublishPage />)}\n />\n <Route\n path=\"apps/:appId/store-submission\"\n element={gated(\"apps.storeSubmission\", <StoreSubmissionPage />)}\n />\n <Route\n path=\"apps/:appId/listing\"\n element={gated(\"apps.listing\", <ListingPreviewPage />)}\n />\n <Route\n path=\"apps/:appId/logs\"\n element={gated(\"apps.logs\", <AppLogsPage />)}\n />\n\n {/* OAuth Clients — user-scoped via auth-svc (no app nesting) */}\n <Route path=\"oauth\" element={gated(\"oauth\", <OAuthClientsPage />)} />\n <Route\n path=\"oauth/new\"\n element={gated(\"oauth.create\", <CreateOAuthClientPage />)}\n />\n <Route\n path=\"oauth/:clientId\"\n element={gated(\"oauth.detail\", <OAuthClientDetailPage />)}\n />\n\n {/* API Keys — user-scoped via auth-svc (no app nesting) */}\n <Route path=\"api-keys\" element={gated(\"apiKeys\", <ApiKeysPage />)} />\n <Route\n path=\"api-keys/new\"\n element={gated(\"apiKeys.create\", <CreateApiKeyPage />)}\n />\n\n {/* Webhooks (App-specific) */}\n <Route\n path=\"apps/:appId/webhooks\"\n element={gated(\"apps.webhooks\", <WebhooksPage />)}\n />\n <Route\n path=\"apps/:appId/webhooks/new\"\n element={gated(\"apps.webhooks.create\", <CreateWebhookPage />)}\n />\n <Route\n path=\"apps/:appId/webhooks/:webhookId\"\n element={gated(\"apps.webhooks.detail\", <WebhookDetailPage />)}\n />\n\n {/* App Analytics */}\n <Route\n path=\"apps/:appId/analytics\"\n element={gated(\"apps.analytics\", <AnalyticsDashboardPage />)}\n />\n\n {/* Delegations */}\n <Route\n path=\"delegations\"\n element={gated(\"delegations\", <DelegationsPage />)}\n />\n\n {/* Global Webhooks views */}\n <Route\n path=\"webhooks/new\"\n element={gated(\"webhooks.create\", <CreateWebhookPage />)}\n />\n <Route path=\"webhooks\" element={gated(\"webhooks\", <WebhooksPage />)} />\n\n {/* Analytics & Revenue */}\n <Route\n path=\"analytics\"\n element={gated(\"analytics\", <AnalyticsDashboardPage />)}\n />\n <Route\n path=\"revenue\"\n element={gated(\"revenue\", <RevenueRedirectPage />)}\n />\n\n {/* Documentation & Resources */}\n <Route path=\"docs\" element={gated(\"docs\", <DocumentationPage />)} />\n <Route\n path=\"resources\"\n element={gated(\"resources\", <ResourcesPage />)}\n />\n\n {/* Admin surfaces (e.g. /admin/reviews) live in admin-app via\n AdminDevportalRoot — intentionally not mounted in user shells. */}\n\n {/* Publisher */}\n <Route\n path=\"publisher/profile\"\n element={gated(\"publisher.profile\", <PublisherProfilePage />)}\n />\n\n {/* Settings */}\n <Route path=\"settings\" element={gated(\"settings\", <SettingsPage />)} />\n\n {/* Catch-all redirect to dashboard */}\n <Route path=\"*\" element={<CatchAllRedirect />} />\n </Routes>\n </>\n );\n}\n\n/**\n * Developer Portal Routes\n *\n * Defines all the routes for the developer portal microfrontend.\n * Uses lazy loading for all pages except the dashboard for optimal performance.\n *\n * When integrated into a shell (basePath provided), the shell already handles\n * the basePath route (e.g., /devportal/*), so this component should render\n * routes relative to that path - NOT nest them under basePath again.\n *\n * Example:\n * - Shell route: /devportal/*\n * - User navigates to: /devportal/organizations\n * - Inside DevportalRoutes, the path is: /organizations (relative to shell route)\n * - InnerRoutes matches: organizations -> OrganizationsPage\n */\nexport function DevportalRoutes() {\n // When basePath is provided, we're in shell integration mode.\n // The shell already matched the basePath route, so we render routes\n // relative to that - using wildcard to catch all sub-paths.\n // When no basePath (standalone mode), just render InnerRoutes at root.\n return (\n <Suspense fallback={<LoadingState message=\"Loading page...\" />}>\n <Routes>\n {/* Setup wizard renders without SectionNav */}\n <Route path=\"setup\" element={gated(\"setup\", <SetupPage />)} />\n {/* All other routes get SectionNav via InnerRoutes */}\n <Route path=\"/*\" element={<InnerRoutes />} />\n </Routes>\n </Suspense>\n );\n}\n"],"mappings":"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"}
|