From c4857b6be28355f9f420f7263f983bfbb9d7f2d8 Mon Sep 17 00:00:00 2001 From: mitul-s Date: Fri, 29 May 2026 14:21:47 -0400 Subject: [PATCH 1/2] tooltips --- .changeset/trace-nav-tooltips.md | 5 ++ .../new-trace-viewer/trace-viewer.tsx | 67 +++++++++++++------ .../src/components/ui/icon-button.tsx | 18 ++--- packages/web-shared/src/components/ui/kbd.tsx | 21 ++++++ .../web-shared/src/components/ui/tooltip.tsx | 49 ++++++++++++++ 5 files changed, 130 insertions(+), 30 deletions(-) create mode 100644 .changeset/trace-nav-tooltips.md create mode 100644 packages/web-shared/src/components/ui/kbd.tsx create mode 100644 packages/web-shared/src/components/ui/tooltip.tsx diff --git a/.changeset/trace-nav-tooltips.md b/.changeset/trace-nav-tooltips.md new file mode 100644 index 0000000000..7a14ff91f8 --- /dev/null +++ b/.changeset/trace-nav-tooltips.md @@ -0,0 +1,5 @@ +--- +'@workflow/web-shared': patch +--- + +Add keyboard-shortcut tooltips to the up/down span navigation buttons in the trace viewer detail panel. diff --git a/packages/web-shared/src/components/new-trace-viewer/trace-viewer.tsx b/packages/web-shared/src/components/new-trace-viewer/trace-viewer.tsx index 9614a48d5b..f4282c21ba 100644 --- a/packages/web-shared/src/components/new-trace-viewer/trace-viewer.tsx +++ b/packages/web-shared/src/components/new-trace-viewer/trace-viewer.tsx @@ -29,6 +29,7 @@ import { useSidebarDataOptional } from '../sidebar/sidebar-data-context'; import type { Trace } from '../trace-viewer/types'; import { formatDuration, getHighResInMs } from '../trace-viewer/util/timing'; import { IconButton } from '../ui/icon-button'; +import { Kbd } from '../ui/kbd'; import EventList from './components/event-list'; import { SplitPane } from './components/split-pane'; import { @@ -36,6 +37,12 @@ import { Timeline, TimelineHeader, } from './components/timeline'; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from '../ui/tooltip'; import { ActiveSpanProvider, useActiveSpan } from './context'; import { DetailPanel } from './detail-panel'; import { searchSpans } from './search'; @@ -154,9 +161,11 @@ function useSelectedSpanInfo(): SelectedSpanInfo | null { export function NewTraceViewer({ trace }: NewTraceViewerProps): ReactNode { return ( - - - + + + + + ); } @@ -634,22 +643,42 @@ function NewTraceViewerContent({ trace }: NewTraceViewerProps): ReactNode { {selectedSpanName}
- - - - - - + + + + + + + {prevSpanId ? ( + + Navigate up + K + + ) : null} + + + + + + + + {nextSpanId ? ( + + Navigate down + J + + ) : null} +
( + ({ className, variant, size, type = 'button', ...props }, ref) => (