@workflow/web-shared 5.0.0-beta.3 → 5.0.0-beta.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/README.md +2 -10
  2. package/dist/components/error-boundary.js +1 -1
  3. package/dist/components/event-list-view.d.ts +46 -1
  4. package/dist/components/event-list-view.d.ts.map +1 -1
  5. package/dist/components/event-list-view.js +228 -90
  6. package/dist/components/hook-actions.js +1 -1
  7. package/dist/components/index.d.ts +6 -2
  8. package/dist/components/index.d.ts.map +1 -1
  9. package/dist/components/index.js +5 -2
  10. package/dist/components/new-trace-viewer/components/copy-button.js +3 -3
  11. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts +34 -0
  12. package/dist/components/new-trace-viewer/components/detail-panel-width.d.ts.map +1 -0
  13. package/dist/components/new-trace-viewer/components/detail-panel-width.js +67 -0
  14. package/dist/components/new-trace-viewer/components/detail-panel.d.ts +14 -0
  15. package/dist/components/new-trace-viewer/components/detail-panel.d.ts.map +1 -0
  16. package/dist/components/new-trace-viewer/components/detail-panel.js +122 -0
  17. package/dist/components/new-trace-viewer/components/draggable-border.d.ts +31 -0
  18. package/dist/components/new-trace-viewer/components/draggable-border.d.ts.map +1 -0
  19. package/dist/components/new-trace-viewer/components/draggable-border.js +140 -0
  20. package/dist/components/new-trace-viewer/components/event-list.d.ts +4 -2
  21. package/dist/components/new-trace-viewer/components/event-list.d.ts.map +1 -1
  22. package/dist/components/new-trace-viewer/components/event-list.js +22 -13
  23. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts +18 -0
  24. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.d.ts.map +1 -0
  25. package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +54 -0
  26. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts +20 -0
  27. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.d.ts.map +1 -0
  28. package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +81 -0
  29. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts +25 -0
  30. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.d.ts.map +1 -0
  31. package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +101 -0
  32. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts +20 -0
  33. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.d.ts.map +1 -0
  34. package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +114 -0
  35. package/dist/components/new-trace-viewer/components/minimap.d.ts +14 -0
  36. package/dist/components/new-trace-viewer/components/minimap.d.ts.map +1 -0
  37. package/dist/components/new-trace-viewer/components/minimap.js +337 -0
  38. package/dist/components/new-trace-viewer/components/pane-constants.d.ts +14 -0
  39. package/dist/components/new-trace-viewer/components/pane-constants.d.ts.map +1 -0
  40. package/dist/components/new-trace-viewer/components/pane-constants.js +16 -0
  41. package/dist/components/new-trace-viewer/components/span-markers.d.ts +46 -0
  42. package/dist/components/new-trace-viewer/components/span-markers.d.ts.map +1 -0
  43. package/dist/components/new-trace-viewer/components/span-markers.js +85 -0
  44. package/dist/components/new-trace-viewer/components/split-pane.d.ts +3 -7
  45. package/dist/components/new-trace-viewer/components/split-pane.d.ts.map +1 -1
  46. package/dist/components/new-trace-viewer/components/split-pane.js +25 -84
  47. package/dist/components/new-trace-viewer/components/timeline.d.ts +19 -15
  48. package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -1
  49. package/dist/components/new-trace-viewer/components/timeline.js +229 -111
  50. package/dist/components/new-trace-viewer/components/timeline.module.css +46 -0
  51. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts +5 -0
  52. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
  53. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +55 -0
  54. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.module.css +20 -0
  55. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts +2 -0
  56. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.d.ts.map +1 -0
  57. package/dist/components/new-trace-viewer/components/trace-viewer-skeleton.js +26 -0
  58. package/dist/components/new-trace-viewer/components/use-element-width.d.ts +8 -0
  59. package/dist/components/new-trace-viewer/components/use-element-width.d.ts.map +1 -0
  60. package/dist/components/new-trace-viewer/components/use-element-width.js +25 -0
  61. package/dist/components/new-trace-viewer/components/use-row-window.d.ts +34 -0
  62. package/dist/components/new-trace-viewer/components/use-row-window.d.ts.map +1 -0
  63. package/dist/components/new-trace-viewer/components/use-row-window.js +107 -0
  64. package/dist/components/new-trace-viewer/context.d.ts +3 -1
  65. package/dist/components/new-trace-viewer/context.d.ts.map +1 -1
  66. package/dist/components/new-trace-viewer/context.js +9 -10
  67. package/dist/components/new-trace-viewer/icons.js +3 -3
  68. package/dist/components/new-trace-viewer/search.d.ts +19 -0
  69. package/dist/components/new-trace-viewer/search.d.ts.map +1 -0
  70. package/dist/components/new-trace-viewer/search.js +134 -0
  71. package/dist/components/new-trace-viewer/trace-viewer.d.ts +6 -3
  72. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
  73. package/dist/components/new-trace-viewer/trace-viewer.js +167 -162
  74. package/dist/components/new-trace-viewer/types.d.ts +2 -0
  75. package/dist/components/new-trace-viewer/types.d.ts.map +1 -1
  76. package/dist/components/new-trace-viewer/types.js +2 -2
  77. package/dist/components/new-trace-viewer/utils.d.ts +48 -13
  78. package/dist/components/new-trace-viewer/utils.d.ts.map +1 -1
  79. package/dist/components/new-trace-viewer/utils.js +135 -107
  80. package/dist/components/run-trace-view.d.ts +5 -7
  81. package/dist/components/run-trace-view.d.ts.map +1 -1
  82. package/dist/components/run-trace-view.js +3 -3
  83. package/dist/components/sidebar/attribute-panel.d.ts +4 -1
  84. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  85. package/dist/components/sidebar/attribute-panel.js +133 -113
  86. package/dist/components/sidebar/attributes-block.d.ts +40 -0
  87. package/dist/components/sidebar/attributes-block.d.ts.map +1 -0
  88. package/dist/components/sidebar/attributes-block.js +140 -0
  89. package/dist/components/sidebar/conversation-view.js +1 -1
  90. package/dist/components/sidebar/copyable-data-block.d.ts +2 -0
  91. package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
  92. package/dist/components/sidebar/copyable-data-block.js +17 -16
  93. package/dist/components/sidebar/entity-detail-panel.d.ts +11 -11
  94. package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
  95. package/dist/components/sidebar/entity-detail-panel.js +35 -69
  96. package/dist/components/sidebar/events-list.d.ts +6 -2
  97. package/dist/components/sidebar/events-list.d.ts.map +1 -1
  98. package/dist/components/sidebar/events-list.js +76 -62
  99. package/dist/components/sidebar/resolve-hook-modal.js +1 -1
  100. package/dist/components/sidebar/sidebar-data-context.d.ts +10 -7
  101. package/dist/components/sidebar/sidebar-data-context.d.ts.map +1 -1
  102. package/dist/components/sidebar/sidebar-data-context.js +1 -1
  103. package/dist/components/sidebar/span-detail-merge.d.ts +31 -0
  104. package/dist/components/sidebar/span-detail-merge.d.ts.map +1 -0
  105. package/dist/components/sidebar/span-detail-merge.js +92 -0
  106. package/dist/components/sidebar/use-selected-span-detail.d.ts +16 -0
  107. package/dist/components/sidebar/use-selected-span-detail.d.ts.map +1 -0
  108. package/dist/components/sidebar/use-selected-span-detail.js +93 -0
  109. package/dist/components/stream-viewer.js +1 -1
  110. package/dist/components/trace-viewer/components/map.d.ts +2 -2
  111. package/dist/components/trace-viewer/components/map.d.ts.map +1 -1
  112. package/dist/components/trace-viewer/components/map.js +1 -1
  113. package/dist/components/trace-viewer/components/markers.js +1 -1
  114. package/dist/components/trace-viewer/components/node.d.ts +7 -7
  115. package/dist/components/trace-viewer/components/node.d.ts.map +1 -1
  116. package/dist/components/trace-viewer/components/node.js +2 -1
  117. package/dist/components/trace-viewer/components/search-input.js +1 -1
  118. package/dist/components/trace-viewer/components/search.js +1 -1
  119. package/dist/components/trace-viewer/components/span-content.js +1 -1
  120. package/dist/components/trace-viewer/components/span-detail-panel.js +1 -1
  121. package/dist/components/trace-viewer/components/span-segments.js +1 -1
  122. package/dist/components/trace-viewer/components/span-strategies.js +1 -1
  123. package/dist/components/trace-viewer/components/ui.js +1 -1
  124. package/dist/components/trace-viewer/components/zoom-button.js +1 -1
  125. package/dist/components/trace-viewer/components/zoom-icons.js +1 -1
  126. package/dist/components/trace-viewer/context.js +1 -1
  127. package/dist/components/trace-viewer/index.js +1 -1
  128. package/dist/components/trace-viewer/trace-viewer.js +1 -1
  129. package/dist/components/trace-viewer/trace-viewer.module.css +4 -4
  130. package/dist/components/trace-viewer/types.js +1 -1
  131. package/dist/components/trace-viewer/util/constants.js +1 -1
  132. package/dist/components/trace-viewer/util/scrollbar-width.js +1 -1
  133. package/dist/components/trace-viewer/util/timing.d.ts +3 -3
  134. package/dist/components/trace-viewer/util/timing.d.ts.map +1 -1
  135. package/dist/components/trace-viewer/util/timing.js +8 -11
  136. package/dist/components/trace-viewer/util/tree.js +1 -1
  137. package/dist/components/trace-viewer/util/use-immediate-style.js +1 -1
  138. package/dist/components/trace-viewer/util/use-streaming-spans.js +1 -1
  139. package/dist/components/trace-viewer/util/use-trackpad-zoom.js +1 -1
  140. package/dist/components/trace-viewer/worker.js +1 -1
  141. package/dist/components/trace-viewer-new.d.ts +5 -1
  142. package/dist/components/trace-viewer-new.d.ts.map +1 -1
  143. package/dist/components/trace-viewer-new.js +8 -10
  144. package/dist/components/ui/alert.js +2 -2
  145. package/dist/components/ui/button.d.ts +10 -0
  146. package/dist/components/ui/button.d.ts.map +1 -0
  147. package/dist/components/ui/button.js +46 -0
  148. package/dist/components/ui/card.js +2 -2
  149. package/dist/components/ui/collapsible.d.ts +46 -0
  150. package/dist/components/ui/collapsible.d.ts.map +1 -0
  151. package/dist/components/ui/collapsible.js +66 -0
  152. package/dist/components/ui/context-card.d.ts +47 -0
  153. package/dist/components/ui/context-card.d.ts.map +1 -0
  154. package/dist/components/ui/context-card.js +471 -0
  155. package/dist/components/ui/data-inspector.d.ts +7 -6
  156. package/dist/components/ui/data-inspector.d.ts.map +1 -1
  157. package/dist/components/ui/data-inspector.js +232 -99
  158. package/dist/components/ui/data-inspector.styles.d.ts +29 -0
  159. package/dist/components/ui/data-inspector.styles.d.ts.map +1 -0
  160. package/dist/components/ui/data-inspector.styles.js +95 -0
  161. package/dist/components/ui/decrypt-button.js +1 -1
  162. package/dist/components/ui/error-card.js +2 -2
  163. package/dist/components/ui/error-stack-block.d.ts +17 -10
  164. package/dist/components/ui/error-stack-block.d.ts.map +1 -1
  165. package/dist/components/ui/error-stack-block.js +49 -30
  166. package/dist/components/ui/icon-button.d.ts +19 -0
  167. package/dist/components/ui/icon-button.d.ts.map +1 -0
  168. package/dist/components/ui/icon-button.js +29 -0
  169. package/dist/components/ui/kbd.d.ts +10 -0
  170. package/dist/components/ui/kbd.d.ts.map +1 -0
  171. package/dist/components/ui/kbd.js +25 -0
  172. package/dist/components/ui/load-more-button.js +1 -1
  173. package/dist/components/ui/menu-dropdown.js +1 -1
  174. package/dist/components/ui/skeleton.js +2 -2
  175. package/dist/components/ui/spinner.js +1 -1
  176. package/dist/components/ui/timestamp-tooltip.d.ts +34 -1
  177. package/dist/components/ui/timestamp-tooltip.d.ts.map +1 -1
  178. package/dist/components/ui/timestamp-tooltip.js +80 -132
  179. package/dist/components/ui/tooltip.d.ts +10 -0
  180. package/dist/components/ui/tooltip.d.ts.map +1 -0
  181. package/dist/components/ui/tooltip.js +12 -0
  182. package/dist/components/workflow-trace-view.d.ts +7 -8
  183. package/dist/components/workflow-trace-view.d.ts.map +1 -1
  184. package/dist/components/workflow-trace-view.js +11 -16
  185. package/dist/components/workflow-traces/event-colors.d.ts +2 -1
  186. package/dist/components/workflow-traces/event-colors.d.ts.map +1 -1
  187. package/dist/components/workflow-traces/event-colors.js +15 -7
  188. package/dist/components/workflow-traces/trace-colors.d.ts.map +1 -1
  189. package/dist/components/workflow-traces/trace-colors.js +3 -4
  190. package/dist/components/workflow-traces/trace-span-construction.d.ts +7 -4
  191. package/dist/components/workflow-traces/trace-span-construction.d.ts.map +1 -1
  192. package/dist/components/workflow-traces/trace-span-construction.js +87 -33
  193. package/dist/components/workflow-traces/trace-time-utils.js +1 -1
  194. package/dist/hooks/use-dark-mode.js +1 -1
  195. package/dist/hooks/use-intersection-observer.d.ts +17 -0
  196. package/dist/hooks/use-intersection-observer.d.ts.map +1 -0
  197. package/dist/hooks/use-intersection-observer.js +29 -0
  198. package/dist/hooks/use-load-more-on-scroll.d.ts +21 -0
  199. package/dist/hooks/use-load-more-on-scroll.d.ts.map +1 -0
  200. package/dist/hooks/use-load-more-on-scroll.js +28 -0
  201. package/dist/hooks/use-reduced-motion.d.ts +10 -0
  202. package/dist/hooks/use-reduced-motion.d.ts.map +1 -0
  203. package/dist/hooks/use-reduced-motion.js +29 -0
  204. package/dist/index.d.ts +3 -2
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +4 -3
  207. package/dist/lib/cn.d.ts +10 -0
  208. package/dist/lib/cn.d.ts.map +1 -0
  209. package/dist/lib/cn.js +83 -0
  210. package/dist/lib/event-analysis.d.ts +1 -1
  211. package/dist/lib/event-analysis.d.ts.map +1 -1
  212. package/dist/lib/event-analysis.js +3 -2
  213. package/dist/lib/event-materialization.d.ts +1 -1
  214. package/dist/lib/event-materialization.d.ts.map +1 -1
  215. package/dist/lib/event-materialization.js +29 -21
  216. package/dist/lib/exact-event-search-id.d.ts +25 -0
  217. package/dist/lib/exact-event-search-id.d.ts.map +1 -0
  218. package/dist/lib/exact-event-search-id.js +39 -0
  219. package/dist/lib/hydration.d.ts +17 -2
  220. package/dist/lib/hydration.d.ts.map +1 -1
  221. package/dist/lib/hydration.js +185 -22
  222. package/dist/lib/stream-display.js +1 -1
  223. package/dist/lib/toast.js +1 -1
  224. package/dist/lib/trace-builder.d.ts +16 -4
  225. package/dist/lib/trace-builder.d.ts.map +1 -1
  226. package/dist/lib/trace-builder.js +34 -15
  227. package/dist/lib/utils.d.ts +23 -9
  228. package/dist/lib/utils.d.ts.map +1 -1
  229. package/dist/lib/utils.js +73 -33
  230. package/dist/lib/zstd-browser-decoder.d.ts +7 -0
  231. package/dist/lib/zstd-browser-decoder.d.ts.map +1 -0
  232. package/dist/lib/zstd-browser-decoder.js +41 -0
  233. package/dist/styles.css +14 -0
  234. package/package.json +10 -7
  235. package/src/components/event-list-view.tsx +375 -116
  236. package/src/components/index.ts +12 -5
  237. package/src/components/new-trace-viewer/components/copy-button.tsx +2 -2
  238. package/src/components/new-trace-viewer/components/detail-panel-width.test.ts +123 -0
  239. package/src/components/new-trace-viewer/components/detail-panel-width.ts +76 -0
  240. package/src/components/new-trace-viewer/components/detail-panel.tsx +273 -0
  241. package/src/components/new-trace-viewer/components/draggable-border.tsx +216 -0
  242. package/src/components/new-trace-viewer/components/event-list.tsx +57 -32
  243. package/src/components/new-trace-viewer/components/middle-truncate/copy-selection.ts +114 -0
  244. package/src/components/new-trace-viewer/components/middle-truncate/middle-truncate.tsx +157 -0
  245. package/src/components/new-trace-viewer/components/middle-truncate/truncate.ts +132 -0
  246. package/src/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.ts +167 -0
  247. package/src/components/new-trace-viewer/components/minimap.tsx +559 -0
  248. package/src/components/new-trace-viewer/components/pane-constants.ts +19 -0
  249. package/src/components/new-trace-viewer/components/span-markers.tsx +173 -0
  250. package/src/components/new-trace-viewer/components/split-pane.tsx +80 -135
  251. package/src/components/new-trace-viewer/components/timeline.module.css +46 -0
  252. package/src/components/new-trace-viewer/components/timeline.tsx +603 -239
  253. package/src/components/new-trace-viewer/components/trace-shortcut-helper.module.css +20 -0
  254. package/src/components/new-trace-viewer/components/trace-shortcut-helper.tsx +116 -0
  255. package/src/components/new-trace-viewer/components/trace-viewer-skeleton.tsx +114 -0
  256. package/src/components/new-trace-viewer/components/use-element-width.ts +29 -0
  257. package/src/components/new-trace-viewer/components/use-row-window.ts +140 -0
  258. package/src/components/new-trace-viewer/context.tsx +13 -14
  259. package/src/components/new-trace-viewer/icons.tsx +2 -2
  260. package/src/components/new-trace-viewer/search.ts +178 -0
  261. package/src/components/new-trace-viewer/trace-viewer.tsx +336 -293
  262. package/src/components/new-trace-viewer/types.ts +2 -0
  263. package/src/components/new-trace-viewer/utils.test.ts +247 -0
  264. package/src/components/new-trace-viewer/utils.ts +203 -134
  265. package/src/components/run-trace-view.tsx +10 -14
  266. package/src/components/sidebar/attribute-panel.tsx +276 -275
  267. package/src/components/sidebar/attributes-block.tsx +326 -0
  268. package/src/components/sidebar/copyable-data-block.tsx +50 -28
  269. package/src/components/sidebar/entity-detail-panel.tsx +89 -123
  270. package/src/components/sidebar/events-list.tsx +196 -178
  271. package/src/components/sidebar/sidebar-data-context.tsx +11 -11
  272. package/src/components/sidebar/span-detail-merge.ts +134 -0
  273. package/src/components/sidebar/use-selected-span-detail.ts +146 -0
  274. package/src/components/trace-viewer/components/node.tsx +3 -2
  275. package/src/components/trace-viewer/trace-viewer.module.css +4 -4
  276. package/src/components/trace-viewer/util/timing.ts +7 -11
  277. package/src/components/trace-viewer-new.tsx +21 -15
  278. package/src/components/ui/alert.tsx +1 -1
  279. package/src/components/ui/button.tsx +68 -0
  280. package/src/components/ui/card.tsx +1 -1
  281. package/src/components/ui/collapsible.tsx +219 -0
  282. package/src/components/ui/context-card.tsx +784 -0
  283. package/src/components/ui/data-inspector.styles.ts +96 -0
  284. package/src/components/ui/data-inspector.tsx +501 -204
  285. package/src/components/ui/error-card.tsx +1 -1
  286. package/src/components/ui/error-stack-block.tsx +84 -55
  287. package/src/components/ui/icon-button.tsx +53 -0
  288. package/src/components/ui/kbd.tsx +43 -0
  289. package/src/components/ui/skeleton.tsx +1 -1
  290. package/src/components/ui/timestamp-tooltip.tsx +132 -194
  291. package/src/components/ui/tooltip.tsx +47 -0
  292. package/src/components/workflow-trace-view.tsx +31 -36
  293. package/src/components/workflow-traces/event-colors.ts +15 -11
  294. package/src/components/workflow-traces/trace-colors.ts +6 -6
  295. package/src/components/workflow-traces/trace-span-construction.test.ts +85 -0
  296. package/src/components/workflow-traces/trace-span-construction.ts +118 -35
  297. package/src/hooks/use-intersection-observer.ts +57 -0
  298. package/src/hooks/use-load-more-on-scroll.ts +49 -0
  299. package/src/hooks/use-reduced-motion.ts +34 -0
  300. package/src/index.ts +9 -0
  301. package/src/lib/cn.ts +93 -0
  302. package/src/lib/event-analysis.ts +6 -4
  303. package/src/lib/event-materialization.ts +35 -21
  304. package/src/lib/exact-event-search-id.ts +67 -0
  305. package/src/lib/hydration.ts +203 -29
  306. package/src/lib/trace-builder.ts +44 -19
  307. package/src/lib/utils.test.ts +33 -0
  308. package/src/lib/utils.ts +82 -35
  309. package/src/lib/zstd-browser-decoder.ts +42 -0
  310. package/src/styles.css +14 -0
  311. package/dist/components/error-boundary.js.map +0 -1
  312. package/dist/components/event-list-view.js.map +0 -1
  313. package/dist/components/hook-actions.js.map +0 -1
  314. package/dist/components/index.js.map +0 -1
  315. package/dist/components/new-trace-viewer/components/copy-button.js.map +0 -1
  316. package/dist/components/new-trace-viewer/components/event-list.js.map +0 -1
  317. package/dist/components/new-trace-viewer/components/split-pane.js.map +0 -1
  318. package/dist/components/new-trace-viewer/components/timeline.js.map +0 -1
  319. package/dist/components/new-trace-viewer/context.js.map +0 -1
  320. package/dist/components/new-trace-viewer/detail-panel.d.ts +0 -10
  321. package/dist/components/new-trace-viewer/detail-panel.d.ts.map +0 -1
  322. package/dist/components/new-trace-viewer/detail-panel.js +0 -11
  323. package/dist/components/new-trace-viewer/detail-panel.js.map +0 -1
  324. package/dist/components/new-trace-viewer/icons.js.map +0 -1
  325. package/dist/components/new-trace-viewer/trace-viewer.js.map +0 -1
  326. package/dist/components/new-trace-viewer/types.js.map +0 -1
  327. package/dist/components/new-trace-viewer/util/constants.d.ts +0 -1
  328. package/dist/components/new-trace-viewer/util/constants.d.ts.map +0 -1
  329. package/dist/components/new-trace-viewer/util/constants.js +0 -2
  330. package/dist/components/new-trace-viewer/util/constants.js.map +0 -1
  331. package/dist/components/new-trace-viewer/utils.js.map +0 -1
  332. package/dist/components/run-trace-view.js.map +0 -1
  333. package/dist/components/sidebar/attribute-panel.js.map +0 -1
  334. package/dist/components/sidebar/conversation-view.js.map +0 -1
  335. package/dist/components/sidebar/copyable-data-block.js.map +0 -1
  336. package/dist/components/sidebar/detail-card.d.ts +0 -14
  337. package/dist/components/sidebar/detail-card.d.ts.map +0 -1
  338. package/dist/components/sidebar/detail-card.js +0 -20
  339. package/dist/components/sidebar/detail-card.js.map +0 -1
  340. package/dist/components/sidebar/entity-detail-panel.js.map +0 -1
  341. package/dist/components/sidebar/events-list.js.map +0 -1
  342. package/dist/components/sidebar/resolve-hook-modal.js.map +0 -1
  343. package/dist/components/sidebar/sidebar-data-context.js.map +0 -1
  344. package/dist/components/stream-viewer.js.map +0 -1
  345. package/dist/components/trace-viewer/components/map.js.map +0 -1
  346. package/dist/components/trace-viewer/components/markers.js.map +0 -1
  347. package/dist/components/trace-viewer/components/node.js.map +0 -1
  348. package/dist/components/trace-viewer/components/search-input.js.map +0 -1
  349. package/dist/components/trace-viewer/components/search.js.map +0 -1
  350. package/dist/components/trace-viewer/components/span-content.js.map +0 -1
  351. package/dist/components/trace-viewer/components/span-detail-panel.js.map +0 -1
  352. package/dist/components/trace-viewer/components/span-segments.js.map +0 -1
  353. package/dist/components/trace-viewer/components/span-strategies.js.map +0 -1
  354. package/dist/components/trace-viewer/components/ui.js.map +0 -1
  355. package/dist/components/trace-viewer/components/zoom-button.js.map +0 -1
  356. package/dist/components/trace-viewer/components/zoom-icons.js.map +0 -1
  357. package/dist/components/trace-viewer/context.js.map +0 -1
  358. package/dist/components/trace-viewer/index.js.map +0 -1
  359. package/dist/components/trace-viewer/trace-viewer.js.map +0 -1
  360. package/dist/components/trace-viewer/types.js.map +0 -1
  361. package/dist/components/trace-viewer/util/constants.js.map +0 -1
  362. package/dist/components/trace-viewer/util/scrollbar-width.js.map +0 -1
  363. package/dist/components/trace-viewer/util/timing.js.map +0 -1
  364. package/dist/components/trace-viewer/util/tree.js.map +0 -1
  365. package/dist/components/trace-viewer/util/use-immediate-style.js.map +0 -1
  366. package/dist/components/trace-viewer/util/use-streaming-spans.js.map +0 -1
  367. package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +0 -1
  368. package/dist/components/trace-viewer/worker.js.map +0 -1
  369. package/dist/components/trace-viewer-new.js.map +0 -1
  370. package/dist/components/ui/alert.js.map +0 -1
  371. package/dist/components/ui/card.js.map +0 -1
  372. package/dist/components/ui/data-inspector.js.map +0 -1
  373. package/dist/components/ui/decrypt-button.js.map +0 -1
  374. package/dist/components/ui/error-card.js.map +0 -1
  375. package/dist/components/ui/error-stack-block.js.map +0 -1
  376. package/dist/components/ui/inspector-theme.d.ts +0 -95
  377. package/dist/components/ui/inspector-theme.d.ts.map +0 -1
  378. package/dist/components/ui/inspector-theme.js +0 -82
  379. package/dist/components/ui/inspector-theme.js.map +0 -1
  380. package/dist/components/ui/load-more-button.js.map +0 -1
  381. package/dist/components/ui/menu-dropdown.js.map +0 -1
  382. package/dist/components/ui/skeleton.js.map +0 -1
  383. package/dist/components/ui/spinner.js.map +0 -1
  384. package/dist/components/ui/timestamp-tooltip.js.map +0 -1
  385. package/dist/components/workflow-trace-view.js.map +0 -1
  386. package/dist/components/workflow-traces/event-colors.js.map +0 -1
  387. package/dist/components/workflow-traces/trace-colors.js.map +0 -1
  388. package/dist/components/workflow-traces/trace-span-construction.js.map +0 -1
  389. package/dist/components/workflow-traces/trace-time-utils.js.map +0 -1
  390. package/dist/hooks/use-dark-mode.js.map +0 -1
  391. package/dist/index.js.map +0 -1
  392. package/dist/lib/event-analysis.js.map +0 -1
  393. package/dist/lib/event-materialization.js.map +0 -1
  394. package/dist/lib/hydration.js.map +0 -1
  395. package/dist/lib/stream-display.js.map +0 -1
  396. package/dist/lib/toast.js.map +0 -1
  397. package/dist/lib/trace-builder.js.map +0 -1
  398. package/dist/lib/utils.js.map +0 -1
  399. package/src/components/new-trace-viewer/detail-panel.tsx +0 -57
  400. package/src/components/new-trace-viewer/util/constants.ts +0 -0
  401. package/src/components/sidebar/detail-card.tsx +0 -65
  402. package/src/components/ui/inspector-theme.ts +0 -110
@@ -0,0 +1,173 @@
1
+ 'use client';
2
+
3
+ import { ArrowLeft, ArrowRight } from 'lucide-react';
4
+ import type { ReactNode } from 'react';
5
+ import { cn } from '../../../lib/cn';
6
+ import { TimestampTooltip } from '../../ui/timestamp-tooltip';
7
+ import type { SpanMarker } from '../utils';
8
+
9
+ // ---------------------------------------------------------------------------
10
+ // Marker projection
11
+ // ---------------------------------------------------------------------------
12
+
13
+ export interface VisibleMarker {
14
+ leftPct: number;
15
+ /** Absolute (epoch) timestamp in ms — for the tooltip. */
16
+ timeMs: number;
17
+ }
18
+
19
+ /**
20
+ * Project point-in-time markers onto the visible window `[visibleStartMs,
21
+ * visibleEndMs]` of a bar, as percentages of that window. Markers outside the
22
+ * window are dropped.
23
+ */
24
+ export function projectMarkers(
25
+ markers: SpanMarker[],
26
+ visibleStartMs: number,
27
+ visibleEndMs: number
28
+ ): VisibleMarker[] {
29
+ const visibleDurationMs = visibleEndMs - visibleStartMs;
30
+ if (visibleDurationMs <= 0) return [];
31
+
32
+ return markers.flatMap((m) => {
33
+ if (m.timeMs < visibleStartMs || m.timeMs > visibleEndMs) {
34
+ return [];
35
+ }
36
+ return [
37
+ {
38
+ leftPct: ((m.timeMs - visibleStartMs) / visibleDurationMs) * 100,
39
+ timeMs: m.timeMs,
40
+ },
41
+ ];
42
+ });
43
+ }
44
+
45
+ /** Min pixel gap a tick needs from the last-kept one, else it's culled. */
46
+ const MARKER_MIN_GAP_PX = 16;
47
+
48
+ /**
49
+ * Thin out ticks that would visually collide: walk left-to-right and keep each
50
+ * one unless it sits within MARKER_MIN_GAP_PX of the last kept tick. Well-spaced
51
+ * markers survive even when a tight cluster elsewhere on the bar gets thinned —
52
+ * zoom in to resolve a cluster.
53
+ */
54
+ export function cullCollidingMarkers(
55
+ projected: VisibleMarker[],
56
+ pixelWidth: number
57
+ ): VisibleMarker[] {
58
+ const kept: VisibleMarker[] = [];
59
+ let lastKeptPct = Number.NEGATIVE_INFINITY;
60
+ for (const m of projected) {
61
+ const gapPx = ((m.leftPct - lastKeptPct) / 100) * pixelWidth;
62
+ if (gapPx < MARKER_MIN_GAP_PX) continue;
63
+ kept.push(m);
64
+ lastKeptPct = m.leftPct;
65
+ }
66
+ return kept;
67
+ }
68
+
69
+ // ---------------------------------------------------------------------------
70
+ // Rendering
71
+ // ---------------------------------------------------------------------------
72
+
73
+ /** Marker glyph: a rounded vertical tick (3px wide). */
74
+ function MarkerTick({ className }: { className?: string }): ReactNode {
75
+ return (
76
+ <span
77
+ className={cn('block w-[3px] rounded-full bg-gray-1000', className)}
78
+ />
79
+ );
80
+ }
81
+
82
+ /**
83
+ * Point-in-time markers overlaid on a bar — one vertical tick per event (hook
84
+ * resumptions and attribute writes), centered on the bar. Each tick sits inside
85
+ * a larger hit target and, on hover, shows the shared `TimestampTooltip` card
86
+ * (the same light Geist card used for every other timestamp in the app, e.g. the
87
+ * attribute panel and event list) so the time reads consistently with the rest
88
+ * of the product. The position is clamped a hair inside the bar so an edge
89
+ * marker never jams the rounded corner.
90
+ */
91
+ export function MarkerLayer({
92
+ markers,
93
+ }: {
94
+ markers: VisibleMarker[];
95
+ }): ReactNode {
96
+ return (
97
+ <>
98
+ {markers.map((m) => (
99
+ <span
100
+ key={m.timeMs}
101
+ className="pointer-events-auto absolute top-0 bottom-0 z-10 flex w-8 -translate-x-1/2 items-center justify-center"
102
+ style={{ left: `clamp(8px, ${m.leftPct}%, calc(100% - 8px))` }}
103
+ >
104
+ <TimestampTooltip date={m.timeMs}>
105
+ <span className="flex h-6 w-8 items-center justify-center">
106
+ <MarkerTick className="h-3" />
107
+ </span>
108
+ </TimestampTooltip>
109
+ </span>
110
+ ))}
111
+ </>
112
+ );
113
+ }
114
+
115
+ /**
116
+ * Edge indicator for markers that have scrolled out of view while zoomed in.
117
+ * Pinned flush to the corresponding edge of the visible bar, it shows the marker
118
+ * glyph plus a chevron pointing the way to scroll. The chevron always sits on
119
+ * the outer (off-screen) side, in a box that lines up with the bare
120
+ * BoundaryArrow on adjacent rows.
121
+ */
122
+ export function OffscreenMarkerIndicator({
123
+ direction,
124
+ count,
125
+ targetMs,
126
+ onReveal,
127
+ }: {
128
+ direction: 'left' | 'right';
129
+ count: number;
130
+ targetMs: number;
131
+ onReveal?: (timeMs: number) => void;
132
+ }): ReactNode {
133
+ const Chevron = direction === 'right' ? ArrowRight : ArrowLeft;
134
+ const label = `${count} marker${count === 1 ? '' : 's'} ${
135
+ direction === 'right' ? 'ahead' : 'behind'
136
+ } — click to scroll to ${count === 1 ? 'it' : 'the nearest'}`;
137
+ const chevron = (
138
+ <span className="flex h-6 w-6 shrink-0 items-center justify-center">
139
+ <Chevron className="size-3 text-gray-900" />
140
+ </span>
141
+ );
142
+ const tick = <MarkerTick className="h-3.5 shrink-0" />;
143
+
144
+ return (
145
+ <button
146
+ type="button"
147
+ aria-label={label}
148
+ title={label}
149
+ onClick={(e) => {
150
+ // Don't let the row's onClick fire — revealing shouldn't also
151
+ // change the span selection.
152
+ e.stopPropagation();
153
+ onReveal?.(targetMs);
154
+ }}
155
+ className={cn(
156
+ 'pointer-events-auto absolute top-1/2 z-20 flex h-6 -translate-y-1/2 cursor-pointer items-center rounded-[0.25rem] border border-gray-alpha-400 bg-background-100 hover:bg-gray-100',
157
+ direction === 'right' ? 'right-0 pl-1.5' : 'left-0 pr-1.5'
158
+ )}
159
+ >
160
+ {direction === 'left' ? (
161
+ <>
162
+ {chevron}
163
+ {tick}
164
+ </>
165
+ ) : (
166
+ <>
167
+ {tick}
168
+ {chevron}
169
+ </>
170
+ )}
171
+ </button>
172
+ );
173
+ }
@@ -3,40 +3,37 @@
3
3
  import {
4
4
  Children,
5
5
  type ReactNode,
6
- type PointerEvent as ReactPointerEvent,
6
+ type RefObject,
7
7
  useCallback,
8
- useEffect,
9
8
  useRef,
10
9
  useState,
11
10
  } from 'react';
12
- import { cn } from '../../../lib/utils';
13
-
14
- /** Wide enough for comfortable dragging; visual line stays 1px centered. */
15
- const GUTTER_PX = 9;
16
- const MIN_PX = 50;
17
- const DEFAULT_START_PX = 340;
11
+ import { cn } from '../../../lib/cn';
12
+ import { DraggableBorder } from './draggable-border';
13
+ import {
14
+ DEFAULT_START_PX,
15
+ GUTTER_PX,
16
+ MIN_PX,
17
+ paneColTemplate,
18
+ } from './pane-constants';
19
+ import { useElementWidth } from './use-element-width';
18
20
 
19
- export function Divider() {
20
- return <div aria-hidden className="h-full w-px shrink-0 bg-gray-alpha-400" />;
21
- }
21
+ const SPLIT_PANE_START_ID = 'trace-split-start';
22
22
 
23
23
  export interface SplitPaneProps {
24
24
  children: ReactNode;
25
25
  className?: string;
26
- /** Fixed pixel width for the start (left) pane. Default 220. */
27
- defaultStartWidth?: number;
28
- /** Fixed (non-scrolling) header rendered above the start pane. */
29
26
  startHeader?: ReactNode;
30
- /** Fixed (non-scrolling) header rendered above the end pane. */
31
27
  endHeader?: ReactNode;
28
+ scrollContainerRef?: RefObject<HTMLDivElement | null>;
32
29
  }
33
30
 
34
31
  export function SplitPane({
35
32
  children,
36
33
  className,
37
- defaultStartWidth = DEFAULT_START_PX,
38
34
  startHeader,
39
35
  endHeader,
36
+ scrollContainerRef,
40
37
  }: SplitPaneProps) {
41
38
  const parts = Children.toArray(children);
42
39
  if (parts.length !== 2) {
@@ -44,19 +41,20 @@ export function SplitPane({
44
41
  }
45
42
  const [start, end] = parts;
46
43
 
47
- const [startPx, setStartPx] = useState(defaultStartWidth);
48
- const [isDragging, setIsDragging] = useState(false);
44
+ const [startPx, setStartPx] = useState(DEFAULT_START_PX);
49
45
  const containerRef = useRef<HTMLDivElement>(null);
50
- const gutterRef = useRef<HTMLDivElement>(null);
51
- const rafRef = useRef<number | null>(null);
52
- const pendingPx = useRef(defaultStartWidth);
53
- const pointerIdRef = useRef<number | null>(null);
54
-
55
- useEffect(() => {
56
- return () => {
57
- if (rafRef.current) cancelAnimationFrame(rafRef.current);
58
- };
59
- }, []);
46
+ const startRef = useRef<HTMLDivElement>(null);
47
+ const containerWidth = useElementWidth(containerRef);
48
+
49
+ const setContainerRef = useCallback(
50
+ (node: HTMLDivElement | null) => {
51
+ containerRef.current = node;
52
+ if (scrollContainerRef) {
53
+ scrollContainerRef.current = node;
54
+ }
55
+ },
56
+ [scrollContainerRef]
57
+ );
60
58
 
61
59
  const clampPx = useCallback((px: number) => {
62
60
  const el = containerRef.current;
@@ -65,122 +63,69 @@ export function SplitPane({
65
63
  return Math.min(maxPx, Math.max(MIN_PX, px));
66
64
  }, []);
67
65
 
68
- useEffect(() => {
69
- if (!isDragging) return;
70
-
71
- const onPointerMove = (e: globalThis.PointerEvent) => {
72
- if (e.pointerId !== pointerIdRef.current) return;
73
- const container = containerRef.current;
74
- if (!container) return;
75
- const rect = container.getBoundingClientRect();
76
- pendingPx.current = clampPx(e.clientX - rect.left);
77
- if (!rafRef.current) {
78
- rafRef.current = requestAnimationFrame(() => {
79
- rafRef.current = null;
80
- setStartPx(pendingPx.current);
81
- });
82
- }
83
- };
84
-
85
- const onPointerUp = (e: globalThis.PointerEvent) => {
86
- if (e.pointerId !== pointerIdRef.current) return;
87
- const gutter = gutterRef.current;
88
- if (gutter?.hasPointerCapture(e.pointerId)) {
89
- gutter.releasePointerCapture(e.pointerId);
90
- }
91
- if (rafRef.current) {
92
- cancelAnimationFrame(rafRef.current);
93
- rafRef.current = null;
94
- }
95
- pointerIdRef.current = null;
96
- setIsDragging(false);
97
- };
98
-
99
- document.addEventListener('pointermove', onPointerMove);
100
- document.addEventListener('pointerup', onPointerUp);
101
- document.addEventListener('pointercancel', onPointerUp);
102
-
103
- return () => {
104
- document.removeEventListener('pointermove', onPointerMove);
105
- document.removeEventListener('pointerup', onPointerUp);
106
- document.removeEventListener('pointercancel', onPointerUp);
107
- };
108
- }, [isDragging, clampPx]);
109
-
110
- const handlePointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {
111
- e.currentTarget.setPointerCapture(e.pointerId);
112
- pointerIdRef.current = e.pointerId;
113
- setIsDragging(true);
114
- };
66
+ const handleWidthChange = useCallback(
67
+ (next: number) => setStartPx(clampPx(next)),
68
+ [clampPx]
69
+ );
70
+ const handleReset = useCallback(
71
+ () => setStartPx(clampPx(DEFAULT_START_PX)),
72
+ [clampPx]
73
+ );
115
74
 
116
- const handleLostPointerCapture = () => {
117
- pointerIdRef.current = null;
118
- setIsDragging(false);
119
- if (rafRef.current) {
120
- cancelAnimationFrame(rafRef.current);
121
- rafRef.current = null;
122
- }
123
- };
75
+ const effectiveStartPx =
76
+ containerWidth > 0
77
+ ? Math.max(MIN_PX, Math.min(containerWidth - MIN_PX - GUTTER_PX, startPx))
78
+ : startPx;
124
79
 
125
- const colTemplate = `${startPx}px ${GUTTER_PX}px minmax(${MIN_PX}px, 1fr)`;
126
- const hasHeaders = startHeader != null || endHeader != null;
80
+ const colTemplate = paneColTemplate(effectiveStartPx);
127
81
 
128
- const gutter = (
129
- <div
130
- ref={gutterRef}
131
- className="relative z-20 isolate flex shrink-0 cursor-col-resize justify-center"
132
- onPointerDown={handlePointerDown}
133
- onLostPointerCapture={handleLostPointerCapture}
134
- >
135
- <span
136
- className="pointer-events-none relative z-10 h-full w-px shrink-0 bg-gray-alpha-400"
137
- aria-hidden
138
- />
139
- </div>
82
+ const maxStartPx = Math.max(
83
+ MIN_PX,
84
+ containerWidth > 0 ? containerWidth - MIN_PX - GUTTER_PX : startPx
140
85
  );
141
86
 
142
- if (hasHeaders) {
143
- return (
144
- <div className={cn('flex flex-col h-full min-h-0', className)}>
145
- <div
146
- className="shrink-0 grid"
147
- style={{ gridTemplateColumns: colTemplate }}
148
- >
149
- <div>{startHeader}</div>
150
- <div className="flex justify-center">
151
- <span className="h-full w-px bg-gray-alpha-400" aria-hidden />
152
- </div>
153
- <div>{endHeader}</div>
87
+ return (
88
+ <div className={cn('flex flex-col h-full min-h-0', className)}>
89
+ <div
90
+ className="shrink-0 grid"
91
+ style={{ gridTemplateColumns: colTemplate }}
92
+ >
93
+ <div>{startHeader}</div>
94
+ <div className="flex justify-center">
95
+ <span className="h-full w-px bg-gray-alpha-400" aria-hidden />
154
96
  </div>
155
- <div
156
- ref={containerRef}
157
- className={cn(
158
- 'grid flex-1 min-h-0 content-start overflow-x-hidden overflow-y-auto',
159
- isDragging && 'select-none'
160
- )}
161
- style={{ gridTemplateColumns: colTemplate }}
162
- >
97
+ <div>{endHeader}</div>
98
+ </div>
99
+ <div
100
+ ref={setContainerRef}
101
+ className="grid flex-1 min-h-0 overflow-x-hidden overflow-y-auto"
102
+ style={{ gridTemplateColumns: colTemplate }}
103
+ >
104
+ <div ref={startRef} id={SPLIT_PANE_START_ID} className="min-w-0">
163
105
  {start}
164
- {gutter}
165
- {end}
166
106
  </div>
107
+ <div className="relative z-20 isolate flex shrink-0 justify-center">
108
+ <span
109
+ className="pointer-events-none relative z-10 h-full w-px shrink-0 bg-gray-alpha-400"
110
+ aria-hidden
111
+ />
112
+ <DraggableBorder
113
+ element={startRef}
114
+ position="right"
115
+ onWidthChange={handleWidthChange}
116
+ onReset={handleReset}
117
+ aria-label="Resize event list"
118
+ aria-controls={SPLIT_PANE_START_ID}
119
+ aria-valuemin={MIN_PX}
120
+ aria-valuemax={maxStartPx}
121
+ aria-valuenow={Math.min(
122
+ Math.max(Math.round(effectiveStartPx), MIN_PX),
123
+ maxStartPx
124
+ )}
125
+ />
126
+ </div>
127
+ {end}
167
128
  </div>
168
- );
169
- }
170
-
171
- return (
172
- <div
173
- ref={containerRef}
174
- className={cn(
175
- 'grid h-full min-h-0 content-start overflow-x-hidden overflow-y-auto',
176
- isDragging && 'select-none',
177
- className
178
- )}
179
- style={{ gridTemplateColumns: colTemplate, height: '100%' }}
180
- >
181
- {start}
182
- {gutter}
183
- {end}
184
129
  </div>
185
130
  );
186
131
  }
@@ -0,0 +1,46 @@
1
+ .runningStripes,
2
+ .pendingStripes {
3
+ position: absolute;
4
+ inset: 0;
5
+ pointer-events: none;
6
+ border-radius: 0.25rem;
7
+ opacity: 0.5;
8
+ background-size: 11.314px 11.314px;
9
+ animation: running-stripes 0.6s linear infinite;
10
+ }
11
+
12
+ .runningStripes {
13
+ background-image: repeating-linear-gradient(
14
+ 45deg,
15
+ var(--ds-blue-500) 0,
16
+ var(--ds-blue-500) 1.5px,
17
+ transparent 1.5px,
18
+ transparent 8px
19
+ );
20
+ }
21
+
22
+ .pendingStripes {
23
+ background-image: repeating-linear-gradient(
24
+ 45deg,
25
+ var(--ds-gray-500) 0,
26
+ var(--ds-gray-500) 1.5px,
27
+ transparent 1.5px,
28
+ transparent 8px
29
+ );
30
+ }
31
+
32
+ @keyframes running-stripes {
33
+ from {
34
+ background-position: 0 0;
35
+ }
36
+ to {
37
+ background-position: 11.314px 0;
38
+ }
39
+ }
40
+
41
+ @media (prefers-reduced-motion: reduce) {
42
+ .runningStripes,
43
+ .pendingStripes {
44
+ animation: none;
45
+ }
46
+ }