@principal-ai/subsystems-react 0.17.0

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 (496) hide show
  1. package/README.md +93 -0
  2. package/dist/components/ConfigurationSelector.d.ts +35 -0
  3. package/dist/components/ConfigurationSelector.d.ts.map +1 -0
  4. package/dist/components/ConfigurationSelector.js +63 -0
  5. package/dist/components/ConfigurationSelector.js.map +1 -0
  6. package/dist/components/GraphRenderer.d.ts +295 -0
  7. package/dist/components/GraphRenderer.d.ts.map +1 -0
  8. package/dist/components/GraphRenderer.js +2008 -0
  9. package/dist/components/GraphRenderer.js.map +1 -0
  10. package/dist/components/MultiCanvasRenderer.d.ts +75 -0
  11. package/dist/components/MultiCanvasRenderer.d.ts.map +1 -0
  12. package/dist/components/MultiCanvasRenderer.js +203 -0
  13. package/dist/components/MultiCanvasRenderer.js.map +1 -0
  14. package/dist/components/NodeTooltip.d.ts +24 -0
  15. package/dist/components/NodeTooltip.d.ts.map +1 -0
  16. package/dist/components/NodeTooltip.js +160 -0
  17. package/dist/components/NodeTooltip.js.map +1 -0
  18. package/dist/components/SelectionSidebar.d.ts +18 -0
  19. package/dist/components/SelectionSidebar.d.ts.map +1 -0
  20. package/dist/components/SelectionSidebar.js +190 -0
  21. package/dist/components/SelectionSidebar.js.map +1 -0
  22. package/dist/components/SequenceDiagramRenderer.d.ts +77 -0
  23. package/dist/components/SequenceDiagramRenderer.d.ts.map +1 -0
  24. package/dist/components/SequenceDiagramRenderer.js +604 -0
  25. package/dist/components/SequenceDiagramRenderer.js.map +1 -0
  26. package/dist/components/WorkflowSequenceDiagram.d.ts +63 -0
  27. package/dist/components/WorkflowSequenceDiagram.d.ts.map +1 -0
  28. package/dist/components/WorkflowSequenceDiagram.js +147 -0
  29. package/dist/components/WorkflowSequenceDiagram.js.map +1 -0
  30. package/dist/components/dashboard/DashboardRenderer.d.ts +10 -0
  31. package/dist/components/dashboard/DashboardRenderer.d.ts.map +1 -0
  32. package/dist/components/dashboard/DashboardRenderer.js +179 -0
  33. package/dist/components/dashboard/DashboardRenderer.js.map +1 -0
  34. package/dist/components/dashboard/MetricPanel.d.ts +10 -0
  35. package/dist/components/dashboard/MetricPanel.d.ts.map +1 -0
  36. package/dist/components/dashboard/MetricPanel.js +103 -0
  37. package/dist/components/dashboard/MetricPanel.js.map +1 -0
  38. package/dist/components/dashboard/MockDataProvider.d.ts +30 -0
  39. package/dist/components/dashboard/MockDataProvider.d.ts.map +1 -0
  40. package/dist/components/dashboard/MockDataProvider.js +270 -0
  41. package/dist/components/dashboard/MockDataProvider.js.map +1 -0
  42. package/dist/components/dashboard/components/BarChart.d.ts +10 -0
  43. package/dist/components/dashboard/components/BarChart.d.ts.map +1 -0
  44. package/dist/components/dashboard/components/BarChart.js +167 -0
  45. package/dist/components/dashboard/components/BarChart.js.map +1 -0
  46. package/dist/components/dashboard/components/LineChart.d.ts +10 -0
  47. package/dist/components/dashboard/components/LineChart.d.ts.map +1 -0
  48. package/dist/components/dashboard/components/LineChart.js +141 -0
  49. package/dist/components/dashboard/components/LineChart.js.map +1 -0
  50. package/dist/components/dashboard/components/MetricCard.d.ts +9 -0
  51. package/dist/components/dashboard/components/MetricCard.d.ts.map +1 -0
  52. package/dist/components/dashboard/components/MetricCard.js +163 -0
  53. package/dist/components/dashboard/components/MetricCard.js.map +1 -0
  54. package/dist/components/dashboard/components/SourceLink.d.ts +9 -0
  55. package/dist/components/dashboard/components/SourceLink.d.ts.map +1 -0
  56. package/dist/components/dashboard/components/SourceLink.js +39 -0
  57. package/dist/components/dashboard/components/SourceLink.js.map +1 -0
  58. package/dist/components/dashboard/components/TimeRangeSelector.d.ts +9 -0
  59. package/dist/components/dashboard/components/TimeRangeSelector.d.ts.map +1 -0
  60. package/dist/components/dashboard/components/TimeRangeSelector.js +167 -0
  61. package/dist/components/dashboard/components/TimeRangeSelector.js.map +1 -0
  62. package/dist/components/dashboard/components/index.d.ts +6 -0
  63. package/dist/components/dashboard/components/index.d.ts.map +1 -0
  64. package/dist/components/dashboard/components/index.js +6 -0
  65. package/dist/components/dashboard/components/index.js.map +1 -0
  66. package/dist/components/dashboard/index.d.ts +6 -0
  67. package/dist/components/dashboard/index.d.ts.map +1 -0
  68. package/dist/components/dashboard/index.js +8 -0
  69. package/dist/components/dashboard/index.js.map +1 -0
  70. package/dist/components/dashboard/types.d.ts +74 -0
  71. package/dist/components/dashboard/types.d.ts.map +1 -0
  72. package/dist/components/dashboard/types.js +8 -0
  73. package/dist/components/dashboard/types.js.map +1 -0
  74. package/dist/components/session-events/SessionEventFeed.d.ts +34 -0
  75. package/dist/components/session-events/SessionEventFeed.d.ts.map +1 -0
  76. package/dist/components/session-events/SessionEventFeed.js +1196 -0
  77. package/dist/components/session-events/SessionEventFeed.js.map +1 -0
  78. package/dist/components/session-events/index.d.ts +7 -0
  79. package/dist/components/session-events/index.d.ts.map +1 -0
  80. package/dist/components/session-events/index.js +6 -0
  81. package/dist/components/session-events/index.js.map +1 -0
  82. package/dist/components/state-view/PipelineView.d.ts +14 -0
  83. package/dist/components/state-view/PipelineView.d.ts.map +1 -0
  84. package/dist/components/state-view/PipelineView.js +195 -0
  85. package/dist/components/state-view/PipelineView.js.map +1 -0
  86. package/dist/components/state-view/index.d.ts +14 -0
  87. package/dist/components/state-view/index.d.ts.map +1 -0
  88. package/dist/components/state-view/index.js +12 -0
  89. package/dist/components/state-view/index.js.map +1 -0
  90. package/dist/components/state-view/types.d.ts +188 -0
  91. package/dist/components/state-view/types.d.ts.map +1 -0
  92. package/dist/components/state-view/types.js +10 -0
  93. package/dist/components/state-view/types.js.map +1 -0
  94. package/dist/components/state-view/useStateView.d.ts +32 -0
  95. package/dist/components/state-view/useStateView.d.ts.map +1 -0
  96. package/dist/components/state-view/useStateView.js +129 -0
  97. package/dist/components/state-view/useStateView.js.map +1 -0
  98. package/dist/contexts/GraphEditContext.d.ts +20 -0
  99. package/dist/contexts/GraphEditContext.d.ts.map +1 -0
  100. package/dist/contexts/GraphEditContext.js +8 -0
  101. package/dist/contexts/GraphEditContext.js.map +1 -0
  102. package/dist/contexts/TooltipPortalContext.d.ts +8 -0
  103. package/dist/contexts/TooltipPortalContext.d.ts.map +1 -0
  104. package/dist/contexts/TooltipPortalContext.js +8 -0
  105. package/dist/contexts/TooltipPortalContext.js.map +1 -0
  106. package/dist/edges/CustomEdge.d.ts +24 -0
  107. package/dist/edges/CustomEdge.d.ts.map +1 -0
  108. package/dist/edges/CustomEdge.js +222 -0
  109. package/dist/edges/CustomEdge.js.map +1 -0
  110. package/dist/edges/GenericEdge.d.ts +18 -0
  111. package/dist/edges/GenericEdge.d.ts.map +1 -0
  112. package/dist/edges/GenericEdge.js +10 -0
  113. package/dist/edges/GenericEdge.js.map +1 -0
  114. package/dist/graphify/anchor.d.ts +28 -0
  115. package/dist/graphify/anchor.d.ts.map +1 -0
  116. package/dist/graphify/anchor.js +132 -0
  117. package/dist/graphify/anchor.js.map +1 -0
  118. package/dist/graphify/consolidated.d.ts +210 -0
  119. package/dist/graphify/consolidated.d.ts.map +1 -0
  120. package/dist/graphify/consolidated.js +11 -0
  121. package/dist/graphify/consolidated.js.map +1 -0
  122. package/dist/graphify/ids.d.ts +19 -0
  123. package/dist/graphify/ids.d.ts.map +1 -0
  124. package/dist/graphify/ids.js +46 -0
  125. package/dist/graphify/ids.js.map +1 -0
  126. package/dist/graphify/index.d.ts +18 -0
  127. package/dist/graphify/index.d.ts.map +1 -0
  128. package/dist/graphify/index.js +12 -0
  129. package/dist/graphify/index.js.map +1 -0
  130. package/dist/graphify/kind.d.ts +23 -0
  131. package/dist/graphify/kind.d.ts.map +1 -0
  132. package/dist/graphify/kind.js +77 -0
  133. package/dist/graphify/kind.js.map +1 -0
  134. package/dist/graphify/resolve.d.ts +48 -0
  135. package/dist/graphify/resolve.d.ts.map +1 -0
  136. package/dist/graphify/resolve.js +83 -0
  137. package/dist/graphify/resolve.js.map +1 -0
  138. package/dist/graphify/signature.d.ts +87 -0
  139. package/dist/graphify/signature.d.ts.map +1 -0
  140. package/dist/graphify/signature.js +276 -0
  141. package/dist/graphify/signature.js.map +1 -0
  142. package/dist/graphify/types.d.ts +141 -0
  143. package/dist/graphify/types.d.ts.map +1 -0
  144. package/dist/graphify/types.js +8 -0
  145. package/dist/graphify/types.js.map +1 -0
  146. package/dist/hooks/useElkLayout.d.ts +66 -0
  147. package/dist/hooks/useElkLayout.d.ts.map +1 -0
  148. package/dist/hooks/useElkLayout.js +136 -0
  149. package/dist/hooks/useElkLayout.js.map +1 -0
  150. package/dist/hooks/usePathBasedEvents.d.ts +42 -0
  151. package/dist/hooks/usePathBasedEvents.d.ts.map +1 -0
  152. package/dist/hooks/usePathBasedEvents.js +119 -0
  153. package/dist/hooks/usePathBasedEvents.js.map +1 -0
  154. package/dist/hooks/useSequenceLayout.d.ts +186 -0
  155. package/dist/hooks/useSequenceLayout.d.ts.map +1 -0
  156. package/dist/hooks/useSequenceLayout.js +327 -0
  157. package/dist/hooks/useSequenceLayout.js.map +1 -0
  158. package/dist/hooks/useUndoRedo.d.ts +80 -0
  159. package/dist/hooks/useUndoRedo.d.ts.map +1 -0
  160. package/dist/hooks/useUndoRedo.js +70 -0
  161. package/dist/hooks/useUndoRedo.js.map +1 -0
  162. package/dist/index.d.ts +73 -0
  163. package/dist/index.d.ts.map +1 -0
  164. package/dist/index.js +51 -0
  165. package/dist/index.js.map +1 -0
  166. package/dist/nodes/CustomNode.d.ts +28 -0
  167. package/dist/nodes/CustomNode.d.ts.map +1 -0
  168. package/dist/nodes/CustomNode.js +820 -0
  169. package/dist/nodes/CustomNode.js.map +1 -0
  170. package/dist/nodes/GenericNode.d.ts +20 -0
  171. package/dist/nodes/GenericNode.d.ts.map +1 -0
  172. package/dist/nodes/GenericNode.js +20 -0
  173. package/dist/nodes/GenericNode.js.map +1 -0
  174. package/dist/nodes/otel/OtelBoundaryNode.d.ts +55 -0
  175. package/dist/nodes/otel/OtelBoundaryNode.d.ts.map +1 -0
  176. package/dist/nodes/otel/OtelBoundaryNode.js +81 -0
  177. package/dist/nodes/otel/OtelBoundaryNode.js.map +1 -0
  178. package/dist/nodes/otel/OtelEventNode.d.ts +59 -0
  179. package/dist/nodes/otel/OtelEventNode.d.ts.map +1 -0
  180. package/dist/nodes/otel/OtelEventNode.js +82 -0
  181. package/dist/nodes/otel/OtelEventNode.js.map +1 -0
  182. package/dist/nodes/otel/OtelResourceNode.d.ts +53 -0
  183. package/dist/nodes/otel/OtelResourceNode.d.ts.map +1 -0
  184. package/dist/nodes/otel/OtelResourceNode.js +105 -0
  185. package/dist/nodes/otel/OtelResourceNode.js.map +1 -0
  186. package/dist/nodes/otel/OtelScopeNode.d.ts +53 -0
  187. package/dist/nodes/otel/OtelScopeNode.d.ts.map +1 -0
  188. package/dist/nodes/otel/OtelScopeNode.js +81 -0
  189. package/dist/nodes/otel/OtelScopeNode.js.map +1 -0
  190. package/dist/nodes/otel/OtelSpanConventionNode.d.ts +61 -0
  191. package/dist/nodes/otel/OtelSpanConventionNode.d.ts.map +1 -0
  192. package/dist/nodes/otel/OtelSpanConventionNode.js +131 -0
  193. package/dist/nodes/otel/OtelSpanConventionNode.js.map +1 -0
  194. package/dist/nodes/otel/index.d.ts +17 -0
  195. package/dist/nodes/otel/index.d.ts.map +1 -0
  196. package/dist/nodes/otel/index.js +13 -0
  197. package/dist/nodes/otel/index.js.map +1 -0
  198. package/dist/nodes/otel/shared/NodeBadges.d.ts +10 -0
  199. package/dist/nodes/otel/shared/NodeBadges.d.ts.map +1 -0
  200. package/dist/nodes/otel/shared/NodeBadges.js +178 -0
  201. package/dist/nodes/otel/shared/NodeBadges.js.map +1 -0
  202. package/dist/nodes/otel/shared/NodeContent.d.ts +10 -0
  203. package/dist/nodes/otel/shared/NodeContent.d.ts.map +1 -0
  204. package/dist/nodes/otel/shared/NodeContent.js +96 -0
  205. package/dist/nodes/otel/shared/NodeContent.js.map +1 -0
  206. package/dist/nodes/otel/shared/index.d.ts +8 -0
  207. package/dist/nodes/otel/shared/index.d.ts.map +1 -0
  208. package/dist/nodes/otel/shared/index.js +8 -0
  209. package/dist/nodes/otel/shared/index.js.map +1 -0
  210. package/dist/nodes/otel/shared/types.d.ts +129 -0
  211. package/dist/nodes/otel/shared/types.d.ts.map +1 -0
  212. package/dist/nodes/otel/shared/types.js +5 -0
  213. package/dist/nodes/otel/shared/types.js.map +1 -0
  214. package/dist/nodes/otel/shared/useNodeBehavior.d.ts +42 -0
  215. package/dist/nodes/otel/shared/useNodeBehavior.d.ts.map +1 -0
  216. package/dist/nodes/otel/shared/useNodeBehavior.js +61 -0
  217. package/dist/nodes/otel/shared/useNodeBehavior.js.map +1 -0
  218. package/dist/pierre/PierreFileView.d.ts +17 -0
  219. package/dist/pierre/PierreFileView.d.ts.map +1 -0
  220. package/dist/pierre/PierreFileView.js +46 -0
  221. package/dist/pierre/PierreFileView.js.map +1 -0
  222. package/dist/pierre/PierreSnippetView.d.ts +28 -0
  223. package/dist/pierre/PierreSnippetView.d.ts.map +1 -0
  224. package/dist/pierre/PierreSnippetView.js +105 -0
  225. package/dist/pierre/PierreSnippetView.js.map +1 -0
  226. package/dist/pierre/PierreThroughlineCodeView.d.ts +22 -0
  227. package/dist/pierre/PierreThroughlineCodeView.d.ts.map +1 -0
  228. package/dist/pierre/PierreThroughlineCodeView.js +206 -0
  229. package/dist/pierre/PierreThroughlineCodeView.js.map +1 -0
  230. package/dist/pierre/constructColors.d.ts +24 -0
  231. package/dist/pierre/constructColors.d.ts.map +1 -0
  232. package/dist/pierre/constructColors.js +91 -0
  233. package/dist/pierre/constructColors.js.map +1 -0
  234. package/dist/pierre/index.d.ts +12 -0
  235. package/dist/pierre/index.d.ts.map +1 -0
  236. package/dist/pierre/index.js +7 -0
  237. package/dist/pierre/index.js.map +1 -0
  238. package/dist/pierre/pierreBackground.d.ts +15 -0
  239. package/dist/pierre/pierreBackground.d.ts.map +1 -0
  240. package/dist/pierre/pierreBackground.js +31 -0
  241. package/dist/pierre/pierreBackground.js.map +1 -0
  242. package/dist/pierre/pierreFileLang.d.ts +27 -0
  243. package/dist/pierre/pierreFileLang.d.ts.map +1 -0
  244. package/dist/pierre/pierreFileLang.js +52 -0
  245. package/dist/pierre/pierreFileLang.js.map +1 -0
  246. package/dist/pierre/pierreSyntaxTheme.d.ts +11 -0
  247. package/dist/pierre/pierreSyntaxTheme.d.ts.map +1 -0
  248. package/dist/pierre/pierreSyntaxTheme.js +20 -0
  249. package/dist/pierre/pierreSyntaxTheme.js.map +1 -0
  250. package/dist/pierre/scrollAnchor.d.ts +5 -0
  251. package/dist/pierre/scrollAnchor.d.ts.map +1 -0
  252. package/dist/pierre/scrollAnchor.js +9 -0
  253. package/dist/pierre/scrollAnchor.js.map +1 -0
  254. package/dist/pierre/sliceSnippet.d.ts +10 -0
  255. package/dist/pierre/sliceSnippet.d.ts.map +1 -0
  256. package/dist/pierre/sliceSnippet.js +16 -0
  257. package/dist/pierre/sliceSnippet.js.map +1 -0
  258. package/dist/pierre/syntaxTokens.d.ts +11 -0
  259. package/dist/pierre/syntaxTokens.d.ts.map +1 -0
  260. package/dist/pierre/syntaxTokens.js +51 -0
  261. package/dist/pierre/syntaxTokens.js.map +1 -0
  262. package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts +8 -0
  263. package/dist/stories/Subsystem/ComponentGraph/fixtures.d.ts.map +1 -0
  264. package/dist/stories/Subsystem/ComponentGraph/fixtures.js +116 -0
  265. package/dist/stories/Subsystem/ComponentGraph/fixtures.js.map +1 -0
  266. package/dist/subsystem/ComponentDeclaration.d.ts +87 -0
  267. package/dist/subsystem/ComponentDeclaration.d.ts.map +1 -0
  268. package/dist/subsystem/ComponentDeclaration.js +374 -0
  269. package/dist/subsystem/ComponentDeclaration.js.map +1 -0
  270. package/dist/subsystem/FileDrawer.d.ts +17 -0
  271. package/dist/subsystem/FileDrawer.d.ts.map +1 -0
  272. package/dist/subsystem/FileDrawer.js +72 -0
  273. package/dist/subsystem/FileDrawer.js.map +1 -0
  274. package/dist/subsystem/GraphLayoutCover.d.ts +20 -0
  275. package/dist/subsystem/GraphLayoutCover.d.ts.map +1 -0
  276. package/dist/subsystem/GraphLayoutCover.js +42 -0
  277. package/dist/subsystem/GraphLayoutCover.js.map +1 -0
  278. package/dist/subsystem/SubsystemComponentGraph.d.ts +96 -0
  279. package/dist/subsystem/SubsystemComponentGraph.d.ts.map +1 -0
  280. package/dist/subsystem/SubsystemComponentGraph.js +1059 -0
  281. package/dist/subsystem/SubsystemComponentGraph.js.map +1 -0
  282. package/dist/subsystem/SubsystemFileTree.d.ts +24 -0
  283. package/dist/subsystem/SubsystemFileTree.d.ts.map +1 -0
  284. package/dist/subsystem/SubsystemFileTree.js +150 -0
  285. package/dist/subsystem/SubsystemFileTree.js.map +1 -0
  286. package/dist/subsystem/declarationRef.d.ts +39 -0
  287. package/dist/subsystem/declarationRef.d.ts.map +1 -0
  288. package/dist/subsystem/declarationRef.js +32 -0
  289. package/dist/subsystem/declarationRef.js.map +1 -0
  290. package/dist/subsystem/formatDeclaration.d.ts +11 -0
  291. package/dist/subsystem/formatDeclaration.d.ts.map +1 -0
  292. package/dist/subsystem/formatDeclaration.js +146 -0
  293. package/dist/subsystem/formatDeclaration.js.map +1 -0
  294. package/dist/subsystem/model.d.ts +353 -0
  295. package/dist/subsystem/model.d.ts.map +1 -0
  296. package/dist/subsystem/model.js +503 -0
  297. package/dist/subsystem/model.js.map +1 -0
  298. package/dist/subsystem/nodes.d.ts +69 -0
  299. package/dist/subsystem/nodes.d.ts.map +1 -0
  300. package/dist/subsystem/nodes.js +289 -0
  301. package/dist/subsystem/nodes.js.map +1 -0
  302. package/dist/subsystem/paths.d.ts +63 -0
  303. package/dist/subsystem/paths.d.ts.map +1 -0
  304. package/dist/subsystem/paths.js +86 -0
  305. package/dist/subsystem/paths.js.map +1 -0
  306. package/dist/subsystem/tokenizeComponent.d.ts +20 -0
  307. package/dist/subsystem/tokenizeComponent.d.ts.map +1 -0
  308. package/dist/subsystem/tokenizeComponent.js +56 -0
  309. package/dist/subsystem/tokenizeComponent.js.map +1 -0
  310. package/dist/subsystem/tokenizeFormatted.d.ts +12 -0
  311. package/dist/subsystem/tokenizeFormatted.d.ts.map +1 -0
  312. package/dist/subsystem/tokenizeFormatted.js +13 -0
  313. package/dist/subsystem/tokenizeFormatted.js.map +1 -0
  314. package/dist/utils/animationMapping.d.ts +53 -0
  315. package/dist/utils/animationMapping.d.ts.map +1 -0
  316. package/dist/utils/animationMapping.js +126 -0
  317. package/dist/utils/animationMapping.js.map +1 -0
  318. package/dist/utils/canvasBounds.d.ts +50 -0
  319. package/dist/utils/canvasBounds.d.ts.map +1 -0
  320. package/dist/utils/canvasBounds.js +88 -0
  321. package/dist/utils/canvasBounds.js.map +1 -0
  322. package/dist/utils/elkLayout.d.ts +137 -0
  323. package/dist/utils/elkLayout.d.ts.map +1 -0
  324. package/dist/utils/elkLayout.js +596 -0
  325. package/dist/utils/elkLayout.js.map +1 -0
  326. package/dist/utils/graphConverter.d.ts +18 -0
  327. package/dist/utils/graphConverter.d.ts.map +1 -0
  328. package/dist/utils/graphConverter.js +114 -0
  329. package/dist/utils/graphConverter.js.map +1 -0
  330. package/dist/utils/iconResolver.d.ts +29 -0
  331. package/dist/utils/iconResolver.d.ts.map +1 -0
  332. package/dist/utils/iconResolver.js +30 -0
  333. package/dist/utils/iconResolver.js.map +1 -0
  334. package/dist/utils/orientationUtils.d.ts +19 -0
  335. package/dist/utils/orientationUtils.d.ts.map +1 -0
  336. package/dist/utils/orientationUtils.js +62 -0
  337. package/dist/utils/orientationUtils.js.map +1 -0
  338. package/package.json +80 -0
  339. package/src/components/ConfigurationSelector.tsx +133 -0
  340. package/src/components/GraphRenderer.tsx +3195 -0
  341. package/src/components/MultiCanvasRenderer.tsx +295 -0
  342. package/src/components/NodeTooltip.tsx +279 -0
  343. package/src/components/PendingChanges.test.tsx +375 -0
  344. package/src/components/SelectionSidebar.tsx +352 -0
  345. package/src/components/SequenceDiagramRenderer.tsx +1156 -0
  346. package/src/components/WorkflowSequenceDiagram.tsx +270 -0
  347. package/src/components/dashboard/DashboardRenderer.tsx +317 -0
  348. package/src/components/dashboard/MetricPanel.tsx +254 -0
  349. package/src/components/dashboard/MockDataProvider.ts +330 -0
  350. package/src/components/dashboard/components/BarChart.tsx +299 -0
  351. package/src/components/dashboard/components/LineChart.tsx +279 -0
  352. package/src/components/dashboard/components/MetricCard.tsx +270 -0
  353. package/src/components/dashboard/components/SourceLink.tsx +63 -0
  354. package/src/components/dashboard/components/TimeRangeSelector.tsx +280 -0
  355. package/src/components/dashboard/components/index.ts +5 -0
  356. package/src/components/dashboard/index.ts +47 -0
  357. package/src/components/dashboard/types.ts +126 -0
  358. package/src/components/session-events/SessionEventFeed.tsx +1797 -0
  359. package/src/components/session-events/index.ts +13 -0
  360. package/src/components/state-view/PipelineView.tsx +347 -0
  361. package/src/components/state-view/index.ts +14 -0
  362. package/src/components/state-view/types.ts +261 -0
  363. package/src/components/state-view/useStateView.ts +205 -0
  364. package/src/contexts/GraphEditContext.tsx +27 -0
  365. package/src/contexts/TooltipPortalContext.ts +8 -0
  366. package/src/edges/CustomEdge.tsx +402 -0
  367. package/src/edges/GenericEdge.tsx +36 -0
  368. package/src/graphify/anchor.test.ts +124 -0
  369. package/src/graphify/anchor.ts +160 -0
  370. package/src/graphify/consolidated.ts +246 -0
  371. package/src/graphify/ids.ts +48 -0
  372. package/src/graphify/index.ts +72 -0
  373. package/src/graphify/kind.test.ts +108 -0
  374. package/src/graphify/kind.ts +120 -0
  375. package/src/graphify/resolve.test.ts +89 -0
  376. package/src/graphify/resolve.ts +115 -0
  377. package/src/graphify/signature.test.ts +278 -0
  378. package/src/graphify/signature.ts +354 -0
  379. package/src/graphify/types.ts +164 -0
  380. package/src/hooks/useElkLayout.test.ts +134 -0
  381. package/src/hooks/useElkLayout.ts +191 -0
  382. package/src/hooks/usePathBasedEvents.ts +192 -0
  383. package/src/hooks/useSequenceLayout.ts +543 -0
  384. package/src/hooks/useUndoRedo.ts +144 -0
  385. package/src/index.ts +341 -0
  386. package/src/nodes/CustomNode.tsx +1231 -0
  387. package/src/nodes/GenericNode.tsx +55 -0
  388. package/src/nodes/otel/OtelBoundaryNode.tsx +224 -0
  389. package/src/nodes/otel/OtelEventNode.tsx +225 -0
  390. package/src/nodes/otel/OtelResourceNode.tsx +251 -0
  391. package/src/nodes/otel/OtelScopeNode.tsx +221 -0
  392. package/src/nodes/otel/OtelSpanConventionNode.tsx +295 -0
  393. package/src/nodes/otel/index.ts +23 -0
  394. package/src/nodes/otel/shared/NodeBadges.tsx +295 -0
  395. package/src/nodes/otel/shared/NodeContent.tsx +204 -0
  396. package/src/nodes/otel/shared/index.ts +8 -0
  397. package/src/nodes/otel/shared/types.ts +138 -0
  398. package/src/nodes/otel/shared/useNodeBehavior.ts +114 -0
  399. package/src/pierre/PierreFileView.tsx +81 -0
  400. package/src/pierre/PierreSnippetView.tsx +184 -0
  401. package/src/pierre/PierreThroughlineCodeView.tsx +304 -0
  402. package/src/pierre/constructColors.test.ts +52 -0
  403. package/src/pierre/constructColors.ts +112 -0
  404. package/src/pierre/index.ts +18 -0
  405. package/src/pierre/pierreBackground.ts +33 -0
  406. package/src/pierre/pierreFileLang.test.ts +26 -0
  407. package/src/pierre/pierreFileLang.ts +55 -0
  408. package/src/pierre/pierreSyntaxTheme.ts +23 -0
  409. package/src/pierre/scrollAnchor.test.ts +13 -0
  410. package/src/pierre/scrollAnchor.ts +11 -0
  411. package/src/pierre/sliceSnippet.test.ts +21 -0
  412. package/src/pierre/sliceSnippet.ts +31 -0
  413. package/src/pierre/syntaxTokens.test.ts +35 -0
  414. package/src/pierre/syntaxTokens.ts +60 -0
  415. package/src/stories/Audit/BoundaryNodes.stories.tsx +385 -0
  416. package/src/stories/Audit/CanvasEdgeTypes.stories.tsx +1448 -0
  417. package/src/stories/Audit/CanvasNodeTypes.stories.tsx +1049 -0
  418. package/src/stories/Audit/ColorPriority.stories.tsx +895 -0
  419. package/src/stories/Audit/DiamondBadges.stories.tsx +629 -0
  420. package/src/stories/Audit/NodeDimensionsTesting.stories.tsx +724 -0
  421. package/src/stories/Audit/NodeFieldsAudit.stories.tsx +996 -0
  422. package/src/stories/Audit/NodeFontSizeTesting.stories.tsx +715 -0
  423. package/src/stories/Audit/NodeShapes.stories.tsx +1208 -0
  424. package/src/stories/Audit/WideNodesTesting.stories.tsx +1045 -0
  425. package/src/stories/Components/DashboardRenderer.stories.tsx +263 -0
  426. package/src/stories/Components/GraphRenderer.stories.tsx +3236 -0
  427. package/src/stories/Components/MultiCanvasRenderer.stories.tsx +370 -0
  428. package/src/stories/Components/SequenceDiagram.stories.tsx +255 -0
  429. package/src/stories/Components/StateView.stories.tsx +417 -0
  430. package/src/stories/Components/TraceViewer.stories.tsx +442 -0
  431. package/src/stories/Components/WorkflowSequenceDiagram.stories.tsx +802 -0
  432. package/src/stories/Features/AnimationWorkshop.stories.tsx +727 -0
  433. package/src/stories/Features/ChangeTypeVisual.stories.tsx +67 -0
  434. package/src/stories/Features/EventDrivenAnimations.stories.tsx +513 -0
  435. package/src/stories/Features/MultiConfig.stories.tsx +539 -0
  436. package/src/stories/Introduction.mdx +34 -0
  437. package/src/stories/Layout/ElkEdgeRouting.stories.tsx +539 -0
  438. package/src/stories/Layout/GraphOrientation.stories.tsx +500 -0
  439. package/src/stories/Layout/MultiDirectionalConnections.stories.tsx +352 -0
  440. package/src/stories/Nodes/NodeDefinitionComparison.stories.tsx +560 -0
  441. package/src/stories/Nodes/NodeNameFallbacks.stories.tsx +491 -0
  442. package/src/stories/Nodes/NumericColors.stories.tsx +440 -0
  443. package/src/stories/OTEL/EventNameDisplay.stories.tsx +694 -0
  444. package/src/stories/OTEL/EventNameFallback.stories.tsx +578 -0
  445. package/src/stories/OTEL/OtelComponents.stories.tsx +422 -0
  446. package/src/stories/OTEL/OtelNodeTypesPrototype.stories.tsx +806 -0
  447. package/src/stories/OTEL/RawEventCards.stories.tsx +57 -0
  448. package/src/stories/OTEL/SpanBadges.stories.tsx +840 -0
  449. package/src/stories/OTEL/ValidationEventsCanvas.stories.tsx +209 -0
  450. package/src/stories/Pierre/CodeView.stories.tsx +219 -0
  451. package/src/stories/RealWorld/BacklogMdCanvases.stories.tsx +721 -0
  452. package/src/stories/RealWorld/FileCitySequence.stories.tsx +516 -0
  453. package/src/stories/RealWorld/RealCanvasFiles.stories.tsx +336 -0
  454. package/src/stories/Subsystem/ComponentDeclarationAudit.stories.tsx +321 -0
  455. package/src/stories/Subsystem/ComponentGraph/Appearance.stories.tsx +365 -0
  456. package/src/stories/Subsystem/ComponentGraph/Basics.stories.tsx +137 -0
  457. package/src/stories/Subsystem/ComponentGraph/Captures.stories.tsx +238 -0
  458. package/src/stories/Subsystem/ComponentGraph/DetailPanel.stories.tsx +315 -0
  459. package/src/stories/Subsystem/ComponentGraph/Flows.stories.tsx +239 -0
  460. package/src/stories/Subsystem/ComponentGraph/FrameworkStereotype.stories.tsx +216 -0
  461. package/src/stories/Subsystem/ComponentGraph/GraphTitle.stories.tsx +70 -0
  462. package/src/stories/Subsystem/ComponentGraph/Processes.stories.tsx +68 -0
  463. package/src/stories/Subsystem/ComponentGraph/Scenarios.stories.tsx +959 -0
  464. package/src/stories/Subsystem/ComponentGraph/Spotlights.stories.tsx +681 -0
  465. package/src/stories/Subsystem/ComponentGraph/fixtures.ts +129 -0
  466. package/src/stories/__traces__/test-run.canvas.json +241 -0
  467. package/src/stories/data/activity-feed-analytics.dashboard.json +300 -0
  468. package/src/stories/data/file-city-images-transformed.otel.canvas.json +295 -0
  469. package/src/stories/data/file-city-workflows.json +269 -0
  470. package/src/stories/data/graph-converter-test-execution.json +443 -0
  471. package/src/stories/data/graph-converter-test.workflow.json +105 -0
  472. package/src/stories/data/graph-converter-validated-execution.json +58 -0
  473. package/src/stories/data/opencode-session-raw-events.json +273396 -0
  474. package/src/subsystem/ComponentDeclaration.tsx +643 -0
  475. package/src/subsystem/FileDrawer.tsx +106 -0
  476. package/src/subsystem/GraphLayoutCover.tsx +69 -0
  477. package/src/subsystem/SubsystemComponentGraph.tsx +1644 -0
  478. package/src/subsystem/SubsystemFileTree.tsx +190 -0
  479. package/src/subsystem/declarationRef.test.ts +33 -0
  480. package/src/subsystem/declarationRef.ts +63 -0
  481. package/src/subsystem/formatDeclaration.ts +174 -0
  482. package/src/subsystem/model.test.ts +244 -0
  483. package/src/subsystem/model.ts +850 -0
  484. package/src/subsystem/nodes.test.ts +56 -0
  485. package/src/subsystem/nodes.tsx +443 -0
  486. package/src/subsystem/paths.test.ts +123 -0
  487. package/src/subsystem/paths.ts +127 -0
  488. package/src/subsystem/tokenizeComponent.ts +70 -0
  489. package/src/subsystem/tokenizeFormatted.ts +19 -0
  490. package/src/utils/animationMapping.ts +166 -0
  491. package/src/utils/canvasBounds.ts +146 -0
  492. package/src/utils/elkLayout.test.ts +240 -0
  493. package/src/utils/elkLayout.ts +779 -0
  494. package/src/utils/graphConverter.ts +148 -0
  495. package/src/utils/iconResolver.tsx +53 -0
  496. package/src/utils/orientationUtils.ts +73 -0
