{infoCards.length > 0 ? (
diff --git a/plugins/gs/src/components/utils/entity.ts b/plugins/gs/src/components/utils/entity.ts
index f7d4acfb..de85a8c2 100644
--- a/plugins/gs/src/components/utils/entity.ts
+++ b/plugins/gs/src/components/utils/entity.ts
@@ -88,3 +88,7 @@ export const isEntityHelmChartTagged = (entity: Entity) => {
const tags = entity.metadata.tags ?? [];
return tags.includes('helmchart');
};
+
+export const isEntityWithIcon = (entity: Entity) => {
+ return Boolean(getIconUrlFromEntity(entity));
+};
diff --git a/plugins/gs/src/plugin.tsx b/plugins/gs/src/plugin.tsx
index 178332a8..f274d2b1 100644
--- a/plugins/gs/src/plugin.tsx
+++ b/plugins/gs/src/plugin.tsx
@@ -8,6 +8,7 @@ import {
EntityCardBlueprint,
EntityContentBlueprint,
EntityContentLayoutBlueprint,
+ EntityHeaderBlueprint,
} from '@backstage/plugin-catalog-react/alpha';
import {
FormFieldBlueprint,
@@ -38,6 +39,7 @@ import {
isEntityHelmChartTagged,
isEntityInstallationResource,
isEntityKratixResource,
+ isEntityWithIcon,
} from './components/utils/entity';
import {
gsAuthProvidersApiRef,
@@ -314,6 +316,19 @@ const helmChartContentLayout = EntityContentLayoutBlueprint.make({
},
});
+// Custom entity header with icon for entities that have a GS icon annotation
+const iconEntityHeader = EntityHeaderBlueprint.make({
+ name: 'gs-icon',
+ params: {
+ filter: entity => (entity ? isEntityWithIcon(entity) : false),
+ loader: async () => {
+ const { CustomEntityHeader } =
+ await import('./components/catalog/CustomEntityHeader');
+ return ;
+ },
+ },
+});
+
// Scaffolder form field extensions
const chartPickerFormField = FormFieldBlueprint.make({
name: 'chart-picker',
@@ -554,6 +569,8 @@ export const gsPlugin = createFrontendPlugin({
kratixResourcesEntityContent,
// Entity content layout
helmChartContentLayout,
+ // Entity header with icon
+ iconEntityHeader,
// Scaffolder form fields
chartPickerFormField,
chartTagPickerFormField,