Skip to content
Draft
Show file tree
Hide file tree
Changes from 63 commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
a8cddc2
chrome-next bootstrap
Dosant Mar 24, 2026
528fe2a
[Chrome Next] Create projectHeader service (#259404)
kowalczyk-krzysztof Mar 24, 2026
746408d
[Chrome Next] Add unified projectHeader API with ChromeProjectHeaderC…
Dosant Mar 24, 2026
69815c6
[Chrome Next] Basic title and menu (#259544)
Dosant Mar 25, 2026
34dfc0a
[Chrome Next] add ai agent button; rename projectHeader -> next (#259…
Dosant Mar 25, 2026
242d8d5
Merge branch 'main' of github.com:elastic/kibana into feature/chrome-…
Dosant Mar 25, 2026
ff03905
applicationMarginTop: 8
Dosant Mar 25, 2026
b6a4d9a
fix post merge issues
Dosant Mar 25, 2026
06068df
[Chrome Next] Back button, use breadcrumbs for title fallback (#259748)
Dosant Mar 26, 2026
de8a72b
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Mar 26, 2026
6c7a091
[Chrome Next] Remove AppMenuConfigNext (#259946)
kowalczyk-krzysztof Mar 27, 2026
07be78d
[FeatureBranch/DoNotReview][Chrome Next] Global Actions Stub (#259824)
Dosant Mar 27, 2026
1e067d9
Merge branch 'main' into feature/chrome-next
Dosant Mar 31, 2026
b2f28a5
[ChromeNext] Sidenav tool slots, help pipeline, and global search API…
Dosant Apr 1, 2026
92008d5
Merge branch 'main' into feature/chrome-next
Dosant Apr 2, 2026
9cdd128
fix sidebar margin-offset
Dosant Apr 2, 2026
f9e3ae4
put sidenav tools behind feature flag
Dosant Apr 2, 2026
c63aace
fix securty-solution not rendered without ai assistant
Dosant Apr 2, 2026
bc6afc7
[FeatureBranch/DoNotReview][Chrome Next] Keep all AI buttons (#260937)
Dosant Apr 2, 2026
b9071c3
[ChromeNext] Add a switch to toggle `chrome-next` in devbar (#260952)
Dosant Apr 2, 2026
8e94cdd
Merge branch 'main' into feature/chrome-next
Dosant Apr 7, 2026
bffcd58
fix types
Dosant Apr 7, 2026
77218be
[Chrome Next] Sidenav: renderContent, renderPopover, and customConten…
Dosant Apr 7, 2026
89679bf
Merge branch 'main' into feature/chrome-next
Dosant Apr 7, 2026
dcf13a5
[FeatureBranch/DoNotReview][Chrome Next] Add a user menu and space se…
Dosant Apr 8, 2026
8163969
Merge branch 'main' into feature/chrome-next
Dosant Apr 8, 2026
347f37c
[FeatureBranch/DoNotReview][Chrome Next] Add global search modal (#26…
angeles-mb Apr 8, 2026
f2d5284
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 8, 2026
8d4ccd1
Lint and quick check fixes
kowalczyk-krzysztof Apr 8, 2026
6e1980a
[FeatureBranch/DoNotReview][Chrome Next] Make discover use ChromeNext…
kowalczyk-krzysztof Apr 9, 2026
fc3ab3e
[FeatureBranch/DoNotReview][Chrome Next] Make User and Help menus sup…
Dosant Apr 9, 2026
b5a7adb
[Chrome Next] Pivot: revert sidenav rendering glue and navigation pac…
Dosant Apr 10, 2026
3ef4b1e
[Chrome Next] Bootstrap GlobalHeader and composable header shells (#2…
Dosant Apr 13, 2026
f32a7f2
Merge branch 'main' into feature/chrome-next
Dosant Apr 13, 2026
6ef32ee
[Chrome Next] Add badges (#262715)
kowalczyk-krzysztof Apr 13, 2026
104a7b3
[FeatureBranch/DoNotReview][Chrome Next] header: separators, help but…
Dosant Apr 13, 2026
ec9ba41
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 14, 2026
18d5897
[Chrome Next] Add search button to global header (#262997)
Dosant Apr 14, 2026
57cad6b
Lint fix
kowalczyk-krzysztof Apr 14, 2026
d7697d3
Chrome-next logo, separators, and home nav item (#263093)
Dosant Apr 14, 2026
7db5a62
wip polish title styles
Dosant Apr 15, 2026
e410acc
[FeatureBranch/DoNotReview] Chrome-next: header API partial-merge, ba…
Dosant Apr 15, 2026
21227e3
[FeatureBranch/DoNotReview][Chrome Next] Add context switcher UI pack…
angeles-mb Apr 16, 2026
d830087
Fix project lint
angeles-mb Apr 16, 2026
d72264d
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 16, 2026
dd75d70
[DoNotReview/FeatureBranch] Auto-promote share from app menu to globa…
Dosant Apr 16, 2026
cc4b2ca
[DoNotReview/FeatureBranch] [Chrome Next] Add feedback global app men…
kowalczyk-krzysztof Apr 17, 2026
1d7c31e
Lint fix
kowalczyk-krzysztof Apr 17, 2026
0cdbfb0
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 17, 2026
18140cc
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 21, 2026
5cf88b1
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 21, 2026
e950e9c
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 21, 2026
bbb8910
Moon regenerate
kowalczyk-krzysztof Apr 21, 2026
be788ec
[DoNotReview/FeatureBranch] [Chrome Next] Add cloud toggle (#265008)
kowalczyk-krzysztof Apr 22, 2026
9b8409f
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 22, 2026
efce191
[DoNotReview/FeatureBranch] [Chrome Next] Update help menu (#264838)
kowalczyk-krzysztof Apr 23, 2026
060d82f
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 23, 2026
01b37e5
Merge branch 'feature/chrome-next' of github.com:elastic/kibana into …
Dosant Apr 24, 2026
47968e2
Merge branch 'main' of github.com:elastic/kibana into feature/chrome-…
Dosant Apr 24, 2026
7ae2826
post merge fix
Dosant Apr 24, 2026
92f7939
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 24, 2026
cbf895a
[Chrome Next] Add documentation link to app menu (#266082)
kowalczyk-krzysztof Apr 28, 2026
c628ef2
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 28, 2026
c4ac594
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof Apr 29, 2026
e81534e
[Chrome Next] Add badges popovers (#266677)
kowalczyk-krzysztof May 1, 2026
3e85d5c
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof May 1, 2026
91768ee
[DoNotReview/FeatureBranch][Chrome Next] Add Spaces context switcher …
angeles-mb May 4, 2026
cdba984
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof May 4, 2026
272ff9a
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof May 6, 2026
f961a76
[DoNotReview/FeatureBranch] Add Chrome Next app header migration APIs…
Dosant May 6, 2026
6ad1bf9
[DoNotReview/FeatureBranch][Chrome Next] Add Spaces context switcher …
angeles-mb May 6, 2026
059e855
Fix missing export
kowalczyk-krzysztof May 6, 2026
1e29d5f
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof May 7, 2026
bec5df6
Update context switcher button size
angeles-mb May 7, 2026
42c7590
Changes from node scripts/lint_ts_projects --fix
kibanamachine May 7, 2026
06fce62
TO FIX: Run node 'scripts/yarn_deduplicate && yarn kbn bootstrap' loc…
kibanamachine May 7, 2026
dfde4de
Changes from node scripts/generate codeowners
kibanamachine May 7, 2026
ef7c3d3
Changes from node scripts/regenerate_moon_projects.js --update
kibanamachine May 7, 2026
981814a
Changes from node scripts/eslint_all_files --no-cache --fix
kibanamachine May 7, 2026
c95ee50
[Chrome Next][DoNotReview] Use app docs API for index management (#26…
kowalczyk-krzysztof May 7, 2026
9d473ca
[DoNotReview/FeatureBranch][Chrome Next] Lazy load context switcher (…
angeles-mb May 7, 2026
01ffcf5
Update cloud bundle limits
angeles-mb May 7, 2026
cc429fc
Update use manage index menu i18n ids
angeles-mb May 7, 2026
cc95770
Override chrome next feature flag for testing purposes
angeles-mb May 7, 2026
63becfc
Fix solution view info type
angeles-mb May 7, 2026
7a5cc7b
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof May 7, 2026
8e88b5a
Header style tweaks (#268086)
ryankeairns May 7, 2026
ff7c113
Merge branch 'main' into feature/chrome-next
Dosant May 8, 2026
6c0e45b
Revert: Override chrome next feature flag for testing purposes
angeles-mb May 8, 2026
cd25fb1
Merge branch 'main' of github.com:elastic/kibana into feature/chrome-…
Dosant May 11, 2026
dd89c65
fix merge - remove delay=long
Dosant May 11, 2026
70c03c6
Merge branch 'main' of github.com:elastic/kibana into feature/chrome-…
Dosant May 12, 2026
10a8bb8
keep increased limit
Dosant May 12, 2026
6c07ac5
temp disable tests
Dosant May 12, 2026
9db9722
enable chrome next by default
Dosant May 12, 2026
249a8f4
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof May 19, 2026
60e17ed
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof May 20, 2026
8f65218
Merge remote-tracking branch 'upstream/main' into feature/chrome-next
angeles-mb May 22, 2026
41cfdc9
Merge branch 'main' into feature/chrome-next
kowalczyk-krzysztof May 22, 2026
71d43cc
Fix type failures
angeles-mb May 22, 2026
28c74d9
Merge branch 'main' into feature/chrome-next
angeles-mb May 26, 2026
a06c2b7
[Do Not Review] [Chrome Next] Update badges overflow (#270740)
kowalczyk-krzysztof May 26, 2026
e340b30
Merge branch 'main' into feature/chrome-next
angeles-mb May 26, 2026
b810945
Merge branch 'main' into feature/chrome-next
angeles-mb May 26, 2026
8fabc46
[Do Not Review] [Chrome Next] Migrate workflows (#270882)
kowalczyk-krzysztof May 26, 2026
074c282
[FeatureBranch/DoNotReview] Migrate Streams headers to Chrome Next (#…
Dosant May 26, 2026
405286d
Merge branch 'main' of github.com:elastic/kibana into feature/chrome-…
Dosant May 27, 2026
f3a296c
fix moon
Dosant May 27, 2026
3b93ef1
fix
Dosant May 27, 2026
8a6bfd8
[Chrome Next] Avoid empty fallback AppHeader due to empty menu (#271525)
Dosant May 27, 2026
1709668
post merge fixes
Dosant May 27, 2026
ac4dc29
clean up useIsNextChrome private hook
Dosant May 28, 2026
8f7cdc8
Merge branch 'main' of github.com:elastic/kibana into feature/chrome-…
Dosant May 28, 2026
9b57e77
fix moon
Dosant May 28, 2026
1eb5af6
Merge branch 'main' into feature/chrome-next
angeles-mb May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,7 @@ src/platform/packages/shared/content-management/table_list_view @elastic/appex-s
src/platform/packages/shared/content-management/table_list_view_common @elastic/appex-sharedux
src/platform/packages/shared/content-management/table_list_view_table @elastic/appex-sharedux
src/platform/packages/shared/content-management/user_profiles @elastic/appex-sharedux
src/platform/packages/shared/context-switcher-components @elastic/appex-sharedux
src/platform/packages/shared/controls/control-group-renderer @elastic/kibana-presentation
src/platform/packages/shared/controls/controls-constants @elastic/kibana-presentation
src/platform/packages/shared/controls/controls-schemas @elastic/kibana-presentation
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,7 @@
"@kbn/content-management-user-profiles": "link:src/platform/packages/shared/content-management/user_profiles",
"@kbn/content-management-utils": "link:src/platform/packages/shared/kbn-content-management-utils",
"@kbn/content-packs-schema": "link:x-pack/platform/packages/shared/kbn-content-packs-schema",
"@kbn/context-switcher-components": "link:src/platform/packages/shared/context-switcher-components",
"@kbn/control-group-renderer": "link:src/platform/packages/shared/controls/control-group-renderer",
"@kbn/controls-constants": "link:src/platform/packages/shared/controls/controls-constants",
"@kbn/controls-example-plugin": "link:examples/controls_example",
Expand Down Expand Up @@ -354,6 +355,7 @@
"@kbn/core-chrome-browser-hooks": "link:src/core/packages/chrome/browser-hooks",
"@kbn/core-chrome-browser-internal": "link:src/core/packages/chrome/browser-internal",
"@kbn/core-chrome-browser-internal-types": "link:src/core/packages/chrome/browser-internal-types",
"@kbn/core-chrome-feature-flags": "link:src/core/packages/chrome/feature-flags",
"@kbn/core-chrome-layout": "link:src/core/packages/chrome/layout/core-chrome-layout",
"@kbn/core-chrome-layout-components": "link:src/core/packages/chrome/layout/core-chrome-layout-components",
"@kbn/core-chrome-layout-constants": "link:src/core/packages/chrome/layout/core-chrome-layout-constants",
Expand Down
10 changes: 5 additions & 5 deletions packages/kbn-optimizer/limits.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ pageLoadAssetSize:
contentConnectors: 33014
contentManagement: 8350
controls: 10300
core: 547151
core: 604282
cps: 9209
crossClusterReplication: 12662
customIntegrations: 11715
Expand All @@ -42,7 +42,7 @@ pageLoadAssetSize:
dataViewManagement: 6250
dataViews: 66000
dataVisualizer: 32727
developerToolbar: 4467
developerToolbar: 15000
devTools: 8109
discover: 30501
discoverEnhanced: 5509
Expand Down Expand Up @@ -70,7 +70,7 @@ pageLoadAssetSize:
expressionTagcloud: 14009
expressionXY: 45000
features: 4145
feedback: 7000
feedback: 7500
fieldFormats: 64634
fieldsMetadata: 4901
files: 6037
Expand All @@ -79,7 +79,7 @@ pageLoadAssetSize:
fleet: 209495
genAiSettings: 6400
globalSearch: 6890
globalSearchBar: 26122
globalSearchBar: 31178
globalSearchProviders: 4646
graph: 9924
grokdebugger: 5469
Expand Down Expand Up @@ -174,7 +174,7 @@ pageLoadAssetSize:
share: 58677
slo: 40437
snapshotRestore: 22068
spaces: 28871
spaces: 36639
stackAlerts: 31499
stackConnectors: 85421
streams: 15433
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export {
APP_MENU_ITEM_LIMIT,
APP_MENU_NOTIFICATION_INDICATOR_LEFT,
APP_MENU_NOTIFICATION_INDICATOR_TOP,
APP_MENU_SHARE_ID,
} from './src';

export {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ export const APP_MENU_ITEM_LIMIT = 3;
export const APP_MENU_NOTIFICATION_INDICATOR_TOP = 2;
export const APP_MENU_NOTIFICATION_INDICATOR_LEFT = 25;
export const DEFAULT_POPOVER_WIDTH = 200;
export const APP_MENU_SHARE_ID = 'share';
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export {
APP_MENU_ITEM_LIMIT,
APP_MENU_NOTIFICATION_INDICATOR_LEFT,
APP_MENU_NOTIFICATION_INDICATOR_TOP,
APP_MENU_SHARE_ID,
DEFAULT_POPOVER_WIDTH,
} from './constants';

Expand Down
14 changes: 13 additions & 1 deletion src/core/packages/chrome/browser-components/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,20 @@ export type { ChromeComponentsDeps } from './src/context';

export { ClassicHeader } from './src/classic';
export { ProjectHeader } from './src/project';
export {
AppHeader,
AppHeaderShell,
GlobalHeader,
GlobalHeaderShell,
HeaderActionButton,
} from './src/chrome_next';
export type {
AppHeaderShellProps,
GlobalHeaderShellProps,
HeaderActionButtonProps,
} from './src/chrome_next';
export { GridLayoutProjectSideNav } from './src/project/sidenav/grid_layout_sidenav';
export { Sidebar } from './src/sidebar';
export { AppMenuBar } from './src/project/app_menu';
export { HeaderBreadcrumbsBadges, HeaderTopBanner, ChromelessHeader } from './src/shared';
export { useHasAppMenu } from './src/shared/chrome_hooks';
export { useHasAppMenu, useIsNextChrome } from './src/shared/chrome_hooks';
5 changes: 5 additions & 0 deletions src/core/packages/chrome/browser-components/moon.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,12 @@ dependsOn:
- '@kbn/core-chrome-layout-constants'
- '@kbn/core-chrome-sidebar-components'
- '@kbn/ui-side-navigation'
- '@kbn/core-chrome-feature-flags'
- '@kbn/core-custom-branding-browser'
- '@kbn/core-custom-branding-common'
- '@kbn/core-doc-links-browser'
- '@kbn/core-feature-flags-browser'
- '@kbn/core-feature-flags-browser-mocks'
- '@kbn/core-doc-links-browser-mocks'
- '@kbn/core-http-browser'
- '@kbn/core-http-browser-mocks'
Expand All @@ -46,6 +49,8 @@ dependsOn:
- '@kbn/shared-ux-label-formatter'
- '@kbn/test-jest-helpers'
- '@kbn/use-observable'
- '@kbn/core-chrome-layout-components'
- '@kbn/shared-ux-utility'
tags:
- shared-browser
- package
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
* 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/

import React, { useMemo } from 'react';
import { EuiBadge, EuiToolTip } from '@elastic/eui';
import type { ChromeNextHeaderBadge } from '@kbn/core-chrome-browser/src';
import { css } from '@emotion/react';
import { i18n } from '@kbn/i18n';

const useBadgeStyle = () => {
return useMemo(() => {
const badge = css`
max-width: 200px;
`;

return { badge };
}, []);
};

export const AppBadge = ({ badge }: { badge: ChromeNextHeaderBadge }) => {
const { badge: badgeStyle } = useBadgeStyle();

// @ts-expect-error supported for backward compatibility. TODO: Remove it
if (badge?.renderCustomBadge) {
// @ts-expect-error supported for backward compatibility. TODO: Remove it
return badge.renderCustomBadge({ badgeText: badge.label });
}

const badgeOnClickAriaLabel =
badge?.onClickAriaLabel ??
i18n.translate('core.ui.chrome.appHeader.badge.ariaLabel', {
defaultMessage: 'Click {label} badge',
values: { label: badge.label },
});

const handleBadgeClick = () => {
if (badge?.onClick) {
badge.onClick();
}
};

const badgeComponent = (
<EuiBadge
onClick={handleBadgeClick}
onClickAriaLabel={badgeOnClickAriaLabel}
color={badge?.color ?? 'hollow'}
data-test-subj={badge?.['data-test-subj']}
css={badgeStyle}
>
{badge.label}
</EuiBadge>
);

if (badge?.tooltip) {
return <EuiToolTip content={badge.tooltip}>{badgeComponent}</EuiToolTip>;
}

return badgeComponent;
};

AppBadge.displayName = 'AppBadge';
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
/*
* 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/

import React, { memo, useMemo, useState } from 'react';
import { EuiBadge, EuiFlexGroup, EuiFlexItem, EuiPopover, useEuiTheme } from '@elastic/eui';
import { css } from '@emotion/react';
import { i18n } from '@kbn/i18n';
import { AppBadge } from './app_badge';
import { useAppBadges } from './hooks/use_app_badges';

const MAX_VISIBLE_BADGES = 2;

const useBadgesStyle = () => {
const { euiTheme } = useEuiTheme();

return useMemo(() => {
const badgesContainer = css`
margin-left: ${euiTheme.size.s};

/* Deprecated renderCustomBadge items may return null at runtime,
leaving empty EuiFlexItem wrappers in the DOM. Hide the container
when none of its children have visible content to avoid a stale
margin-left gap next to the title. */
&:not(:has(.euiFlexItem:not(:empty))) {
display: none;
}
`;

return { badgesContainer };
}, [euiTheme]);
};

export const AppBadges = memo(() => {
const badges = useAppBadges();
const { badgesContainer } = useBadgesStyle();
const [isPopoverOpen, setIsPopoverOpen] = useState(false);

if (!badges || badges.length === 0) {
return null;
}

const visibleBadges = badges.slice(0, MAX_VISIBLE_BADGES);
const overflowBadges = badges.slice(MAX_VISIBLE_BADGES);

const handleClosePopover = () => {
setIsPopoverOpen(false);
};

const handleTogglePopover = () => {
setIsPopoverOpen((open) => !open);
};

return (
<EuiFlexGroup
gutterSize="xs"
alignItems="center"
responsive={false}
wrap={false}
css={badgesContainer}
>
{visibleBadges.map((badge) => (
<EuiFlexItem grow={false} key={badge.label}>
<AppBadge badge={badge} />
</EuiFlexItem>
))}
{overflowBadges.length > 0 && (
<EuiFlexItem grow={false}>
<EuiPopover
aria-label={i18n.translate('core.ui.chrome.appHeader.badges.popoverAriaLabel', {
defaultMessage: 'More badges',
})}
button={
<EuiBadge
color="hollow"
onClick={handleTogglePopover}
onClickAriaLabel={i18n.translate(
'core.ui.chrome.appHeader.badges.overflowAriaLabel',
{
defaultMessage: 'Show {count} more badges',
values: { count: overflowBadges.length },
}
)}
>
+{overflowBadges.length}
</EuiBadge>
}
isOpen={isPopoverOpen}
closePopover={handleClosePopover}
panelPaddingSize="s"
>
<EuiFlexGroup direction="column" gutterSize="xs">
{overflowBadges.map((badge) => (
<EuiFlexItem key={badge.label}>
<AppBadge badge={badge} />
</EuiFlexItem>
))}
</EuiFlexGroup>
</EuiPopover>
</EuiFlexItem>
)}
</EuiFlexGroup>
);
});

AppBadges.displayName = 'AppBadges';
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/*
* 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/

import React from 'react';
import { AppHeaderShell } from './app_header_shell';
import { AppBadges } from './app_badges';
import { TitleArea } from './title_area';
import { GlobalActions } from './global_actions';
import { AppMenu } from './app_menu';

export const AppHeader = React.memo(() => (
<AppHeaderShell
title={<TitleArea />}
badges={<AppBadges />}
titleActions={<GlobalActions />}
trailing={<AppMenu />}
/>
));

AppHeader.displayName = 'AppHeader';
Loading
Loading