@@ -0,0 +1,629 @@
1
+ import React from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import { GraphRenderer } from '../../components/GraphRenderer';
4
+ import type { ExtendedCanvas } from '@principal-ai/subsystems-core';
5
+ import { ThemeProvider, defaultEditorTheme } from '@principal-ade/industry-theme';
6
+
7
+ const meta = {
8
+ title: 'Audit/DiamondBadges',
9
+ component: GraphRenderer,
10
+ parameters: {
11
+ layout: 'centered',
12
+ },
13
+ tags: ['autodocs'],
14
+ decorators: [
15
+ (Story) => (
16
+ <ThemeProvider theme={defaultEditorTheme}>
17
+ <Story />
18
+ </ThemeProvider>
19
+ ),
20
+ ],
21
+ } satisfies Meta<typeof GraphRenderer>;
22
+
23
+ export default meta;
24
+ type Story = StoryObj<typeof meta>;
25
+
26
+ /**
27
+ * Canvas showing diamond badge positioning at diamond corners
28
+ */
29
+ const diamondBadgesCanvas: ExtendedCanvas = {
30
+ nodes: [
31
+ // Diamond with status badge (top point)
32
+ {
33
+ id: 'diamond-status',
34
+ type: 'text',
35
+ x: 100,
36
+ y: 100,
37
+ width: 100,
38
+ height: 100,
39
+ text: 'Status',
40
+ color: 2, // orange
41
+ pv: {
42
+ nodeType: 'decision',
43
+ shape: 'diamond',
44
+ icon: 'GitBranch',
45
+ status: 'draft',
46
+ },
47
+ },
48
+ // Diamond with sources badge (right point)
49
+ {
50
+ id: 'diamond-sources',
51
+ type: 'text',
52
+ x: 280,
53
+ y: 100,
54
+ width: 100,
55
+ height: 100,
56
+ text: 'Sources',
57
+ color: 4, // green
58
+ pv: {
59
+ nodeType: 'decision',
60
+ shape: 'diamond',
61
+ icon: 'FileCode',
62
+ sources: ['src/decisions/router.ts'],
63
+ },
64
+ },
65
+ // Diamond with boundary outbound badge (right point)
66
+ {
67
+ id: 'diamond-boundary-out',
68
+ type: 'text',
69
+ x: 460,
70
+ y: 100,
71
+ width: 100,
72
+ height: 100,
73
+ text: 'Out',
74
+ color: 5, // cyan
75
+ pv: {
76
+ nodeType: 'boundary',
77
+ shape: 'diamond',
78
+ icon: 'ArrowUpRight',
79
+ boundary: {
80
+ direction: 'outbound',
81
+ node: { 'pv.event.name': 'external.call' },
82
+ },
83
+ },
84
+ },
85
+ // Diamond with boundary inbound badge (left point)
86
+ {
87
+ id: 'diamond-boundary-in',
88
+ type: 'text',
89
+ x: 640,
90
+ y: 100,
91
+ width: 100,
92
+ height: 100,
93
+ text: 'In',
94
+ color: 5, // cyan
95
+ pv: {
96
+ nodeType: 'boundary',
97
+ shape: 'diamond',
98
+ icon: 'ArrowDownLeft',
99
+ boundary: {
100
+ direction: 'inbound',
101
+ node: { 'pv.event.name': 'webhook.received' },
102
+ },
103
+ },
104
+ },
105
+ // Diamond with both status and sources badges
106
+ {
107
+ id: 'diamond-both',
108
+ type: 'text',
109
+ x: 100,
110
+ y: 280,
111
+ width: 100,
112
+ height: 100,
113
+ text: 'Both',
114
+ color: 6, // purple
115
+ pv: {
116
+ nodeType: 'decision',
117
+ shape: 'diamond',
118
+ icon: 'Layers',
119
+ status: 'approved',
120
+ sources: ['src/core/decision.ts'],
121
+ },
122
+ },
123
+ // Larger diamond with badges
124
+ {
125
+ id: 'diamond-large',
126
+ type: 'text',
127
+ x: 280,
128
+ y: 250,
129
+ width: 150,
130
+ height: 150,
131
+ text: 'Large',
132
+ color: 2,
133
+ pv: {
134
+ nodeType: 'decision',
135
+ shape: 'diamond',
136
+ icon: 'Maximize',
137
+ status: 'implemented',
138
+ sources: ['src/large.ts'],
139
+ },
140
+ },
141
+ // Small diamond with badges
142
+ {
143
+ id: 'diamond-small',
144
+ type: 'text',
145
+ x: 500,
146
+ y: 290,
147
+ width: 70,
148
+ height: 70,
149
+ text: 'S',
150
+ color: 4,
151
+ pv: {
152
+ nodeType: 'decision',
153
+ shape: 'diamond',
154
+ icon: 'Minimize',
155
+ status: 'draft',
156
+ sources: ['src/small.ts'],
157
+ },
158
+ },
159
+ ],
160
+ edges: [],
161
+ pv: {
162
+ version: '1.0.0',
163
+ name: 'Diamond Badge Positioning',
164
+ description: 'Demonstrates badge placement at diamond corners',
165
+ edgeTypes: {},
166
+ },
167
+ };
168
+
169
+ export const BadgePositioning: Story = {
170
+ args: {
171
+ canvas: diamondBadgesCanvas,
172
+ width: 850,
173
+ height: 500,
174
+ },
175
+ parameters: {
176
+ docs: {
177
+ description: {
178
+ story: `
179
+ **Diamond Badge Positioning**
180
+
181
+ Badges on diamond shapes are positioned at the actual diamond corners (points), not at the rectangular bounding box corners:
182
+
183
+ - **Status badge** (D/A/I): Positioned at the **LEFT point** of the diamond
184
+ - **Sources badge** (S): Positioned at the **RIGHT point** of the diamond
185
+ - **Boundary outbound** (↗): Positioned at the **RIGHT point**
186
+ - **Boundary inbound** (↙): Positioned at the **LEFT point**
187
+
188
+ This ensures badges sit directly on the visible shape rather than floating in empty space.
189
+
190
+ **Row 1**: Individual badge types
191
+ **Row 2**: Combined badges and size variations
192
+ `,
193
+ },
194
+ },
195
+ },
196
+ };
197
+
198
+ /**
199
+ * Compare badge positioning across all shapes
200
+ */
201
+ const shapeComparisonCanvas: ExtendedCanvas = {
202
+ nodes: [
203
+ // Rectangle with badges
204
+ {
205
+ id: 'rect-badges',
206
+ type: 'text',
207
+ x: 100,
208
+ y: 100,
209
+ width: 120,
210
+ height: 80,
211
+ text: 'Rectangle',
212
+ color: 6,
213
+ pv: {
214
+ nodeType: 'event',
215
+ shape: 'rectangle',
216
+ icon: 'Square',
217
+ status: 'draft',
218
+ sources: ['src/rect.ts'],
219
+ },
220
+ },
221
+ // Circle with badges
222
+ {
223
+ id: 'circle-badges',
224
+ type: 'text',
225
+ x: 280,
226
+ y: 100,
227
+ width: 100,
228
+ height: 100,
229
+ text: 'Circle',
230
+ color: 5,
231
+ pv: {
232
+ nodeType: 'event',
233
+ shape: 'circle',
234
+ icon: 'Circle',
235
+ status: 'approved',
236
+ sources: ['src/circle.ts'],
237
+ },
238
+ },
239
+ // Hexagon with badges
240
+ {
241
+ id: 'hex-badges',
242
+ type: 'text',
243
+ x: 440,
244
+ y: 100,
245
+ width: 120,
246
+ height: 100,
247
+ text: 'Hexagon',
248
+ color: 4,
249
+ pv: {
250
+ nodeType: 'event',
251
+ shape: 'hexagon',
252
+ icon: 'Hexagon',
253
+ status: 'implemented',
254
+ sources: ['src/hex.ts'],
255
+ },
256
+ },
257
+ // Diamond with badges
258
+ {
259
+ id: 'diamond-badges',
260
+ type: 'text',
261
+ x: 620,
262
+ y: 100,
263
+ width: 100,
264
+ height: 100,
265
+ text: 'Diamond',
266
+ color: 2,
267
+ pv: {
268
+ nodeType: 'event',
269
+ shape: 'diamond',
270
+ icon: 'Diamond',
271
+ status: 'draft',
272
+ sources: ['src/diamond.ts'],
273
+ },
274
+ },
275
+ ],
276
+ edges: [],
277
+ pv: {
278
+ version: '1.0.0',
279
+ name: 'Shape Badge Comparison',
280
+ description: 'Compare badge positioning across all shapes',
281
+ edgeTypes: {},
282
+ },
283
+ };
284
+
285
+ export const ShapeComparison: Story = {
286
+ args: {
287
+ canvas: shapeComparisonCanvas,
288
+ width: 850,
289
+ height: 300,
290
+ },
291
+ parameters: {
292
+ docs: {
293
+ description: {
294
+ story: `
295
+ **Badge Positioning Across Shapes**
296
+
297
+ Compare how badges are positioned on different shapes:
298
+
299
+ - **Rectangle**: Badges at top-left and top-right corners of the bounding box
300
+ - **Circle**: Badges at top-left and top-right corners of the bounding box
301
+ - **Hexagon**: Badges at top-left and top-right corners of the bounding box
302
+ - **Diamond**: Badges at the LEFT point (status) and RIGHT point (sources) of the diamond shape
303
+
304
+ The diamond positioning ensures badges appear on the visible shape rather than floating in the empty corners of the bounding box.
305
+ `,
306
+ },
307
+ },
308
+ },
309
+ };
310
+
311
+ /**
312
+ * Diamond boundary nodes in workflow
313
+ */
314
+ const diamondWorkflowCanvas: ExtendedCanvas = {
315
+ nodes: [
316
+ {
317
+ id: 'start',
318
+ type: 'text',
319
+ x: 100,
320
+ y: 150,
321
+ width: 100,
322
+ height: 60,
323
+ text: 'Request',
324
+ color: 4,
325
+ pv: {
326
+ nodeType: 'event',
327
+ shape: 'rectangle',
328
+ icon: 'Play',
329
+ },
330
+ },
331
+ {
332
+ id: 'decision',
333
+ type: 'text',
334
+ x: 280,
335
+ y: 130,
336
+ width: 100,
337
+ height: 100,
338
+ text: 'Route?',
339
+ color: 2,
340
+ pv: {
341
+ nodeType: 'decision',
342
+ shape: 'diamond',
343
+ icon: 'GitBranch',
344
+ status: 'implemented',
345
+ },
346
+ },
347
+ {
348
+ id: 'external-call',
349
+ type: 'text',
350
+ x: 460,
351
+ y: 50,
352
+ width: 100,
353
+ height: 100,
354
+ text: 'API',
355
+ color: 5,
356
+ pv: {
357
+ nodeType: 'boundary',
358
+ shape: 'diamond',
359
+ icon: 'Cloud',
360
+ boundary: {
361
+ direction: 'outbound',
362
+ node: { 'pv.event.name': 'api.call' },
363
+ },
364
+ },
365
+ },
366
+ {
367
+ id: 'internal',
368
+ type: 'text',
369
+ x: 460,
370
+ y: 200,
371
+ width: 100,
372
+ height: 60,
373
+ text: 'Cache',
374
+ color: 4,
375
+ pv: {
376
+ nodeType: 'event',
377
+ shape: 'rectangle',
378
+ icon: 'Database',
379
+ sources: ['src/cache.ts'],
380
+ },
381
+ },
382
+ {
383
+ id: 'end',
384
+ type: 'text',
385
+ x: 640,
386
+ y: 130,
387
+ width: 100,
388
+ height: 100,
389
+ text: 'Done',
390
+ color: 4,
391
+ pv: {
392
+ nodeType: 'decision',
393
+ shape: 'diamond',
394
+ icon: 'CheckCircle',
395
+ status: 'approved',
396
+ },
397
+ },
398
+ ],
399
+ edges: [
400
+ { id: 'e1', fromNode: 'start', toNode: 'decision', fromSide: 'right', toSide: 'left' },
401
+ { id: 'e2', fromNode: 'decision', toNode: 'external-call', fromSide: 'top', toSide: 'left' },
402
+ { id: 'e3', fromNode: 'decision', toNode: 'internal', fromSide: 'bottom', toSide: 'left' },
403
+ { id: 'e4', fromNode: 'external-call', toNode: 'end', fromSide: 'right', toSide: 'top' },
404
+ { id: 'e5', fromNode: 'internal', toNode: 'end', fromSide: 'right', toSide: 'bottom' },
405
+ ],
406
+ pv: {
407
+ version: '1.0.0',
408
+ name: 'Diamond Workflow',
409
+ description: 'Workflow with diamond decision and boundary nodes',
410
+ edgeTypes: {
411
+ default: {
412
+ style: 'solid',
413
+ color: '#888',
414
+ directed: true,
415
+ },
416
+ },
417
+ },
418
+ };
419
+
420
+ export const WorkflowWithDiamonds: Story = {
421
+ args: {
422
+ canvas: diamondWorkflowCanvas,
423
+ width: 850,
424
+ height: 400,
425
+ },
426
+ parameters: {
427
+ docs: {
428
+ description: {
429
+ story: `
430
+ **Diamond Nodes in Workflow Context**
431
+
432
+ Shows diamond-shaped decision and boundary nodes in a realistic workflow:
433
+
434
+ 1. **Request** starts the flow
435
+ 2. **Route?** diamond decision point with status badge at left point
436
+ 3. **API** diamond boundary node with outbound badge at right point
437
+ 4. **Cache** rectangle for internal operation
438
+ 5. **Done** diamond with status badge at left point
439
+
440
+ The badges on diamond nodes are positioned at the actual points of the diamond shape.
441
+ `,
442
+ },
443
+ },
444
+ },
445
+ };
446
+
447
+ /**
448
+ * Canvas demonstrating the new files (S) and references (R) badges
449
+ */
450
+ const filesAndReferencesCanvas: ExtendedCanvas = {
451
+ nodes: [
452
+ // Node with otel.files only (S badge)
453
+ {
454
+ id: 'files-only',
455
+ type: 'text',
456
+ x: 100,
457
+ y: 100,
458
+ width: 140,
459
+ height: 80,
460
+ text: 'Files Only',
461
+ color: 4, // green
462
+ pv: {
463
+ nodeType: 'event',
464
+ shape: 'rectangle',
465
+ icon: 'FileCode',
466
+ otel: {
467
+ kind: 'type',
468
+ files: ['src/auth/login.ts', 'src/auth/logout.ts'],
469
+ },
470
+ },
471
+ },
472
+ // Node with references only (R badge)
473
+ {
474
+ id: 'refs-only',
475
+ type: 'text',
476
+ x: 300,
477
+ y: 100,
478
+ width: 140,
479
+ height: 80,
480
+ text: 'Refs Only',
481
+ color: 6, // purple
482
+ pv: {
483
+ nodeType: 'event',
484
+ shape: 'rectangle',
485
+ icon: 'ExternalLink',
486
+ references: ['@opentelemetry/api', 'https://opentelemetry.io/docs'],
487
+ },
488
+ },
489
+ // Node with both files and references (S + R badges)
490
+ {
491
+ id: 'both-badges',
492
+ type: 'text',
493
+ x: 500,
494
+ y: 100,
495
+ width: 140,
496
+ height: 80,
497
+ text: 'Both Badges',
498
+ color: 2, // orange
499
+ pv: {
500
+ nodeType: 'event',
501
+ shape: 'rectangle',
502
+ icon: 'Layers',
503
+ otel: {
504
+ kind: 'service',
505
+ files: ['src/api/handler.ts'],
506
+ },
507
+ references: ['@principal-ai/core'],
508
+ },
509
+ },
510
+ // Diamond with files
511
+ {
512
+ id: 'diamond-files',
513
+ type: 'text',
514
+ x: 100,
515
+ y: 250,
516
+ width: 100,
517
+ height: 100,
518
+ text: 'Files',
519
+ color: 4,
520
+ pv: {
521
+ nodeType: 'decision',
522
+ shape: 'diamond',
523
+ icon: 'FileCode',
524
+ otel: {
525
+ kind: 'type',
526
+ files: ['src/router.ts'],
527
+ },
528
+ },
529
+ },
530
+ // Diamond with references
531
+ {
532
+ id: 'diamond-refs',
533
+ type: 'text',
534
+ x: 280,
535
+ y: 250,
536
+ width: 100,
537
+ height: 100,
538
+ text: 'Refs',
539
+ color: 6,
540
+ pv: {
541
+ nodeType: 'decision',
542
+ shape: 'diamond',
543
+ icon: 'ExternalLink',
544
+ references: ['https://docs.example.com'],
545
+ },
546
+ },
547
+ // Diamond with both
548
+ {
549
+ id: 'diamond-both',
550
+ type: 'text',
551
+ x: 460,
552
+ y: 250,
553
+ width: 100,
554
+ height: 100,
555
+ text: 'Both',
556
+ color: 2,
557
+ pv: {
558
+ nodeType: 'decision',
559
+ shape: 'diamond',
560
+ icon: 'Layers',
561
+ otel: {
562
+ kind: 'instance',
563
+ files: ['src/decision.ts'],
564
+ },
565
+ references: ['@some/package'],
566
+ },
567
+ },
568
+ // Circle with both badges
569
+ {
570
+ id: 'circle-both',
571
+ type: 'text',
572
+ x: 640,
573
+ y: 250,
574
+ width: 100,
575
+ height: 100,
576
+ text: 'Circle',
577
+ color: 5,
578
+ pv: {
579
+ nodeType: 'event',
580
+ shape: 'circle',
581
+ icon: 'Circle',
582
+ otel: {
583
+ kind: 'service',
584
+ files: ['src/service.ts'],
585
+ },
586
+ references: ['https://api.docs.com'],
587
+ },
588
+ },
589
+ ],
590
+ edges: [],
591
+ pv: {
592
+ version: '1.0.0',
593
+ name: 'Files and References Badges',
594
+ description: 'Demonstrates otel.files (S) and references (R) badges',
595
+ edgeTypes: {},
596
+ },
597
+ };
598
+
599
+ export const FilesAndReferences: Story = {
600
+ args: {
601
+ canvas: filesAndReferencesCanvas,
602
+ width: 850,
603
+ height: 450,
604
+ },
605
+ parameters: {
606
+ docs: {
607
+ description: {
608
+ story: `
609
+ **Files (S) and References (R) Badges**
610
+
611
+ Two types of badges indicate different metadata:
612
+
613
+ - **S badge** (green): Shows source files where the event is instrumented (\`pv.otel.files\`)
614
+ - **R badge** (purple): Shows external references like packages or documentation (\`pv.references\`)
615
+
616
+ **Row 1 - Rectangles:**
617
+ - Files Only: Has \`otel.files\` → shows S badge
618
+ - Refs Only: Has \`references\` → shows R badge
619
+ - Both Badges: Has both → shows S and R badges side by side
620
+
621
+ **Row 2 - Other Shapes:**
622
+ - Diamond, Circle shapes with various badge combinations
623
+
624
+ Hover over nodes to see the full file paths and reference URLs in the tooltip.
625
+ `,
626
+ },
627
+ },
628
+ },
629
+ };