x-pack/platform/plugins/shared/serverless/public/navigation/README.md
Serverless-specific navigation components for Kibana.
Note: This module provides navigation for serverless deployments. For stateful deployments, see the Shared Navigation Plugin implementation, which uses a different registration mechanism (
addSolutionNavigation).
The serverless plugin's start contract provides the following navigation-related methods:
interface ServerlessPluginStart {
// Register a navigation tree for a serverless plugin
initNavigation: (
id: string,
navigationTree$: Observable<NavigationTreeDefinition>,
options?: { dataTestSubj?: string }
) => void;
// Set breadcrumbs for the current page
setBreadcrumbs: (breadcrumbs, params) => void;
// Get navigation cards for a Stack Management landing page
getNavigationCards: (
roleManagementEnabled: boolean,
extendCardNavDefinitions?: Record<string, CardNavExtensionDefinition>
) => Record<string, CardNavExtensionDefinition>;
}
This module connects the serverless plugin with Kibana's core navigation system by:
initNavigation method to register navigation trees for serverless plugins.ProjectNavigationService to manage active nodes and navigation state.Serverless plugins register their navigation trees using the initNavigation method:
// In your plugin's start method
public start(core: CoreStart, plugins: PluginsStart) {
// Create a navigation tree observable
const navigationTree$ = new BehaviorSubject<NavigationTreeDefinition>({
id: 'root',
title: 'Root',
items: [
// Your navigation items
],
});
// Register your navigation tree
plugins.serverless.initNavigation(
'your-plugin-id',
navigationTree$,
{ dataTestSubj: 'yourPluginNavigation' }
);
}
The serverless plugin provides utilities for generating navigation cards for a landing page in Stack Management:
const { getNavigationCards } = plugins.serverless;
const navCards = getNavigationCards(true); // true if role management is enabled