mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
[Stateful sidenav] Update static definitions (#179043)
This commit is contained in:
parent
3f91198827
commit
43de4b5d57
39 changed files with 1118 additions and 99 deletions
5
.github/CODEOWNERS
vendored
5
.github/CODEOWNERS
vendored
|
@ -798,8 +798,9 @@ packages/kbn-shared-ux-utility @elastic/appex-sharedux
|
|||
x-pack/plugins/observability_solution/slo @elastic/obs-ux-management-team
|
||||
x-pack/packages/kbn-slo-schema @elastic/obs-ux-management-team
|
||||
x-pack/plugins/snapshot_restore @elastic/kibana-management
|
||||
packages/solution-nav/es @elastic/appex-sharedux
|
||||
packages/solution-nav/oblt @elastic/appex-sharedux
|
||||
packages/solution-nav/analytics @elastic/appex-sharedux @elastic/kibana-data-discovery @elastic/kibana-presentation @elastic/kibana-visualizations
|
||||
packages/solution-nav/es @elastic/appex-sharedux @elastic/enterprise-search-frontend
|
||||
packages/solution-nav/oblt @elastic/appex-sharedux @elastic/obs-ux-management-team
|
||||
packages/kbn-some-dev-log @elastic/kibana-operations
|
||||
packages/kbn-sort-package-json @elastic/kibana-operations
|
||||
packages/kbn-sort-predicates @elastic/kibana-visualizations
|
||||
|
|
|
@ -800,6 +800,7 @@
|
|||
"@kbn/slo-plugin": "link:x-pack/plugins/observability_solution/slo",
|
||||
"@kbn/slo-schema": "link:x-pack/packages/kbn-slo-schema",
|
||||
"@kbn/snapshot-restore-plugin": "link:x-pack/plugins/snapshot_restore",
|
||||
"@kbn/solution-nav-analytics": "link:packages/solution-nav/analytics",
|
||||
"@kbn/solution-nav-es": "link:packages/solution-nav/es",
|
||||
"@kbn/solution-nav-oblt": "link:packages/solution-nav/oblt",
|
||||
"@kbn/sort-predicates": "link:packages/kbn-sort-predicates",
|
||||
|
|
|
@ -20,7 +20,16 @@ import type {
|
|||
AppId as ManagementApp,
|
||||
DeepLinkId as ManagementLink,
|
||||
} from '@kbn/deeplinks-management';
|
||||
import type { AppId as SearchApp, DeepLinkId as SearchLink } from '@kbn/deeplinks-search';
|
||||
import type {
|
||||
EnterpriseSearchApp,
|
||||
EnterpriseSearchContentApp,
|
||||
EnterpriseSearchApplicationsApp,
|
||||
EnterpriseSearchAnalyticsApp,
|
||||
EnterpriseSearchAppsearchApp,
|
||||
EnterpriseSearchWorkplaceSearchApp,
|
||||
ServerlessSearchApp,
|
||||
DeepLinkId as SearchLink,
|
||||
} from '@kbn/deeplinks-search';
|
||||
import type {
|
||||
AppId as ObservabilityApp,
|
||||
DeepLinkId as ObservabilityLink,
|
||||
|
@ -39,7 +48,13 @@ export type AppId =
|
|||
| AnalyticsApp
|
||||
| MlApp
|
||||
| ManagementApp
|
||||
| SearchApp
|
||||
| EnterpriseSearchApp
|
||||
| EnterpriseSearchContentApp
|
||||
| EnterpriseSearchApplicationsApp
|
||||
| EnterpriseSearchAnalyticsApp
|
||||
| EnterpriseSearchAppsearchApp
|
||||
| EnterpriseSearchWorkplaceSearchApp
|
||||
| ServerlessSearchApp
|
||||
| ObservabilityApp
|
||||
| SecurityApp
|
||||
| FleetApp
|
||||
|
|
|
@ -12,6 +12,12 @@ export const DASHBOARD_APP_ID = 'dashboards';
|
|||
|
||||
export const VISUALIZE_APP_ID = 'visualize';
|
||||
|
||||
export const MAPS_APP_ID = 'maps';
|
||||
|
||||
export const CANVAS_APP_ID = 'canvas';
|
||||
|
||||
export const GRAPH_APP_ID = 'graph';
|
||||
|
||||
export const DISCOVER_ESQL_LOCATOR = 'DISCOVER_ESQL_LOCATOR';
|
||||
|
||||
export const DASHBOARD_APP_LOCATOR = 'DASHBOARD_APP_LOCATOR';
|
||||
|
|
|
@ -11,9 +11,18 @@ import {
|
|||
DISCOVER_APP_ID,
|
||||
DISCOVER_ESQL_LOCATOR,
|
||||
VISUALIZE_APP_ID,
|
||||
MAPS_APP_ID,
|
||||
CANVAS_APP_ID,
|
||||
GRAPH_APP_ID,
|
||||
} from './constants';
|
||||
|
||||
export type AppId = typeof DISCOVER_APP_ID | typeof DASHBOARD_APP_ID | typeof VISUALIZE_APP_ID;
|
||||
export type AppId =
|
||||
| typeof DISCOVER_APP_ID
|
||||
| typeof DASHBOARD_APP_ID
|
||||
| typeof VISUALIZE_APP_ID
|
||||
| typeof MAPS_APP_ID
|
||||
| typeof CANVAS_APP_ID
|
||||
| typeof GRAPH_APP_ID;
|
||||
|
||||
export type DeepLinkId = AppId;
|
||||
|
||||
|
|
|
@ -21,3 +21,9 @@ export const SYNTHETICS_APP_ID = 'synthetics';
|
|||
export const OBSERVABILITY_ONBOARDING_APP_ID = 'observabilityOnboarding';
|
||||
|
||||
export const SLO_APP_ID = 'slo';
|
||||
|
||||
export const AI_ASSISTANT_APP_ID = 'observabilityAIAssistant';
|
||||
|
||||
export const OBLT_UX_APP_ID = 'ux';
|
||||
|
||||
export const OBLT_PROFILING_APP_ID = 'profiling';
|
||||
|
|
|
@ -15,6 +15,9 @@ import {
|
|||
OBSERVABILITY_OVERVIEW_APP_ID,
|
||||
SYNTHETICS_APP_ID,
|
||||
SLO_APP_ID,
|
||||
AI_ASSISTANT_APP_ID,
|
||||
OBLT_UX_APP_ID,
|
||||
OBLT_PROFILING_APP_ID,
|
||||
} from './constants';
|
||||
|
||||
type LogsApp = typeof LOGS_APP_ID;
|
||||
|
@ -24,7 +27,10 @@ type MetricsApp = typeof METRICS_APP_ID;
|
|||
type ApmApp = typeof APM_APP_ID;
|
||||
type SyntheticsApp = typeof SYNTHETICS_APP_ID;
|
||||
type ObservabilityOnboardingApp = typeof OBSERVABILITY_ONBOARDING_APP_ID;
|
||||
type SLO_APP = typeof SLO_APP_ID;
|
||||
type SloApp = typeof SLO_APP_ID;
|
||||
type AiAssistantApp = typeof AI_ASSISTANT_APP_ID;
|
||||
type ObltUxApp = typeof OBLT_UX_APP_ID;
|
||||
type ObltProfilingApp = typeof OBLT_PROFILING_APP_ID;
|
||||
|
||||
export type AppId =
|
||||
| LogsApp
|
||||
|
@ -34,7 +40,10 @@ export type AppId =
|
|||
| ApmApp
|
||||
| MetricsApp
|
||||
| SyntheticsApp
|
||||
| SLO_APP;
|
||||
| SloApp
|
||||
| AiAssistantApp
|
||||
| ObltUxApp
|
||||
| ObltProfilingApp;
|
||||
|
||||
export type LogsLinkId = 'log-categories' | 'settings' | 'anomalies' | 'stream';
|
||||
|
||||
|
@ -63,7 +72,7 @@ export type ApmLinkId =
|
|||
|
||||
export type SyntheticsLinkId = 'certificates' | 'overview';
|
||||
|
||||
export type SLOLinkId = 'slo';
|
||||
export type ProfilingLinkId = 'stacktraces' | 'flamegraphs' | 'functions';
|
||||
|
||||
export type LinkId =
|
||||
| LogsLinkId
|
||||
|
@ -71,7 +80,7 @@ export type LinkId =
|
|||
| MetricsLinkId
|
||||
| ApmLinkId
|
||||
| SyntheticsLinkId
|
||||
| SLOLinkId;
|
||||
| ProfilingLinkId;
|
||||
|
||||
export type DeepLinkId =
|
||||
| AppId
|
||||
|
@ -79,4 +88,5 @@ export type DeepLinkId =
|
|||
| `${ObservabilityOverviewApp}:${ObservabilityOverviewLinkId}`
|
||||
| `${MetricsApp}:${MetricsLinkId}`
|
||||
| `${ApmApp}:${ApmLinkId}`
|
||||
| `${SyntheticsApp}:${SyntheticsLinkId}`;
|
||||
| `${SyntheticsApp}:${SyntheticsLinkId}`
|
||||
| `${ObltProfilingApp}:${ProfilingLinkId}`;
|
||||
|
|
|
@ -11,6 +11,9 @@ export {
|
|||
OBSERVABILITY_LOGS_EXPLORER_APP_ID,
|
||||
OBSERVABILITY_ONBOARDING_APP_ID,
|
||||
OBSERVABILITY_OVERVIEW_APP_ID,
|
||||
AI_ASSISTANT_APP_ID,
|
||||
OBLT_UX_APP_ID,
|
||||
OBLT_PROFILING_APP_ID,
|
||||
} from './constants';
|
||||
export type { AppId, DeepLinkId } from './deep_links';
|
||||
export * from './locators';
|
||||
|
|
|
@ -6,5 +6,11 @@
|
|||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
export const ENTERPRISE_SEARCH_APP_ID = 'enterpriseSearch';
|
||||
export const ENTERPRISE_SEARCH_CONTENT_APP_ID = 'enterpriseSearchContent';
|
||||
export const ENTERPRISE_SEARCH_APPLICATIONS_APP_ID = 'enterpriseSearchApplications';
|
||||
export const ENTERPRISE_SEARCH_ANALYTICS_APP_ID = 'enterpriseSearchAnalytics';
|
||||
export const ENTERPRISE_SEARCH_APPSEARCH_APP_ID = 'appSearch';
|
||||
export const ENTERPRISE_SEARCH_WORKPLACESEARCH_APP_ID = 'workplaceSearch';
|
||||
export const SERVERLESS_ES_APP_ID = 'serverlessElasticsearch';
|
||||
export const SERVERLESS_ES_CONNECTORS_ID = 'serverlessConnectors';
|
||||
|
|
|
@ -6,9 +6,41 @@
|
|||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import { SERVERLESS_ES_APP_ID, SERVERLESS_ES_CONNECTORS_ID } from './constants';
|
||||
import {
|
||||
SERVERLESS_ES_APP_ID,
|
||||
SERVERLESS_ES_CONNECTORS_ID,
|
||||
ENTERPRISE_SEARCH_APP_ID,
|
||||
ENTERPRISE_SEARCH_CONTENT_APP_ID,
|
||||
ENTERPRISE_SEARCH_APPLICATIONS_APP_ID,
|
||||
ENTERPRISE_SEARCH_ANALYTICS_APP_ID,
|
||||
ENTERPRISE_SEARCH_APPSEARCH_APP_ID,
|
||||
ENTERPRISE_SEARCH_WORKPLACESEARCH_APP_ID,
|
||||
} from './constants';
|
||||
|
||||
export type AppId = typeof SERVERLESS_ES_APP_ID;
|
||||
export type EnterpriseSearchApp = typeof ENTERPRISE_SEARCH_APP_ID;
|
||||
export type EnterpriseSearchContentApp = typeof ENTERPRISE_SEARCH_CONTENT_APP_ID;
|
||||
export type EnterpriseSearchApplicationsApp = typeof ENTERPRISE_SEARCH_APPLICATIONS_APP_ID;
|
||||
export type EnterpriseSearchAnalyticsApp = typeof ENTERPRISE_SEARCH_ANALYTICS_APP_ID;
|
||||
export type EnterpriseSearchAppsearchApp = typeof ENTERPRISE_SEARCH_APPSEARCH_APP_ID;
|
||||
export type EnterpriseSearchWorkplaceSearchApp = typeof ENTERPRISE_SEARCH_WORKPLACESEARCH_APP_ID;
|
||||
export type ServerlessSearchApp = typeof SERVERLESS_ES_APP_ID;
|
||||
export type ConnectorsId = typeof SERVERLESS_ES_CONNECTORS_ID;
|
||||
|
||||
export type DeepLinkId = AppId | ConnectorsId;
|
||||
export type ContentLinkId = 'searchIndices' | 'connectors' | 'webCrawlers' | 'playground';
|
||||
|
||||
export type ApplicationsLinkId = 'searchApplications';
|
||||
|
||||
export type AppsearchLinkId = 'engines';
|
||||
|
||||
export type DeepLinkId =
|
||||
| EnterpriseSearchApp
|
||||
| EnterpriseSearchContentApp
|
||||
| EnterpriseSearchApplicationsApp
|
||||
| EnterpriseSearchAnalyticsApp
|
||||
| EnterpriseSearchAppsearchApp
|
||||
| EnterpriseSearchWorkplaceSearchApp
|
||||
| ServerlessSearchApp
|
||||
| ConnectorsId
|
||||
| `${EnterpriseSearchContentApp}:${ContentLinkId}`
|
||||
| `${EnterpriseSearchApplicationsApp}:${ApplicationsLinkId}`
|
||||
| `${EnterpriseSearchAppsearchApp}:${AppsearchLinkId}`;
|
||||
|
|
|
@ -6,6 +6,24 @@
|
|||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
export { SERVERLESS_ES_APP_ID, SERVERLESS_ES_CONNECTORS_ID } from './constants';
|
||||
export {
|
||||
ENTERPRISE_SEARCH_APP_ID,
|
||||
ENTERPRISE_SEARCH_CONTENT_APP_ID,
|
||||
ENTERPRISE_SEARCH_APPLICATIONS_APP_ID,
|
||||
ENTERPRISE_SEARCH_ANALYTICS_APP_ID,
|
||||
ENTERPRISE_SEARCH_APPSEARCH_APP_ID,
|
||||
ENTERPRISE_SEARCH_WORKPLACESEARCH_APP_ID,
|
||||
SERVERLESS_ES_APP_ID,
|
||||
SERVERLESS_ES_CONNECTORS_ID,
|
||||
} from './constants';
|
||||
|
||||
export type { AppId, DeepLinkId } from './deep_links';
|
||||
export type {
|
||||
EnterpriseSearchApp,
|
||||
EnterpriseSearchContentApp,
|
||||
EnterpriseSearchApplicationsApp,
|
||||
EnterpriseSearchAnalyticsApp,
|
||||
EnterpriseSearchAppsearchApp,
|
||||
EnterpriseSearchWorkplaceSearchApp,
|
||||
ServerlessSearchApp,
|
||||
DeepLinkId,
|
||||
} from './deep_links';
|
||||
|
|
3
packages/solution-nav/analytics/README.md
Normal file
3
packages/solution-nav/analytics/README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# @kbn/solution-nav-analytics
|
||||
|
||||
## This package contains the navigation definition for the Analytics in Kibana stateful.
|
185
packages/solution-nav/analytics/definition.ts
Normal file
185
packages/solution-nav/analytics/definition.ts
Normal file
|
@ -0,0 +1,185 @@
|
|||
/*
|
||||
* 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 { i18n } from '@kbn/i18n';
|
||||
import type {
|
||||
SolutionNavigationDefinition,
|
||||
NavigationTreeDefinition,
|
||||
} from '@kbn/core-chrome-browser';
|
||||
import { of } from 'rxjs';
|
||||
|
||||
const title = i18n.translate(
|
||||
'navigation.analyticsNav.headerSolutionSwitcher.analyticsSolutionTitle',
|
||||
{
|
||||
defaultMessage: 'Analytics',
|
||||
}
|
||||
);
|
||||
const icon = 'visualizeApp';
|
||||
|
||||
const navTree: NavigationTreeDefinition = {
|
||||
body: [
|
||||
{ type: 'recentlyAccessed' },
|
||||
{
|
||||
type: 'navGroup',
|
||||
id: 'analytics_project_nav',
|
||||
title,
|
||||
icon,
|
||||
defaultIsCollapsed: false,
|
||||
isCollapsible: false,
|
||||
breadcrumbStatus: 'hidden',
|
||||
children: [
|
||||
{ link: 'discover' },
|
||||
{
|
||||
link: 'dashboards',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/dashboards'));
|
||||
},
|
||||
},
|
||||
{
|
||||
title: i18n.translate('navigation.analyticsNav.visualizationLinkTitle', {
|
||||
defaultMessage: 'Visualizations',
|
||||
}),
|
||||
link: 'visualize',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return (
|
||||
pathNameSerialized.startsWith(prepend('/app/visualize')) ||
|
||||
pathNameSerialized.startsWith(prepend('/app/lens'))
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'moreEditorsGroup',
|
||||
title: i18n.translate('navigation.analyticsNav.moreEditorsGroupTitle', {
|
||||
defaultMessage: 'More editors...',
|
||||
}),
|
||||
renderAs: 'accordion',
|
||||
spaceBefore: null,
|
||||
children: [
|
||||
{
|
||||
link: 'canvas',
|
||||
},
|
||||
{
|
||||
link: 'graph',
|
||||
},
|
||||
{
|
||||
link: 'maps',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
footer: [
|
||||
{
|
||||
title: i18n.translate('navigation.analyticsNav.management.getStarted', {
|
||||
defaultMessage: 'Get started',
|
||||
}),
|
||||
icon: 'launch',
|
||||
type: 'navItem',
|
||||
link: 'home',
|
||||
},
|
||||
{
|
||||
type: 'navItem',
|
||||
id: 'devTools',
|
||||
title: i18n.translate('navigation.obltNav.devTools', {
|
||||
defaultMessage: 'Developer tools',
|
||||
}),
|
||||
link: 'dev_tools:console',
|
||||
icon: 'editorCodeBlock',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/dev_tools'));
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'navGroup',
|
||||
id: 'project_settings_project_nav',
|
||||
title: i18n.translate('navigation.analyticsNav.management', {
|
||||
defaultMessage: 'Management',
|
||||
}),
|
||||
icon: 'gear',
|
||||
breadcrumbStatus: 'hidden',
|
||||
children: [
|
||||
{
|
||||
link: 'management',
|
||||
title: i18n.translate('navigation.analyticsNav.mngt', {
|
||||
defaultMessage: 'Stack Management',
|
||||
}),
|
||||
spaceBefore: null,
|
||||
renderAs: 'panelOpener',
|
||||
children: [
|
||||
{
|
||||
title: 'Ingest',
|
||||
children: [{ link: 'management:ingest_pipelines' }, { link: 'management:pipelines' }],
|
||||
},
|
||||
{
|
||||
title: 'Data',
|
||||
children: [
|
||||
{ link: 'management:index_management' },
|
||||
{ link: 'management:index_lifecycle_management' },
|
||||
{ link: 'management:snapshot_restore' },
|
||||
{ link: 'management:rollup_jobs' },
|
||||
{ link: 'management:transform' },
|
||||
{ link: 'management:cross_cluster_replication' },
|
||||
{ link: 'management:remote_clusters' },
|
||||
{ link: 'management:migrate_data' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Alerts and Insights',
|
||||
children: [
|
||||
{ link: 'management:triggersActions' },
|
||||
{ link: 'management:cases' },
|
||||
{ link: 'management:triggersActionsConnectors' },
|
||||
{ link: 'management:reporting' },
|
||||
{ link: 'management:jobsListLink' },
|
||||
{ link: 'management:watcher' },
|
||||
{ link: 'management:maintenanceWindows' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Security',
|
||||
children: [
|
||||
{ link: 'management:users' },
|
||||
{ link: 'management:roles' },
|
||||
{ link: 'management:api_keys' },
|
||||
{ link: 'management:role_mappings' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Kibana',
|
||||
children: [
|
||||
{ link: 'management:dataViews' },
|
||||
{ link: 'management:filesManagement' },
|
||||
{ link: 'management:objects' },
|
||||
{ link: 'management:tags' },
|
||||
{ link: 'management:search_sessions' },
|
||||
{ link: 'management:spaces' },
|
||||
{ link: 'management:settings' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Stack',
|
||||
children: [
|
||||
{ link: 'management:license_management' },
|
||||
{ link: 'management:upgrade_assistant' },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export const definition: SolutionNavigationDefinition = {
|
||||
id: 'analytics',
|
||||
title,
|
||||
icon,
|
||||
homePage: 'home',
|
||||
navigationTree$: of(navTree),
|
||||
};
|
9
packages/solution-nav/analytics/index.ts
Normal file
9
packages/solution-nav/analytics/index.ts
Normal file
|
@ -0,0 +1,9 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
export { definition } from './definition';
|
13
packages/solution-nav/analytics/jest.config.js
Normal file
13
packages/solution-nav/analytics/jest.config.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
preset: '@kbn/test',
|
||||
rootDir: '../../..',
|
||||
roots: ['<rootDir>/packages/solution-nav/analytics'],
|
||||
};
|
10
packages/solution-nav/analytics/kibana.jsonc
Normal file
10
packages/solution-nav/analytics/kibana.jsonc
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"type": "shared-common",
|
||||
"id": "@kbn/solution-nav-analytics",
|
||||
"owner": [
|
||||
"@elastic/appex-sharedux",
|
||||
"@elastic/kibana-data-discovery",
|
||||
"@elastic/kibana-presentation",
|
||||
"@elastic/kibana-visualizations"
|
||||
]
|
||||
}
|
6
packages/solution-nav/analytics/package.json
Normal file
6
packages/solution-nav/analytics/package.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"name": "@kbn/solution-nav-analytics",
|
||||
"private": true,
|
||||
"version": "1.0.0",
|
||||
"license": "SSPL-1.0 OR Elastic License 2.0"
|
||||
}
|
22
packages/solution-nav/analytics/tsconfig.json
Normal file
22
packages/solution-nav/analytics/tsconfig.json
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"extends": "../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "target/types",
|
||||
"types": [
|
||||
"jest",
|
||||
"node",
|
||||
"react"
|
||||
]
|
||||
},
|
||||
"include": [
|
||||
"**/*.ts",
|
||||
"**/*.tsx",
|
||||
],
|
||||
"exclude": [
|
||||
"target/**/*"
|
||||
],
|
||||
"kbn_references": [
|
||||
"@kbn/i18n",
|
||||
"@kbn/core-chrome-browser",
|
||||
]
|
||||
}
|
|
@ -6,37 +6,277 @@
|
|||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import type { SolutionNavigationDefinition } from '@kbn/core-chrome-browser';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import type {
|
||||
SolutionNavigationDefinition,
|
||||
NavigationTreeDefinition,
|
||||
} from '@kbn/core-chrome-browser';
|
||||
import { of } from 'rxjs';
|
||||
|
||||
const title = i18n.translate('navigation.searchNav.headerSolutionSwitcher.searchSolutionTitle', {
|
||||
defaultMessage: 'Search',
|
||||
});
|
||||
const icon = 'logoElasticsearch';
|
||||
|
||||
const navTree: NavigationTreeDefinition = {
|
||||
body: [
|
||||
{ type: 'recentlyAccessed' },
|
||||
{
|
||||
type: 'navGroup',
|
||||
id: 'search_project_nav',
|
||||
title,
|
||||
icon,
|
||||
defaultIsCollapsed: false,
|
||||
isCollapsible: false,
|
||||
breadcrumbStatus: 'hidden',
|
||||
children: [
|
||||
{
|
||||
link: 'enterpriseSearch',
|
||||
},
|
||||
{
|
||||
id: 'dev_tools',
|
||||
title: i18n.translate('navigation.searchNav.devTools', {
|
||||
defaultMessage: 'Dev Tools',
|
||||
}),
|
||||
link: 'dev_tools:console',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/dev_tools'));
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'kibana',
|
||||
title: i18n.translate('navigation.searchNav.kibana', {
|
||||
defaultMessage: 'Kibana',
|
||||
}),
|
||||
children: [
|
||||
{
|
||||
link: 'discover',
|
||||
},
|
||||
{
|
||||
link: 'dashboards',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/dashboards'));
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'content',
|
||||
title: i18n.translate('navigation.searchNav.content', {
|
||||
defaultMessage: 'Content',
|
||||
}),
|
||||
children: [
|
||||
{
|
||||
link: 'enterpriseSearchContent:searchIndices',
|
||||
// TODO: Build the children dynamically
|
||||
// https://github.com/elastic/kibana/issues/179751
|
||||
// renderAs: 'accordion',
|
||||
// children: [
|
||||
// {
|
||||
// title: i18n.translate(
|
||||
// 'navigation.searchNav.content.indices.searchGithub.overview',
|
||||
// {
|
||||
// defaultMessage: 'Overview',
|
||||
// }
|
||||
// ),
|
||||
// link: 'management:index_management',
|
||||
// breadcrumbStatus:
|
||||
// 'hidden' /* management sub-pages set their breadcrumbs themselves */,
|
||||
// },
|
||||
// {
|
||||
// title: i18n.translate(
|
||||
// 'navigation.searchNav.content.indices.searchGithub.documents',
|
||||
// {
|
||||
// defaultMessage: 'Documents',
|
||||
// }
|
||||
// ),
|
||||
// link: 'management:index_management',
|
||||
// },
|
||||
// {
|
||||
// title: i18n.translate(
|
||||
// 'navigation.searchNav.content.indices.searchGithub.indexMappings',
|
||||
// {
|
||||
// defaultMessage: 'Index Mappings',
|
||||
// }
|
||||
// ),
|
||||
// link: 'management:index_management',
|
||||
// },
|
||||
// {
|
||||
// title: i18n.translate(
|
||||
// 'navigation.searchNav.content.indices.searchGithub.pipelines',
|
||||
// {
|
||||
// defaultMessage: 'Pipelines',
|
||||
// }
|
||||
// ),
|
||||
// link: 'management:ingest_pipelines',
|
||||
// },
|
||||
// ],
|
||||
},
|
||||
{ link: 'enterpriseSearchContent:connectors' },
|
||||
{ link: 'enterpriseSearchContent:webCrawlers' },
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'build',
|
||||
title: i18n.translate('navigation.searchNav.build', {
|
||||
defaultMessage: 'Build',
|
||||
}),
|
||||
children: [
|
||||
{
|
||||
link: 'enterpriseSearchContent:playground',
|
||||
},
|
||||
{
|
||||
title: i18n.translate('navigation.searchNav.build.searchApplications', {
|
||||
defaultMessage: 'Search applications',
|
||||
}),
|
||||
link: 'enterpriseSearchApplications:searchApplications',
|
||||
// TODO: Build the children dynamically
|
||||
// https://github.com/elastic/kibana/issues/179751
|
||||
// renderAs: 'accordion',
|
||||
// children: [
|
||||
// {
|
||||
// title: i18n.translate(
|
||||
// 'navigation.searchNav.build.searchApplications.docsExplorer',
|
||||
// {
|
||||
// defaultMessage: 'Docs explorer',
|
||||
// }
|
||||
// ),
|
||||
// link: 'home',
|
||||
// },
|
||||
// {
|
||||
// title: i18n.translate('navigation.searchNav.build.searchApplications.content', {
|
||||
// defaultMessage: 'Content',
|
||||
// }),
|
||||
// link: 'home',
|
||||
// },
|
||||
// {
|
||||
// title: i18n.translate('navigation.searchNav.build.searchApplications.connect', {
|
||||
// defaultMessage: 'Connect',
|
||||
// }),
|
||||
// link: 'home',
|
||||
// },
|
||||
// ],
|
||||
},
|
||||
{
|
||||
link: 'enterpriseSearchAnalytics',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'entsearch',
|
||||
title: i18n.translate('navigation.searchNav.entsearch', {
|
||||
defaultMessage: 'Enterprise Search',
|
||||
}),
|
||||
children: [
|
||||
{
|
||||
title: i18n.translate('navigation.searchNav.entsearch.appSearch', {
|
||||
defaultMessage: 'App Search',
|
||||
}),
|
||||
link: 'appSearch:engines',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/enterprise_search/app_search'));
|
||||
},
|
||||
},
|
||||
{
|
||||
link: 'workplaceSearch',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
footer: [
|
||||
{
|
||||
type: 'navGroup',
|
||||
id: 'project_settings_project_nav',
|
||||
title: i18n.translate('navigation.searchNav.management', {
|
||||
defaultMessage: 'Management',
|
||||
}),
|
||||
icon: 'gear',
|
||||
breadcrumbStatus: 'hidden',
|
||||
children: [
|
||||
{
|
||||
title: i18n.translate('navigation.searchNav.management.trainedModels', {
|
||||
defaultMessage: 'Trained models',
|
||||
}),
|
||||
link: 'ml:modelManagement',
|
||||
},
|
||||
{
|
||||
link: 'management',
|
||||
title: i18n.translate('navigation.searchNav.mngt', {
|
||||
defaultMessage: 'Stack Management',
|
||||
}),
|
||||
spaceBefore: null,
|
||||
renderAs: 'panelOpener',
|
||||
children: [
|
||||
{
|
||||
title: 'Ingest',
|
||||
children: [{ link: 'management:ingest_pipelines' }, { link: 'management:pipelines' }],
|
||||
},
|
||||
{
|
||||
title: 'Data',
|
||||
children: [
|
||||
{ link: 'management:index_management' },
|
||||
{ link: 'management:index_lifecycle_management' },
|
||||
{ link: 'management:snapshot_restore' },
|
||||
{ link: 'management:rollup_jobs' },
|
||||
{ link: 'management:transform' },
|
||||
{ link: 'management:cross_cluster_replication' },
|
||||
{ link: 'management:remote_clusters' },
|
||||
{ link: 'management:migrate_data' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Alerts and Insights',
|
||||
children: [
|
||||
{ link: 'management:triggersActions' },
|
||||
{ link: 'management:cases' },
|
||||
{ link: 'management:triggersActionsConnectors' },
|
||||
{ link: 'management:reporting' },
|
||||
{ link: 'management:jobsListLink' },
|
||||
{ link: 'management:watcher' },
|
||||
{ link: 'management:maintenanceWindows' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Security',
|
||||
children: [
|
||||
{ link: 'management:users' },
|
||||
{ link: 'management:roles' },
|
||||
{ link: 'management:api_keys' },
|
||||
{ link: 'management:role_mappings' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Kibana',
|
||||
children: [
|
||||
{ link: 'management:dataViews' },
|
||||
{ link: 'management:filesManagement' },
|
||||
{ link: 'management:objects' },
|
||||
{ link: 'management:tags' },
|
||||
{ link: 'management:search_sessions' },
|
||||
{ link: 'management:spaces' },
|
||||
{ link: 'management:settings' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Stack',
|
||||
children: [
|
||||
{ link: 'management:license_management' },
|
||||
{ link: 'management:upgrade_assistant' },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export const definition: SolutionNavigationDefinition = {
|
||||
id: 'es',
|
||||
title: 'Search',
|
||||
icon: 'logoElasticsearch',
|
||||
homePage: 'dev_tools', // Temp. Wil be updated when all links are registered
|
||||
navigationTree$: of({
|
||||
body: [
|
||||
// Temp. In future work this will be loaded from a package
|
||||
{
|
||||
type: 'navGroup',
|
||||
id: 'search_project_nav',
|
||||
title: 'Search',
|
||||
icon: 'logoElasticsearch',
|
||||
defaultIsCollapsed: false,
|
||||
isCollapsible: false,
|
||||
breadcrumbStatus: 'hidden',
|
||||
children: [
|
||||
{
|
||||
id: 'dev_tools',
|
||||
title: 'Dev Tools',
|
||||
link: 'dev_tools:console',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/dev_tools'));
|
||||
},
|
||||
spaceBefore: 'm',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}),
|
||||
title,
|
||||
icon,
|
||||
homePage: 'enterpriseSearch',
|
||||
navigationTree$: of(navTree),
|
||||
};
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
{
|
||||
"type": "shared-common",
|
||||
"id": "@kbn/solution-nav-es",
|
||||
"owner": "@elastic/appex-sharedux"
|
||||
"owner": [
|
||||
"@elastic/appex-sharedux",
|
||||
"@elastic/enterprise-search-frontend"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -17,5 +17,6 @@
|
|||
],
|
||||
"kbn_references": [
|
||||
"@kbn/core-chrome-browser",
|
||||
"@kbn/i18n",
|
||||
],
|
||||
}
|
||||
|
|
|
@ -5,33 +5,349 @@
|
|||
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
||||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import type { SolutionNavigationDefinition } from '@kbn/core-chrome-browser';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import type {
|
||||
NavigationTreeDefinition,
|
||||
SolutionNavigationDefinition,
|
||||
} from '@kbn/core-chrome-browser';
|
||||
import { of } from 'rxjs';
|
||||
|
||||
const title = i18n.translate('navigation.obltNav.headerSolutionSwitcher.obltSolutionTitle', {
|
||||
defaultMessage: 'Observability',
|
||||
});
|
||||
const icon = 'logoObservability';
|
||||
|
||||
const navTree: NavigationTreeDefinition = {
|
||||
body: [
|
||||
{ type: 'recentlyAccessed' },
|
||||
{
|
||||
type: 'navGroup',
|
||||
id: 'observability_project_nav',
|
||||
title,
|
||||
icon,
|
||||
defaultIsCollapsed: false,
|
||||
isCollapsible: false,
|
||||
breadcrumbStatus: 'hidden',
|
||||
children: [
|
||||
{
|
||||
link: 'observability-overview',
|
||||
},
|
||||
{
|
||||
link: 'discover',
|
||||
renderAs: 'item',
|
||||
children: [
|
||||
{
|
||||
// This is to show "observability-log-explorer" breadcrumbs when navigating from "discover" to "log explorer"
|
||||
link: 'observability-logs-explorer',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
link: 'dashboards',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/dashboards'));
|
||||
},
|
||||
},
|
||||
{
|
||||
link: 'observability-overview:alerts',
|
||||
},
|
||||
{
|
||||
link: 'observability-overview:cases',
|
||||
renderAs: 'item',
|
||||
children: [
|
||||
{
|
||||
link: 'observability-overview:cases_configure',
|
||||
},
|
||||
{
|
||||
link: 'observability-overview:cases_create',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
link: 'slo',
|
||||
},
|
||||
{
|
||||
id: 'aiMl',
|
||||
title: i18n.translate('navigation.obltNav.ml.aiAndMlGroupTitle', {
|
||||
defaultMessage: 'AI & ML',
|
||||
}),
|
||||
renderAs: 'accordion',
|
||||
children: [
|
||||
{
|
||||
link: 'observabilityAIAssistant',
|
||||
title: i18n.translate('navigation.obltNav.aiMl.aiAssistant', {
|
||||
defaultMessage: 'AI Assistant',
|
||||
}),
|
||||
},
|
||||
{
|
||||
link: 'ml:anomalyDetection',
|
||||
renderAs: 'item',
|
||||
children: [
|
||||
{
|
||||
link: 'ml:singleMetricViewer',
|
||||
},
|
||||
{
|
||||
link: 'ml:anomalyExplorer',
|
||||
},
|
||||
{
|
||||
link: 'ml:settings',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: i18n.translate('navigation.obltNav.ml.logRateAnalysis', {
|
||||
defaultMessage: 'Log rate analysis',
|
||||
}),
|
||||
link: 'ml:logRateAnalysis',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.includes(prepend('/app/ml/aiops/log_rate_analysis'));
|
||||
},
|
||||
},
|
||||
{
|
||||
link: 'logs:anomalies',
|
||||
},
|
||||
{
|
||||
link: 'logs:log-categories',
|
||||
},
|
||||
{
|
||||
title: i18n.translate('navigation.obltNav.ml.changePointDetection', {
|
||||
defaultMessage: 'Change point detection',
|
||||
}),
|
||||
link: 'ml:changePointDetections',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.includes(prepend('/app/ml/aiops/change_point_detection'));
|
||||
},
|
||||
},
|
||||
{
|
||||
title: i18n.translate('navigation.obltNav.ml.job.notifications', {
|
||||
defaultMessage: 'Job notifications',
|
||||
}),
|
||||
link: 'ml:notifications',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'apm',
|
||||
title: i18n.translate('navigation.obltNav.applications', {
|
||||
defaultMessage: 'Applications',
|
||||
}),
|
||||
renderAs: 'accordion',
|
||||
children: [
|
||||
{
|
||||
link: 'apm:services',
|
||||
getIsActive: ({ pathNameSerialized }) => {
|
||||
const regex = /app\/apm\/.*service.*/;
|
||||
return regex.test(pathNameSerialized);
|
||||
},
|
||||
},
|
||||
{
|
||||
link: 'apm:traces',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/apm/traces'));
|
||||
},
|
||||
},
|
||||
{
|
||||
link: 'apm:dependencies',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/apm/dependencies'));
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'synthetics',
|
||||
title: i18n.translate('navigation.obltNav.apm.syntheticsGroupTitle', {
|
||||
defaultMessage: 'Synthetics',
|
||||
}),
|
||||
renderAs: 'accordion',
|
||||
children: [
|
||||
{
|
||||
link: 'synthetics',
|
||||
title: i18n.translate('navigation.obltNav.apm.synthetics.monitors', {
|
||||
defaultMessage: 'Monitors',
|
||||
}),
|
||||
},
|
||||
{ link: 'synthetics:certificates' },
|
||||
],
|
||||
},
|
||||
{ link: 'ux' },
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'metrics',
|
||||
title: i18n.translate('navigation.obltNav.infrastructure', {
|
||||
defaultMessage: 'Infrastructure',
|
||||
}),
|
||||
renderAs: 'accordion',
|
||||
children: [
|
||||
{
|
||||
link: 'metrics:inventory',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/metrics/inventory'));
|
||||
},
|
||||
},
|
||||
{
|
||||
link: 'metrics:hosts',
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/metrics/hosts'));
|
||||
},
|
||||
},
|
||||
{
|
||||
link: 'metrics:metrics-explorer',
|
||||
},
|
||||
{
|
||||
id: 'profiling',
|
||||
title: i18n.translate('navigation.obltNav.infrastructure.universalProfiling', {
|
||||
defaultMessage: 'Universal Profiling',
|
||||
}),
|
||||
renderAs: 'accordion',
|
||||
children: [
|
||||
{
|
||||
link: 'profiling:stacktraces',
|
||||
},
|
||||
{
|
||||
link: 'profiling:flamegraphs',
|
||||
},
|
||||
{
|
||||
link: 'profiling:functions',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'otherTools',
|
||||
title: i18n.translate('navigation.obltNav.otherTools', {
|
||||
defaultMessage: 'Other tools',
|
||||
}),
|
||||
renderAs: 'accordion',
|
||||
children: [
|
||||
{
|
||||
link: 'logs:stream',
|
||||
title: i18n.translate('navigation.obltNav.otherTools.logsStream', {
|
||||
defaultMessage: 'Logs stream',
|
||||
}),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
footer: [
|
||||
{
|
||||
type: 'navItem',
|
||||
title: i18n.translate('navigation.obltNav.getStarted', {
|
||||
defaultMessage: 'Get started',
|
||||
}),
|
||||
link: 'observabilityOnboarding',
|
||||
icon: 'launch',
|
||||
},
|
||||
{
|
||||
type: 'navItem',
|
||||
id: 'devTools',
|
||||
title: i18n.translate('navigation.obltNav.devTools', {
|
||||
defaultMessage: 'Developer tools',
|
||||
}),
|
||||
link: 'dev_tools',
|
||||
icon: 'editorCodeBlock',
|
||||
},
|
||||
{
|
||||
type: 'navGroup',
|
||||
id: 'project_settings_project_nav',
|
||||
title: i18n.translate('navigation.obltNav.management', {
|
||||
defaultMessage: 'Management',
|
||||
}),
|
||||
icon: 'gear',
|
||||
breadcrumbStatus: 'hidden',
|
||||
children: [
|
||||
{
|
||||
link: 'management',
|
||||
title: i18n.translate('navigation.obltNav.stackManagement', {
|
||||
defaultMessage: 'Stack Management',
|
||||
}),
|
||||
renderAs: 'panelOpener',
|
||||
spaceBefore: null,
|
||||
children: [
|
||||
{
|
||||
title: 'Ingest',
|
||||
children: [{ link: 'management:ingest_pipelines' }, { link: 'management:pipelines' }],
|
||||
},
|
||||
{
|
||||
title: 'Data',
|
||||
children: [
|
||||
{ link: 'management:index_management' },
|
||||
{ link: 'management:index_lifecycle_management' },
|
||||
{ link: 'management:snapshot_restore' },
|
||||
{ link: 'management:rollup_jobs' },
|
||||
{ link: 'management:transform' },
|
||||
{ link: 'management:cross_cluster_replication' },
|
||||
{ link: 'management:remote_clusters' },
|
||||
{ link: 'management:migrate_data' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Alerts and Insights',
|
||||
children: [
|
||||
{ link: 'management:triggersActions' },
|
||||
{ link: 'management:cases' },
|
||||
{ link: 'management:triggersActionsConnectors' },
|
||||
{ link: 'management:reporting' },
|
||||
{ link: 'management:jobsListLink' },
|
||||
{ link: 'management:watcher' },
|
||||
{ link: 'management:maintenanceWindows' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Security',
|
||||
children: [
|
||||
{ link: 'management:users' },
|
||||
{ link: 'management:roles' },
|
||||
{ link: 'management:api_keys' },
|
||||
{ link: 'management:role_mappings' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Kibana',
|
||||
children: [
|
||||
{ link: 'management:dataViews' },
|
||||
{ link: 'management:filesManagement' },
|
||||
{ link: 'management:objects' },
|
||||
{ link: 'management:tags' },
|
||||
{ link: 'management:search_sessions' },
|
||||
{ link: 'management:spaces' },
|
||||
{ link: 'management:settings' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Stack',
|
||||
children: [
|
||||
{ link: 'management:license_management' },
|
||||
{ link: 'management:upgrade_assistant' },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
link: 'integrations',
|
||||
},
|
||||
{
|
||||
link: 'fleet',
|
||||
},
|
||||
{
|
||||
id: 'cloudLinkUserAndRoles',
|
||||
cloudLink: 'userAndRoles',
|
||||
},
|
||||
{
|
||||
id: 'cloudLinkBilling',
|
||||
cloudLink: 'billingAndSub',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export const definition: SolutionNavigationDefinition = {
|
||||
id: 'oblt',
|
||||
title: 'Observability',
|
||||
title,
|
||||
icon: 'logoObservability',
|
||||
homePage: 'discover', // Temp. Wil be updated when all links are registered
|
||||
navigationTree$: of({
|
||||
body: [
|
||||
// Temp. In future work this will be loaded from a package
|
||||
{
|
||||
type: 'navGroup',
|
||||
id: 'observability_project_nav',
|
||||
title: 'Observability',
|
||||
icon: 'logoObservability',
|
||||
defaultIsCollapsed: false,
|
||||
isCollapsible: false,
|
||||
breadcrumbStatus: 'hidden',
|
||||
children: [
|
||||
{
|
||||
link: 'discover',
|
||||
spaceBefore: 'm',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}),
|
||||
homePage: 'observabilityOnboarding',
|
||||
navigationTree$: of(navTree),
|
||||
};
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
{
|
||||
"type": "shared-common",
|
||||
"id": "@kbn/solution-nav-oblt",
|
||||
"owner": "@elastic/appex-sharedux"
|
||||
"owner": [
|
||||
"@elastic/appex-sharedux",
|
||||
"@elastic/obs-ux-management-team"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -17,5 +17,6 @@
|
|||
],
|
||||
"kbn_references": [
|
||||
"@kbn/core-chrome-browser",
|
||||
"@kbn/i18n",
|
||||
],
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ describe('Navigation Plugin', () => {
|
|||
|
||||
expect(coreStart.chrome.project.updateSolutionNavigations).toHaveBeenCalled();
|
||||
const [arg] = coreStart.chrome.project.updateSolutionNavigations.mock.calls[0];
|
||||
expect(Object.keys(arg)).toEqual(['es', 'oblt']);
|
||||
expect(Object.keys(arg)).toEqual(['es', 'oblt', 'analytics']);
|
||||
|
||||
expect(coreStart.chrome.project.changeActiveSolutionNavigation).toHaveBeenCalledWith(null);
|
||||
});
|
||||
|
|
|
@ -28,6 +28,7 @@ import type {
|
|||
import { InternalChromeStart } from '@kbn/core-chrome-browser-internal';
|
||||
import { definition as esDefinition } from '@kbn/solution-nav-es';
|
||||
import { definition as obltDefinition } from '@kbn/solution-nav-oblt';
|
||||
import { definition as analyticsDefinition } from '@kbn/solution-nav-analytics';
|
||||
import type { PanelContentProvider } from '@kbn/shared-ux-chrome-navigation';
|
||||
import { UserProfileData } from '@kbn/user-profile-components';
|
||||
import {
|
||||
|
@ -278,11 +279,15 @@ export class NavigationPublicPlugin
|
|||
const solutionNavs: SolutionNavigationDefinitions = {
|
||||
es: {
|
||||
...esDefinition,
|
||||
sideNavComponent: this.getSideNavComponent({ dataTestSubj: 'svlSearchSideNav' }),
|
||||
sideNavComponent: this.getSideNavComponent({ dataTestSubj: 'searchSideNav' }),
|
||||
},
|
||||
oblt: {
|
||||
...obltDefinition,
|
||||
sideNavComponent: this.getSideNavComponent({ dataTestSubj: 'svlObservabilitySideNav' }),
|
||||
sideNavComponent: this.getSideNavComponent({ dataTestSubj: 'observabilitySideNav' }),
|
||||
},
|
||||
analytics: {
|
||||
...analyticsDefinition,
|
||||
sideNavComponent: this.getSideNavComponent({ dataTestSubj: 'analyticsSideNav' }),
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
"@kbn/solution-nav-es",
|
||||
"@kbn/solution-nav-oblt",
|
||||
"@kbn/config",
|
||||
"@kbn/solution-nav-analytics",
|
||||
"@kbn/kibana-react-plugin",
|
||||
"@kbn/security-plugin",
|
||||
"@kbn/user-profile-components",
|
||||
|
|
|
@ -8,26 +8,26 @@
|
|||
import { FtrProviderContext } from '../../ftr_provider_context';
|
||||
|
||||
export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
||||
const PageObjects = getPageObjects(['common', 'header', 'home', 'dashboard']);
|
||||
const PageObjects = getPageObjects(['common', 'header', 'discover', 'dashboard']);
|
||||
const testSubjects = getService('testSubjects');
|
||||
const navigation = getService('globalNav');
|
||||
|
||||
describe('solution navigation switcher', function describeIndexTests() {
|
||||
it('should be able to switch between solutions', async () => {
|
||||
await PageObjects.common.navigateToApp('home');
|
||||
await PageObjects.common.navigateToApp('discover');
|
||||
|
||||
// Default to "search" solution
|
||||
await testSubjects.existOrFail('svlSearchSideNav');
|
||||
await testSubjects.missingOrFail('svlObservabilitySideNav');
|
||||
await testSubjects.existOrFail('searchSideNav');
|
||||
await testSubjects.missingOrFail('observabilitySideNav');
|
||||
|
||||
// Change to "observability" solution
|
||||
await navigation.changeSolutionNavigation('oblt');
|
||||
await testSubjects.existOrFail('svlObservabilitySideNav');
|
||||
await testSubjects.missingOrFail('svlSearchSideNav');
|
||||
await testSubjects.existOrFail('observabilitySideNav');
|
||||
await testSubjects.missingOrFail('searchSideNav');
|
||||
});
|
||||
|
||||
it('should contain links to manage deployment and view all deployments', async () => {
|
||||
await PageObjects.common.navigateToApp('home');
|
||||
await PageObjects.common.navigateToApp('discover');
|
||||
|
||||
await navigation.openSolutionNavSwitcher();
|
||||
|
||||
|
|
|
@ -1590,6 +1590,8 @@
|
|||
"@kbn/slo-schema/*": ["x-pack/packages/kbn-slo-schema/*"],
|
||||
"@kbn/snapshot-restore-plugin": ["x-pack/plugins/snapshot_restore"],
|
||||
"@kbn/snapshot-restore-plugin/*": ["x-pack/plugins/snapshot_restore/*"],
|
||||
"@kbn/solution-nav-analytics": ["packages/solution-nav/analytics"],
|
||||
"@kbn/solution-nav-analytics/*": ["packages/solution-nav/analytics/*"],
|
||||
"@kbn/solution-nav-es": ["packages/solution-nav/es"],
|
||||
"@kbn/solution-nav-es/*": ["packages/solution-nav/es/*"],
|
||||
"@kbn/solution-nav-oblt": ["packages/solution-nav/oblt"],
|
||||
|
|
|
@ -5,6 +5,14 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import {
|
||||
ENTERPRISE_SEARCH_APP_ID,
|
||||
ENTERPRISE_SEARCH_CONTENT_APP_ID,
|
||||
ENTERPRISE_SEARCH_APPLICATIONS_APP_ID,
|
||||
ENTERPRISE_SEARCH_ANALYTICS_APP_ID,
|
||||
ENTERPRISE_SEARCH_APPSEARCH_APP_ID,
|
||||
ENTERPRISE_SEARCH_WORKPLACESEARCH_APP_ID,
|
||||
} from '@kbn/deeplinks-search';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
import { IngestPipelineParams } from '@kbn/search-connectors';
|
||||
|
@ -19,7 +27,7 @@ export const ENTERPRISE_SEARCH_PRODUCT_NAME = i18n.translate('xpack.enterpriseSe
|
|||
});
|
||||
|
||||
export const ENTERPRISE_SEARCH_OVERVIEW_PLUGIN = {
|
||||
ID: 'enterpriseSearch',
|
||||
ID: ENTERPRISE_SEARCH_APP_ID,
|
||||
NAME: SEARCH_PRODUCT_NAME,
|
||||
NAV_TITLE: i18n.translate('xpack.enterpriseSearch.overview.navTitle', {
|
||||
defaultMessage: 'Overview',
|
||||
|
@ -32,7 +40,7 @@ export const ENTERPRISE_SEARCH_OVERVIEW_PLUGIN = {
|
|||
};
|
||||
|
||||
export const ENTERPRISE_SEARCH_CONTENT_PLUGIN = {
|
||||
ID: 'enterpriseSearchContent',
|
||||
ID: ENTERPRISE_SEARCH_CONTENT_APP_ID,
|
||||
NAME: SEARCH_PRODUCT_NAME,
|
||||
NAV_TITLE: i18n.translate('xpack.enterpriseSearch.content.navTitle', {
|
||||
defaultMessage: 'Content',
|
||||
|
@ -63,7 +71,7 @@ export const AI_SEARCH_PLUGIN = {
|
|||
};
|
||||
|
||||
export const ANALYTICS_PLUGIN = {
|
||||
ID: 'enterpriseSearchAnalytics',
|
||||
ID: ENTERPRISE_SEARCH_ANALYTICS_APP_ID,
|
||||
NAME: i18n.translate('xpack.enterpriseSearch.analytics.productName', {
|
||||
defaultMessage: 'Behavioral Analytics',
|
||||
}),
|
||||
|
@ -92,7 +100,7 @@ export const ELASTICSEARCH_PLUGIN = {
|
|||
};
|
||||
|
||||
export const APP_SEARCH_PLUGIN = {
|
||||
ID: 'appSearch',
|
||||
ID: ENTERPRISE_SEARCH_APPSEARCH_APP_ID,
|
||||
NAME: i18n.translate('xpack.enterpriseSearch.appSearch.productName', {
|
||||
defaultMessage: 'App Search',
|
||||
}),
|
||||
|
@ -105,7 +113,7 @@ export const APP_SEARCH_PLUGIN = {
|
|||
};
|
||||
|
||||
export const WORKPLACE_SEARCH_PLUGIN = {
|
||||
ID: 'workplaceSearch',
|
||||
ID: ENTERPRISE_SEARCH_WORKPLACESEARCH_APP_ID,
|
||||
NAME: i18n.translate('xpack.enterpriseSearch.workplaceSearch.productName', {
|
||||
defaultMessage: 'Workplace Search',
|
||||
}),
|
||||
|
@ -139,7 +147,7 @@ export const SEARCH_EXPERIENCES_PLUGIN = {
|
|||
};
|
||||
|
||||
export const APPLICATIONS_PLUGIN = {
|
||||
ID: 'enterpriseSearchApplications',
|
||||
ID: ENTERPRISE_SEARCH_APPLICATIONS_APP_ID,
|
||||
LOGO: 'logoEnterpriseSearch',
|
||||
NAME: i18n.translate('xpack.enterpriseSearch.applications.productName', {
|
||||
defaultMessage: 'Applications',
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { firstValueFrom } from 'rxjs';
|
||||
|
||||
import { ChartsPluginStart } from '@kbn/charts-plugin/public';
|
||||
import { CloudSetup, CloudStart } from '@kbn/cloud-plugin/public';
|
||||
import { ConsolePluginStart } from '@kbn/console-plugin/public';
|
||||
|
@ -16,11 +18,13 @@ import {
|
|||
Plugin,
|
||||
PluginInitializerContext,
|
||||
DEFAULT_APP_CATEGORIES,
|
||||
AppDeepLink,
|
||||
} from '@kbn/core/public';
|
||||
import { DataPublicPluginStart } from '@kbn/data-plugin/public';
|
||||
|
||||
import { GuidedOnboardingPluginStart } from '@kbn/guided-onboarding-plugin/public';
|
||||
import type { HomePublicPluginSetup } from '@kbn/home-plugin/public';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { IndexManagementPluginStart } from '@kbn/index-management-plugin/public';
|
||||
import { LensPublicStart } from '@kbn/lens-plugin/public';
|
||||
import { LicensingPluginStart } from '@kbn/licensing-plugin/public';
|
||||
|
@ -50,6 +54,15 @@ import {
|
|||
} from '../common/locators/create_index_locator';
|
||||
import { ClientConfigType, InitialAppData } from '../common/types';
|
||||
|
||||
import { ENGINES_PATH } from './applications/app_search/routes';
|
||||
import { SEARCH_APPLICATIONS_PATH } from './applications/applications/routes';
|
||||
import {
|
||||
CONNECTORS_PATH,
|
||||
SEARCH_INDICES_PATH,
|
||||
CRAWLERS_PATH,
|
||||
PLAYGROUND_PATH,
|
||||
} from './applications/enterprise_search_content/routes';
|
||||
|
||||
import { docLinks } from './applications/shared/doc_links';
|
||||
|
||||
export interface ClientData extends InitialAppData {
|
||||
|
@ -87,6 +100,60 @@ export interface ESConfig {
|
|||
elasticsearch_host: string;
|
||||
}
|
||||
|
||||
const contentLinks: AppDeepLink[] = [
|
||||
{
|
||||
id: 'connectors',
|
||||
path: `/${CONNECTORS_PATH}`,
|
||||
title: i18n.translate('xpack.enterpriseSearch.navigation.contentConnectorsLinkLabel', {
|
||||
defaultMessage: 'Connectors',
|
||||
}),
|
||||
},
|
||||
{
|
||||
id: 'searchIndices',
|
||||
path: `/${SEARCH_INDICES_PATH}`,
|
||||
title: i18n.translate('xpack.enterpriseSearch.navigation.contentIndicesLinkLabel', {
|
||||
defaultMessage: 'Indices',
|
||||
}),
|
||||
},
|
||||
{
|
||||
id: 'webCrawlers',
|
||||
path: `/${CRAWLERS_PATH}`,
|
||||
title: i18n.translate('xpack.enterpriseSearch.navigation.contentWebcrawlersLinkLabel', {
|
||||
defaultMessage: 'Web crawlers',
|
||||
}),
|
||||
},
|
||||
{
|
||||
id: 'playground',
|
||||
path: `/${PLAYGROUND_PATH}`,
|
||||
title: i18n.translate('xpack.enterpriseSearch.navigation.contentPlaygroundLinkLabel', {
|
||||
defaultMessage: 'Playground',
|
||||
}),
|
||||
},
|
||||
];
|
||||
|
||||
const applicationsLinks: AppDeepLink[] = [
|
||||
{
|
||||
id: 'searchApplications',
|
||||
path: `/${SEARCH_APPLICATIONS_PATH}`,
|
||||
title: i18n.translate(
|
||||
'xpack.enterpriseSearch.navigation.applicationsSearchApplicationsLinkLabel',
|
||||
{
|
||||
defaultMessage: 'Search Applications',
|
||||
}
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
const appSearchLinks: AppDeepLink[] = [
|
||||
{
|
||||
id: 'engines',
|
||||
path: `/${ENGINES_PATH}`,
|
||||
title: i18n.translate('xpack.enterpriseSearch.navigation.appSearchEnginesLinkLabel', {
|
||||
defaultMessage: 'Engines',
|
||||
}),
|
||||
},
|
||||
];
|
||||
|
||||
export class EnterpriseSearchPlugin implements Plugin {
|
||||
private config: ClientConfigType;
|
||||
|
||||
|
@ -130,9 +197,12 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
: undefined;
|
||||
const plugins = { ...pluginsStart, cloud } as PluginsStart;
|
||||
|
||||
coreStart.chrome
|
||||
.getChromeStyle$()
|
||||
.subscribe((style) => (this.isSidebarEnabled = style === 'classic'));
|
||||
const chromeStyle = await firstValueFrom(coreStart.chrome.getChromeStyle$());
|
||||
this.isSidebarEnabled = chromeStyle === 'classic';
|
||||
|
||||
coreStart.chrome.getChromeStyle$().subscribe((style) => {
|
||||
this.isSidebarEnabled = style === 'classic';
|
||||
});
|
||||
|
||||
return { core: coreStart, isSidebarEnabled: this.isSidebarEnabled, params, plugins };
|
||||
}
|
||||
|
@ -184,6 +254,7 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
core.application.register({
|
||||
appRoute: ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL,
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
deepLinks: contentLinks,
|
||||
euiIconType: ENTERPRISE_SEARCH_CONTENT_PLUGIN.LOGO,
|
||||
id: ENTERPRISE_SEARCH_CONTENT_PLUGIN.ID,
|
||||
mount: async (params: AppMountParameters) => {
|
||||
|
@ -271,6 +342,7 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
core.application.register({
|
||||
appRoute: APPLICATIONS_PLUGIN.URL,
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
deepLinks: applicationsLinks,
|
||||
euiIconType: APPLICATIONS_PLUGIN.LOGO,
|
||||
id: APPLICATIONS_PLUGIN.ID,
|
||||
mount: async (params: AppMountParameters) => {
|
||||
|
@ -338,6 +410,7 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
core.application.register({
|
||||
appRoute: APP_SEARCH_PLUGIN.URL,
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
deepLinks: appSearchLinks,
|
||||
euiIconType: ENTERPRISE_SEARCH_OVERVIEW_PLUGIN.LOGO,
|
||||
id: APP_SEARCH_PLUGIN.ID,
|
||||
mount: async (params: AppMountParameters) => {
|
||||
|
|
|
@ -72,6 +72,7 @@
|
|||
"@kbn/search-connectors-plugin",
|
||||
"@kbn/search-playground",
|
||||
"@kbn/utility-types",
|
||||
"@kbn/index-management-plugin"
|
||||
"@kbn/index-management-plugin",
|
||||
"@kbn/deeplinks-search"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import {
|
|||
} from '@kbn/core/public';
|
||||
import type { Logger } from '@kbn/logging';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { AI_ASSISTANT_APP_ID } from '@kbn/deeplinks-observability';
|
||||
import type {
|
||||
ObservabilityAIAssistantAppPluginSetupDependencies,
|
||||
ObservabilityAIAssistantAppPluginStartDependencies,
|
||||
|
@ -49,7 +50,7 @@ export class ObservabilityAIAssistantAppPlugin
|
|||
pluginsSetup: ObservabilityAIAssistantAppPluginSetupDependencies
|
||||
): ObservabilityAIAssistantAppPublicSetup {
|
||||
coreSetup.application.register({
|
||||
id: 'observabilityAIAssistant',
|
||||
id: AI_ASSISTANT_APP_ID,
|
||||
title: i18n.translate('xpack.observabilityAiAssistant.appTitle', {
|
||||
defaultMessage: 'Observability AI Assistant',
|
||||
}),
|
||||
|
|
|
@ -49,7 +49,8 @@
|
|||
"@kbn/react-kibana-context-theme",
|
||||
"@kbn/shared-ux-link-redirect-app",
|
||||
"@kbn/shared-ux-utility",
|
||||
"@kbn/data-plugin"
|
||||
"@kbn/data-plugin",
|
||||
"@kbn/deeplinks-observability"
|
||||
],
|
||||
"exclude": ["target/**/*"]
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import { i18n } from '@kbn/i18n';
|
|||
import type { NavigationSection } from '@kbn/observability-shared-plugin/public';
|
||||
import type { Location } from 'history';
|
||||
import { BehaviorSubject, combineLatest, from, map } from 'rxjs';
|
||||
import { OBLT_PROFILING_APP_ID } from '@kbn/deeplinks-observability';
|
||||
import { registerEmbeddables } from './embeddables/register_embeddables';
|
||||
import { getServices } from './services';
|
||||
import type { ProfilingPluginPublicSetupDeps, ProfilingPluginPublicStartDeps } from './types';
|
||||
|
@ -63,7 +64,7 @@ export class ProfilingPlugin implements Plugin {
|
|||
}),
|
||||
entries: links.map((link) => {
|
||||
return {
|
||||
app: 'profiling',
|
||||
app: OBLT_PROFILING_APP_ID,
|
||||
label: link.title,
|
||||
path: `${link.path}?kuery=${kuery ?? ''}`,
|
||||
matchPath: (path) => {
|
||||
|
@ -85,7 +86,7 @@ export class ProfilingPlugin implements Plugin {
|
|||
const profilingFetchServices = getServices();
|
||||
|
||||
coreSetup.application.register({
|
||||
id: 'profiling',
|
||||
id: OBLT_PROFILING_APP_ID,
|
||||
title: 'Universal Profiling',
|
||||
euiIconType: 'logoObservability',
|
||||
appRoute: '/app/profiling',
|
||||
|
|
|
@ -52,7 +52,8 @@
|
|||
"@kbn/profiling-utils",
|
||||
"@kbn/security-plugin",
|
||||
"@kbn/shared-ux-utility",
|
||||
"@kbn/management-settings-components-field-row"
|
||||
"@kbn/management-settings-components-field-row",
|
||||
"@kbn/deeplinks-observability"
|
||||
// add references to other TypeScript projects the plugin depends on
|
||||
|
||||
// requiredPlugins from ./kibana.json
|
||||
|
|
|
@ -47,6 +47,7 @@ import {
|
|||
ObservabilityAIAssistantPublicSetup,
|
||||
ObservabilityAIAssistantPublicStart,
|
||||
} from '@kbn/observability-ai-assistant-plugin/public';
|
||||
import { OBLT_UX_APP_ID } from '@kbn/deeplinks-observability';
|
||||
import { SpacesPluginStart } from '@kbn/spaces-plugin/public';
|
||||
|
||||
export type UxPluginSetup = void;
|
||||
|
@ -100,7 +101,7 @@ export class UxPlugin implements Plugin<UxPluginSetup, UxPluginStart> {
|
|||
};
|
||||
|
||||
plugins.observability.dashboard.register({
|
||||
appName: 'ux',
|
||||
appName: OBLT_UX_APP_ID,
|
||||
hasData: async (params?: HasDataParams) => {
|
||||
const dataHelper = await getUxDataHelper();
|
||||
const dataStartPlugin = await getDataStartPlugin(core);
|
||||
|
@ -120,7 +121,7 @@ export class UxPlugin implements Plugin<UxPluginSetup, UxPluginStart> {
|
|||
});
|
||||
|
||||
plugins.exploratoryView.register({
|
||||
appName: 'ux',
|
||||
appName: OBLT_UX_APP_ID,
|
||||
hasData: async (params?: HasDataParams) => {
|
||||
const dataHelper = await getUxDataHelper();
|
||||
const dataStartPlugin = await getDataStartPlugin(core);
|
||||
|
@ -157,7 +158,7 @@ export class UxPlugin implements Plugin<UxPluginSetup, UxPluginStart> {
|
|||
label: i18n.translate('xpack.ux.overview.heading', {
|
||||
defaultMessage: 'Dashboard',
|
||||
}),
|
||||
app: 'ux',
|
||||
app: OBLT_UX_APP_ID,
|
||||
path: '/',
|
||||
matchFullPath: true,
|
||||
ignoreTrailingSlash: true,
|
||||
|
@ -175,7 +176,7 @@ export class UxPlugin implements Plugin<UxPluginSetup, UxPluginStart> {
|
|||
const isDev = this.initContext.env.mode.dev;
|
||||
|
||||
core.application.register({
|
||||
id: 'ux',
|
||||
id: OBLT_UX_APP_ID,
|
||||
title: 'User Experience',
|
||||
order: 8500,
|
||||
euiIconType: 'logoObservability',
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
"@kbn/shared-ux-link-redirect-app",
|
||||
"@kbn/apm-data-view",
|
||||
"@kbn/spaces-plugin",
|
||||
"@kbn/deeplinks-observability"
|
||||
],
|
||||
"exclude": ["target/**/*"]
|
||||
}
|
||||
|
|
|
@ -6226,6 +6226,10 @@
|
|||
version "0.0.0"
|
||||
uid ""
|
||||
|
||||
"@kbn/solution-nav-analytics@link:packages/solution-nav/analytics":
|
||||
version "0.0.0"
|
||||
uid ""
|
||||
|
||||
"@kbn/solution-nav-es@link:packages/solution-nav/es":
|
||||
version "0.0.0"
|
||||
uid ""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue