From 8e36707662a693dade5d24db83bc3de78b11ff7a Mon Sep 17 00:00:00 2001 From: mitul-s Date: Thu, 30 Apr 2026 17:02:48 -0400 Subject: [PATCH 1/3] [trace viewer] better json handling on the detail panel --- packages/web-shared/package.json | 2 +- .../components/event-list.tsx | 18 +- .../middle-truncate/middle-truncate.tsx | 12 +- .../new-trace-viewer/trace-viewer.tsx | 88 +- .../sidebar/copyable-data-block.tsx | 2 +- .../src/components/ui/data-inspector-tree.tsx | 1162 +++++++++++++++++ .../src/components/ui/data-inspector.tsx | 27 +- .../src/components/ui/inspector-theme.ts | 110 -- packages/web-shared/src/styles.css | 233 ++++ 9 files changed, 1465 insertions(+), 189 deletions(-) create mode 100644 packages/web-shared/src/components/ui/data-inspector-tree.tsx delete mode 100644 packages/web-shared/src/components/ui/inspector-theme.ts diff --git a/packages/web-shared/package.json b/packages/web-shared/package.json index 6b170a37e0..9a5607f6d3 100644 --- a/packages/web-shared/package.json +++ b/packages/web-shared/package.json @@ -58,7 +58,7 @@ "lucide-react": "0.575.0", "react": "19.1.0", "react-dom": "19.1.0", - "react-inspector": "9.0.0", + "react-json-view-lite": "2.5.0", "react-virtuoso": "4.18.1", "shiki": "4.0.0", "sonner": "2.0.7", diff --git a/packages/web-shared/src/components/new-trace-viewer/components/event-list.tsx b/packages/web-shared/src/components/new-trace-viewer/components/event-list.tsx index 973b27bf4f..5bda8b74aa 100644 --- a/packages/web-shared/src/components/new-trace-viewer/components/event-list.tsx +++ b/packages/web-shared/src/components/new-trace-viewer/components/event-list.tsx @@ -61,24 +61,24 @@ const EventRow = ({ 'relative overflow-clip group after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-gray-alpha-400', ROW_HEIGHT_CLASS )} - role='treeitem' + role="treeitem" aria-selected={isSelected} aria-expanded={isSelected} aria-level={1} onClick={() => onSelectSpan(span.spanId)} > -
-
-
+
+
+
- + - +
-
- +
+ {formatDuration(durationMs)}
@@ -98,7 +98,7 @@ const EventList = ({ onSelectSpan: (spanId: string) => void; }) => { return ( -
    +
      {spans.map((span) => { return ( - {isTruncated && {value}} + {isTruncated && {value}} {isTruncated ? ( @@ -145,8 +145,8 @@ function MiddleTruncate({ )} 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 3332994d4c..abccaa574e 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 @@ -469,35 +469,35 @@ function NewTraceViewerContent({ trace }: NewTraceViewerProps): ReactNode { return (
      - +
      + setSearchQuery(e.target.value)} - placeholder='Search spans...' - aria-label='Search spans' - className='flex-1 min-w-0 bg-transparent text-sm text-gray-1000 placeholder:text-gray-800 outline-none' + placeholder="Search spans..." + aria-label="Search spans" + className="flex-1 min-w-0 bg-transparent text-sm text-gray-1000 placeholder:text-gray-800 outline-none" /> {searchQuery && ( )}
      @@ -506,7 +506,7 @@ function NewTraceViewerContent({ trace }: NewTraceViewerProps): ReactNode { } > -
      +
      -
      +
      {/* Detail panel */} {activeSpan && sidebar ? ( -