+
+
+ {appsByCategory.map((category, index) => (
+
+ {index === 0 ? (
+
+ ) : (
+ <>
+
+
+ >
+ )}
+
+ {category.title}
+
+
+
+ {category.apps.map((app: AppProps) => (
+
+
+
+ ))}
+
+
+ ))}
+
+ );
+};
diff --git a/packages/kbn-management/cards_navigation/src/consts.tsx b/packages/kbn-management/cards_navigation/src/consts.tsx
new file mode 100644
index 000000000000..b01c6e1e024a
--- /dev/null
+++ b/packages/kbn-management/cards_navigation/src/consts.tsx
@@ -0,0 +1,171 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+import React from 'react';
+import { i18n } from '@kbn/i18n';
+import { EuiIcon } from '@elastic/eui';
+
+import { AppDefinition } from './types';
+
+export enum appIds {
+ INGEST_PIPELINES = 'ingest_pipelines',
+ PIPELINES = 'pipelines',
+ INDEX_MANAGEMENT = 'index_management',
+ TRANSFORM = 'transform',
+ ML = 'jobsListLink',
+ DATA_VIEW = 'data_view',
+ SAVED_OBJECTS = 'objects',
+ TAGS = 'tags',
+ FILES_MANAGEMENT = 'filesManagement',
+ API_KEYS = 'api_keys',
+ DATA_VIEWS = 'dataViews',
+ REPORTING = 'reporting',
+ CONNECTORS = 'triggersActionsConnectors',
+ RULES = 'triggersActions',
+ MAINTENANCE_WINDOWS = 'maintenanceWindows',
+}
+
+// Create new type that is a union of all the appId values
+export type AppId = `${appIds}`;
+
+export const appCategories = {
+ DATA: 'data',
+ CONTENT: 'content',
+ OTHER: 'other',
+};
+
+export const appDefinitions: Record