diff --git a/.changeset/beige-ravens-count.md b/.changeset/beige-ravens-count.md
new file mode 100644
index 0000000000..f7aaa00b48
--- /dev/null
+++ b/.changeset/beige-ravens-count.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-home': patch
+---
+
+Added a New Frontend System App Root Element for the `` component
diff --git a/.changeset/yellow-streets-kiss.md b/.changeset/yellow-streets-kiss.md
new file mode 100644
index 0000000000..d6c22887c3
--- /dev/null
+++ b/.changeset/yellow-streets-kiss.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-signals': patch
+---
+
+Added a New Frontend System App Root Element for the `` component
diff --git a/plugins/home/report-alpha.api.md b/plugins/home/report-alpha.api.md
index f36589ea51..98a8cab823 100644
--- a/plugins/home/report-alpha.api.md
+++ b/plugins/home/report-alpha.api.md
@@ -19,6 +19,21 @@ const _default: FrontendPlugin<
},
{},
{
+ 'app-root-element:home/visit-listener': ExtensionDefinition<{
+ kind: 'app-root-element';
+ name: 'visit-listener';
+ config: {};
+ configInput: {};
+ output: ConfigurableExtensionDataRef<
+ JSX_2.Element,
+ 'core.reactElement',
+ {}
+ >;
+ inputs: {};
+ params: {
+ element: JSX.Element | (() => JSX.Element);
+ };
+ }>;
'page:home': ExtensionDefinition<{
config: {
path: string | undefined;
diff --git a/plugins/home/src/alpha.tsx b/plugins/home/src/alpha.tsx
index fc34c6e806..880b53af40 100644
--- a/plugins/home/src/alpha.tsx
+++ b/plugins/home/src/alpha.tsx
@@ -21,8 +21,10 @@ import {
PageBlueprint,
createFrontendPlugin,
createRouteRef,
+ AppRootElementBlueprint,
} from '@backstage/frontend-plugin-api';
import { compatWrapper } from '@backstage/core-compat-api';
+import { VisitListener } from './components/';
const rootRouteRef = createRouteRef();
@@ -63,13 +65,20 @@ const homePage = PageBlueprint.makeWithOverrides({
},
});
+const visitListenerAppRootElement = AppRootElementBlueprint.make({
+ name: 'visit-listener',
+ params: {
+ element: ,
+ },
+});
+
/**
* @alpha
*/
export default createFrontendPlugin({
pluginId: 'home',
info: { packageJson: () => import('../package.json') },
- extensions: [homePage],
+ extensions: [homePage, visitListenerAppRootElement],
routes: {
root: rootRouteRef,
},
diff --git a/plugins/signals/package.json b/plugins/signals/package.json
index 8243dab383..1f5bac86f9 100644
--- a/plugins/signals/package.json
+++ b/plugins/signals/package.json
@@ -51,6 +51,7 @@
"test": "backstage-cli package test"
},
"dependencies": {
+ "@backstage/core-compat-api": "workspace:^",
"@backstage/core-components": "workspace:^",
"@backstage/core-plugin-api": "workspace:^",
"@backstage/frontend-plugin-api": "workspace:^",
diff --git a/plugins/signals/report-alpha.api.md b/plugins/signals/report-alpha.api.md
index 45ee0da3b8..3fc89308c1 100644
--- a/plugins/signals/report-alpha.api.md
+++ b/plugins/signals/report-alpha.api.md
@@ -7,6 +7,7 @@ import { AnyApiFactory } from '@backstage/frontend-plugin-api';
import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api';
import { ExtensionDefinition } from '@backstage/frontend-plugin-api';
import { FrontendPlugin } from '@backstage/frontend-plugin-api';
+import { JSX as JSX_2 } from 'react';
// @alpha (undocumented)
const _default: FrontendPlugin<
@@ -28,6 +29,21 @@ const _default: FrontendPlugin<
factory: AnyApiFactory;
};
}>;
+ 'app-root-element:signals/signals-display': ExtensionDefinition<{
+ kind: 'app-root-element';
+ name: 'signals-display';
+ config: {};
+ configInput: {};
+ output: ConfigurableExtensionDataRef<
+ JSX_2.Element,
+ 'core.reactElement',
+ {}
+ >;
+ inputs: {};
+ params: {
+ element: JSX.Element | (() => JSX.Element);
+ };
+ }>;
}
>;
export default _default;
diff --git a/plugins/signals/src/alpha.tsx b/plugins/signals/src/alpha.tsx
index 90b78b05fd..38955473e1 100644
--- a/plugins/signals/src/alpha.tsx
+++ b/plugins/signals/src/alpha.tsx
@@ -16,6 +16,7 @@
import {
ApiBlueprint,
+ AppRootElementBlueprint,
createApiFactory,
createFrontendPlugin,
discoveryApiRef,
@@ -23,6 +24,8 @@ import {
} from '@backstage/frontend-plugin-api';
import { signalApiRef } from '@backstage/plugin-signals-react';
import { SignalClient } from './api/SignalClient';
+import { SignalsDisplay } from './plugin';
+import { compatWrapper } from '@backstage/core-compat-api';
const api = ApiBlueprint.make({
params: {
@@ -42,9 +45,16 @@ const api = ApiBlueprint.make({
},
});
+const signalsDisplayAppRootElement = AppRootElementBlueprint.make({
+ name: 'signals-display',
+ params: {
+ element: compatWrapper(),
+ },
+});
+
/** @alpha */
export default createFrontendPlugin({
pluginId: 'signals',
info: { packageJson: () => import('../package.json') },
- extensions: [api],
+ extensions: [api, signalsDisplayAppRootElement],
});
diff --git a/yarn.lock b/yarn.lock
index 45962f279b..b244b2539e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8633,6 +8633,7 @@ __metadata:
dependencies:
"@backstage/cli": "workspace:^"
"@backstage/core-app-api": "workspace:^"
+ "@backstage/core-compat-api": "workspace:^"
"@backstage/core-components": "workspace:^"
"@backstage/core-plugin-api": "workspace:^"
"@backstage/dev-utils": "workspace:^"