diff --git a/packages/core-app-api/src/app/App.tsx b/packages/core-app-api/src/app/App.tsx index c8bd8fec8f..7857c8b35f 100644 --- a/packages/core-app-api/src/app/App.tsx +++ b/packages/core-app-api/src/app/App.tsx @@ -66,7 +66,6 @@ import { RoutingProvider } from '../routing/RoutingProvider'; import { validateRoutes } from '../routing/validation'; import { AppContextProvider } from './AppContext'; import { AppIdentity } from './AppIdentity'; -import { AppThemeProvider } from './AppThemeProvider'; import { AppComponents, AppConfigLoader, @@ -151,12 +150,14 @@ function useConfigLoader( noConfigNode = ; } + const { ThemeProvider } = components; + // Before the config is loaded we can't use a router, so exit early if (noConfigNode) { return { node: ( - {noConfigNode} + {noConfigNode} ), }; @@ -303,10 +304,12 @@ export class PrivateAppImpl implements BackstageApp { return loadedConfig.node; } + const { ThemeProvider } = this.components; + return ( - + {children} - + ); diff --git a/packages/core-app-api/src/app/createApp.tsx b/packages/core-app-api/src/app/createApp.tsx index 1d74f93add..a2d22c8dd0 100644 --- a/packages/core-app-api/src/app/createApp.tsx +++ b/packages/core-app-api/src/app/createApp.tsx @@ -27,6 +27,7 @@ import { useInRouterContext, } from 'react-router-dom'; import { PrivateAppImpl } from './App'; +import { AppThemeProvider } from './AppThemeProvider'; import { defaultApis } from './defaultApis'; import { defaultAppIcons } from './icons'; import { @@ -149,6 +150,7 @@ export function createApp(options?: AppOptions) { Progress: Progress, Router: BrowserRouter, ErrorBoundaryFallback: DefaultErrorBoundaryFallback, + ThemeProvider: AppThemeProvider, ...options?.components, }; const themes = options?.themes ?? [ diff --git a/packages/core-app-api/src/app/types.ts b/packages/core-app-api/src/app/types.ts index 30ce45abe9..09121f8105 100644 --- a/packages/core-app-api/src/app/types.ts +++ b/packages/core-app-api/src/app/types.ts @@ -72,6 +72,7 @@ export type AppComponents = { Progress: ComponentType<{}>; Router: ComponentType<{}>; ErrorBoundaryFallback: ComponentType; + ThemeProvider: ComponentType<{}>; /** * An optional sign-in page that will be rendered instead of the AppRouter at startup.