Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
573fce9
Add overflow menu support and refine top nav button styling
ryankeairns Sep 4, 2025
e1defa5
Implement overflow navigation with 'More' button and improve button o…
ryankeairns Sep 4, 2025
3dfd722
Discover top nav: move Alerts last via registry order; remove ad-hoc …
ryankeairns Sep 4, 2025
cfbeec7
Observability v2 nav: set icons via navigation_tree + plugin mappings…
ryankeairns Sep 5, 2025
0b40134
Remove icon from Dashboard edit button
ryankeairns Sep 5, 2025
0e0b901
Discover top nav: add Save-more icon-only button with dynamic display…
ryankeairns Sep 5, 2025
096bc16
Top nav: icon-only More uses display=empty; Save/Save-more split styl…
ryankeairns Sep 5, 2025
c1e0ac6
Refactor: thread optional anchorPosition through app menu popover hel…
ryankeairns Sep 5, 2025
bc801d5
TopNav: add Discover-scoped className, theme hook usage, and split-bu…
ryankeairns Sep 8, 2025
eac4463
Add VS Code tasks and eui-local-tools documentation
ryankeairns Sep 15, 2025
2bba9c8
Update AI assistant icon and nav link styling for design consistency
ryankeairns Sep 3, 2025
f4fe1ce
Add iconOnly prop and gradient styling to Observability AI Assistant …
ryankeairns Sep 16, 2025
48b5d78
Implement gradient AI Assistant button with SVG masking
ryankeairns Sep 16, 2025
8b3acd5
Add transparent background styling to various components
ryankeairns Sep 17, 2025
6d65dd2
Remove 'Add data' button from Observability overview page
ryankeairns Sep 17, 2025
217fb29
Add AI Assistant button gradient styling
ryankeairns Sep 23, 2025
6b921cd
Implement comprehensive gradient system for AssistantNavLink
ryankeairns Sep 26, 2025
fa83105
Add three button variants with icon-only variations
ryankeairns Sep 26, 2025
9278c38
Fix gradient text mask for secondary variant
ryankeairns Sep 26, 2025
1923d87
Add opacity animation to gradient border
ryankeairns Sep 27, 2025
c258f19
save progress gradient border
ryankeairns Sep 29, 2025
35871de
Square gradient border animated
ryankeairns Sep 29, 2025
02677c9
All variants working
ryankeairns Sep 30, 2025
199c583
Add dev bar
ryankeairns Sep 30, 2025
b8fa46c
Change label
ryankeairns Sep 30, 2025
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
Binary file added package-106.5.0-20250917-134132.tgz
Binary file not shown.
Binary file added package-3.3.2-20250917-134132.tgz
Binary file not shown.
Binary file added package-4.0.0-20250917-134132.tgz
Binary file not shown.
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,10 @@
"@elastic/ecs": "^9.0.0",
"@elastic/elasticsearch": "9.1.1",
"@elastic/ems-client": "8.6.3",
"@elastic/eui": "106.4.0",
"@elastic/eui": "file:./package-106.5.0-20250917-134132.tgz",
"@elastic/eui-amsterdam": "npm:@elastic/[email protected]",
"@elastic/eui-theme-borealis": "3.3.2",
"@elastic/eui-theme-borealis": "file:./package-3.3.2-20250917-134132.tgz",
"@elastic/eui-theme-common": "file:./package-4.0.0-20250917-134132.tgz",
"@elastic/filesaver": "1.1.2",
"@elastic/kibana-d3-color": "npm:@elastic/[email protected]",
"@elastic/monaco-esql": "^3.1.7",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,7 @@ export function CollapsibleNav({
category.label
)
}
titleSize="xs"
isCollapsible={true}
initialIsOpen={getIsCategoryOpen(category.id, storage)}
onToggle={(isCategoryOpen) => setIsCategoryOpen(category.id, isCategoryOpen, storage)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ export const SideNavLogoComponent = ({
label,
...props
}: SideNavLogoProps): JSX.Element => {
// Force logoElastic for all solutions
const forcedProps = {
...props,
iconType: 'logoElastic',
};
const { euiTheme } = useEuiTheme();
const { tooltipRef, handleMouseOut } = useTooltip();

Expand Down Expand Up @@ -63,7 +68,7 @@ export const SideNavLogoComponent = ({
isTruncated={false}
{...props}
>
{label}
Elastic
</MenuItem>
</div>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export const esqlEditorStyles = (
? `2px solid ${euiTheme.colors.danger}`
: `2px solid ${euiTheme.colors.lightestShade}`
: `2px solid ${bottomContainerBorderColor}`,
backgroundColor: euiTheme.colors.body,
backgroundColor: euiTheme.colors.backgroundBasePlain,
paddingLeft: euiTheme.size.xs,
paddingRight: euiTheme.size.xs,
paddingTop: editorIsInline ? euiTheme.size.s : euiTheme.size.xs,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export const TabbedTableListView = ({
}, [activeTabId, tabs, getActiveTab, onFetchSuccess]);

return (
<KibanaPageTemplate panelled data-test-subj={pageDataTestSubject}>
<KibanaPageTemplate data-test-subj={pageDataTestSubject}>
<KibanaPageTemplate.Header
pageTitle={<span id={headingId}>{title}</span>}
description={description}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,15 @@ export const TableListView = <T extends UserContentCommonSchema>({
}, []);

return (
<PageTemplate panelled data-test-subj={pageDataTestSubject}>
<PageTemplate data-test-subj={pageDataTestSubject}>
<KibanaPageTemplate.Header
pageTitle={<span id={headingId}>{title}</span>}
description={description}
rightSideItems={additionalRightSideActions?.slice(0, 2)}
data-test-subj="top-nav"
bottomBorder={false}
/>
<KibanaPageTemplate.Section aria-labelledby={hasInitialFetchReturned ? headingId : undefined}>
<KibanaPageTemplate.Section color="transparent" aria-labelledby={hasInitialFetchReturned ? headingId : undefined}>
{/* Any children passed to the component */}
{children}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,14 @@ export function Table<T extends UserContentCommonSchema>({
data-test-subj="itemsInMemTable"
rowHeader="attributes.title"
tableCaption={tableCaption}
css={cssFavoriteHoverWithinEuiTableRow(euiTheme.euiTheme)}
css={[
cssFavoriteHoverWithinEuiTableRow(euiTheme.euiTheme),
{
'& .euiTable': {
backgroundColor: 'transparent !important'
}
}
]}
childrenBetween={favoritesFilter}
/>
</TagFilterContextProvider>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ export const KibanaPageTemplateInner: FC<Props> = ({
offset={0}
minHeight={header ? 'var(--kbn-application--content-height)' : 0}
grow={header ? false : undefined}
panelled={false}
{...rest}
>
{sideBar}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,6 @@ export const useDashboardMenuItems = ({
...topNavStrings.edit,
emphasize: true,
id: 'edit',
iconType: 'pencil',
testId: 'dashboardEditMode',
className: 'eui-hideFor--s eui-hideFor--xs', // hide for small screens - editing doesn't work in mobile mode.
run: () => {
Expand All @@ -153,17 +152,22 @@ export const useDashboardMenuItems = ({
quickSave: {
...topNavStrings.quickSave,
id: 'quick-save',
iconType: 'save',
// iconType: 'save',
iconType: hasUnsavedChanges ? 'dot' : undefined,
iconSide: hasUnsavedChanges ? 'left' : undefined,
emphasize: true,
fill: false,
color: 'text',
isLoading: isSaveInProgress,
testId: 'dashboardQuickSaveMenuItem',
disableButton: disableTopNav || !hasUnsavedChanges,
run: () => quickSaveDashboard(),
} as TopNavMenuData,

interactiveSave: {
disableButton: disableTopNav,
emphasize: !Boolean(lastSavedId),
emphasize: false,
fill: false,
color: 'text',
id: 'interactive-save',
testId: 'dashboardInteractiveSaveMenuItem',
run: dashboardInteractiveSave,
Expand Down Expand Up @@ -191,8 +195,8 @@ export const useDashboardMenuItems = ({
share: {
...topNavStrings.share,
id: 'share',
iconType: 'share',
iconOnly: true,
// iconType: 'share',
iconOnly: false,
testId: 'shareTopNavButton',
disableButton: disableTopNav,
run: showShare,
Expand All @@ -201,8 +205,8 @@ export const useDashboardMenuItems = ({
export: {
...topNavStrings.export,
id: 'export',
iconType: 'download',
iconOnly: true,
// iconType: 'download',
iconOnly: false,
testId: 'exportTopNavButton',
disableButton: disableTopNav,
run: (anchorElement) => showShare(anchorElement, true),
Expand Down Expand Up @@ -285,9 +289,9 @@ export const useDashboardMenuItems = ({
...labsMenuItem,
menuItems.fullScreen,
...duplicateMenuItem,
...mayberesetChangesMenuItem,
...shareMenuItem,
...editMenuItem,
...mayberesetChangesMenuItem,
];
}, [
isLabsEnabled,
Expand Down Expand Up @@ -321,16 +325,17 @@ export const useDashboardMenuItems = ({
if (showResetChange) {
editModeItems.push(resetChangesMenuItem);
}

editModeItems.push(menuItems.quickSave);
} else {
editModeItems.push(menuItems.switchToViewMode, menuItems.interactiveSave);
}

// Always include Save in Edit mode
editModeItems.push(menuItems.quickSave);

const editModeTopNavConfigItems = [...labsMenuItem, menuItems.settings, ...editModeItems];

// insert share menu item before the last item in edit mode
editModeTopNavConfigItems.splice(-1, 0, ...shareMenuItem);
editModeTopNavConfigItems.splice(-2, 0, ...shareMenuItem);

return editModeTopNavConfigItems;
}, [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,6 @@ const dashboardViewportStyles = {
},
'.dshDashboardViewport-controls': {
margin: `0 ${euiTheme.size.s}`,
paddingTop: euiTheme.size.s,
},
}),
viewport: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import UseUnmount from 'react-use/lib/useUnmount';

import type { EuiBreadcrumb, EuiToolTipProps, UseEuiTheme } from '@elastic/eui';
import type { EuiBreadcrumb, UseEuiTheme } from '@elastic/eui';
import {
EuiBadge,
EuiHorizontalRule,
Expand All @@ -37,7 +37,6 @@ import {
getDashboardBreadcrumb,
getDashboardTitle,
topNavStrings,
unsavedChangesBadgeStrings,
} from '../dashboard_app/_dashboard_app_strings';
import { useDashboardMountContext } from '../dashboard_app/hooks/dashboard_mount_context';
import { DashboardEditingToolbar } from '../dashboard_app/top_nav/dashboard_editing_toolbar';
Expand Down Expand Up @@ -74,7 +73,7 @@ export function InternalDashboardTopNav({
forceHideUnifiedSearch,
redirectTo,
setCustomHeaderActionMenu,
showBorderBottom = true,
showBorderBottom = false,
showResetChange = true,
}: InternalDashboardTopNavProps) {
const [isChromeVisible, setIsChromeVisible] = useState(false);
Expand Down Expand Up @@ -275,18 +274,6 @@ export function InternalDashboardTopNav({

const badges = useMemo(() => {
const allBadges: TopNavMenuProps['badges'] = [];
if (hasUnsavedChanges && viewMode === 'edit') {
allBadges.push({
'data-test-subj': 'dashboardUnsavedChangesBadge',
badgeText: unsavedChangesBadgeStrings.getUnsavedChangedBadgeText(),
title: '',
color: '#F6E58D',
toolTipProps: {
content: unsavedChangesBadgeStrings.getUnsavedChangedBadgeToolTipContent(),
position: 'bottom',
} as EuiToolTipProps,
});
}

const { showWriteControls } = getDashboardCapabilities();
if (showWriteControls && dashboardApi.isManaged) {
Expand Down Expand Up @@ -407,7 +394,6 @@ const topNavStyles = {
position: 'sticky',
zIndex: euiTheme.levels.mask,
top: `var(--kbn-application--sticky-headers-offset, 0px)`,
background: euiTheme.colors.backgroundBasePlain,

[`@media (max-width: ${euiTheme.breakpoint.m}px)`]: {
position: 'unset', // on smaller screens, the top nav should not be sticky
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,6 @@ const componentStyles = {
css({
overflow: 'hidden',
padding: 0,
backgroundColor: euiTheme.colors.backgroundBasePlain,
}),
savedSearchTitle: css({
overflow: 'hidden',
Expand Down
Loading