@mastra/playground-ui 60.0.0 → 60.1.0-alpha.1

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 (929) hide show
  1. package/README.md +7 -6
  2. package/dist/{Badge-H8K5WrXg.cjs → Badge-D3EctKQo.cjs} +16 -8
  3. package/dist/Badge-D3EctKQo.cjs.map +1 -0
  4. package/dist/{Badge-Q_pCeeGW.js → Badge-DmOqFpXW.js} +16 -8
  5. package/dist/Badge-DmOqFpXW.js.map +1 -0
  6. package/dist/{Button-BnmR2HRc.cjs → Button-CXhSUBxN.cjs} +3 -3
  7. package/dist/Button-CXhSUBxN.cjs.map +1 -0
  8. package/dist/{Button-C6eUqcPI.js → Button-D43ghVKt.js} +3 -3
  9. package/dist/Button-D43ghVKt.js.map +1 -0
  10. package/dist/{EmptyState-CJ5KC4Db.cjs → EmptyState-CuoMGNP0.cjs} +2 -2
  11. package/dist/EmptyState-CuoMGNP0.cjs.map +1 -0
  12. package/dist/{EmptyState-CynkaZd1.js → EmptyState-DyyUFpzY.js} +2 -2
  13. package/dist/EmptyState-DyyUFpzY.js.map +1 -0
  14. package/dist/{ErrorBoundary-Bb2R5IMR.js → ErrorBoundary-BvwJY6s9.js} +2 -2
  15. package/dist/{ErrorBoundary-Bb2R5IMR.js.map → ErrorBoundary-BvwJY6s9.js.map} +1 -1
  16. package/dist/{ErrorBoundary-CKrwONAU.cjs → ErrorBoundary-D7eIMbMr.cjs} +2 -2
  17. package/dist/{ErrorBoundary-CKrwONAU.cjs.map → ErrorBoundary-D7eIMbMr.cjs.map} +1 -1
  18. package/dist/{Notice-Ce3r5x-7.js → Notice-B8RIClJD.js} +2 -2
  19. package/dist/{Notice-Ce3r5x-7.js.map → Notice-B8RIClJD.js.map} +1 -1
  20. package/dist/{Notice-CEBwitdf.cjs → Notice-C4Tgmtgb.cjs} +2 -2
  21. package/dist/{Notice-CEBwitdf.cjs.map → Notice-C4Tgmtgb.cjs.map} +1 -1
  22. package/dist/{activity-Duth8KP_.js → activity-BoXbE4Kz.js} +3 -3
  23. package/dist/activity-BoXbE4Kz.js.map +1 -0
  24. package/dist/{activity-8egTNbaI.cjs → activity-CbQG59Oc.cjs} +3 -3
  25. package/dist/activity-CbQG59Oc.cjs.map +1 -0
  26. package/dist/{alert-dialog-D1UYVW__.js → alert-dialog-CzRo39mH.js} +3 -3
  27. package/dist/{alert-dialog-D1UYVW__.js.map → alert-dialog-CzRo39mH.js.map} +1 -1
  28. package/dist/{alert-dialog-BcOSIOSW.cjs → alert-dialog-DC-Fapxf.cjs} +3 -3
  29. package/dist/{alert-dialog-BcOSIOSW.cjs.map → alert-dialog-DC-Fapxf.cjs.map} +1 -1
  30. package/dist/{ask-user-DJXmLJzy.cjs → ask-user-CXu4b7Jw.cjs} +4 -4
  31. package/dist/ask-user-CXu4b7Jw.cjs.map +1 -0
  32. package/dist/{ask-user-Crg1O-o6.js → ask-user-Dlz2346n.js} +4 -4
  33. package/dist/ask-user-Dlz2346n.js.map +1 -0
  34. package/dist/buttons-group-CoZP3lJt.cjs.map +1 -1
  35. package/dist/buttons-group-DsZgrZBZ.js.map +1 -1
  36. package/dist/{code-block-C7A4Hv96.cjs → code-block-BzoMjjtf.cjs} +5 -5
  37. package/dist/{code-block-C7A4Hv96.cjs.map → code-block-BzoMjjtf.cjs.map} +1 -1
  38. package/dist/{code-block-C_pvalBv.js → code-block-DY5KsTGY.js} +5 -5
  39. package/dist/{code-block-C_pvalBv.js.map → code-block-DY5KsTGY.js.map} +1 -1
  40. package/dist/{code-editor-Cltwid7c.js → code-editor-28chVxHw.js} +10 -8
  41. package/dist/code-editor-28chVxHw.js.map +1 -0
  42. package/dist/{code-editor-BXchPl_F.cjs → code-editor-B_wPmKPf.cjs} +10 -8
  43. package/dist/code-editor-B_wPmKPf.cjs.map +1 -0
  44. package/dist/{combobox-B_C0cNid.js → combobox-B15qTrWO.js} +4 -4
  45. package/dist/{combobox-B_C0cNid.js.map → combobox-B15qTrWO.js.map} +1 -1
  46. package/dist/{combobox-rKV-Lksj.cjs → combobox-DJ0c4o4S.cjs} +4 -4
  47. package/dist/{combobox-rKV-Lksj.cjs.map → combobox-DJ0c4o4S.cjs.map} +1 -1
  48. package/dist/{combobox-styles-CLxC7VLA.js → combobox-styles-C2MEEpaG.js} +3 -3
  49. package/dist/{combobox-styles-CLxC7VLA.js.map → combobox-styles-C2MEEpaG.js.map} +1 -1
  50. package/dist/{combobox-styles-C4Kq1NFV.cjs → combobox-styles-DLflBH-G.cjs} +3 -3
  51. package/dist/{combobox-styles-C4Kq1NFV.cjs.map → combobox-styles-DLflBH-G.cjs.map} +1 -1
  52. package/dist/{command-CpXMoss8.cjs → command-Bm0VcX7X.cjs} +2 -2
  53. package/dist/{command-CpXMoss8.cjs.map → command-Bm0VcX7X.cjs.map} +1 -1
  54. package/dist/{command-C6JnofUJ.js → command-DFin7kHN.js} +2 -2
  55. package/dist/{command-C6JnofUJ.js.map → command-DFin7kHN.js.map} +1 -1
  56. package/dist/components/AlertDialog.cjs.js +1 -1
  57. package/dist/components/AlertDialog.es.js +1 -1
  58. package/dist/components/Badge.cjs.js +1 -1
  59. package/dist/components/Badge.es.js +1 -1
  60. package/dist/components/Button.cjs.js +1 -1
  61. package/dist/components/Button.es.js +2 -2
  62. package/dist/components/ClampedText.cjs.js +1 -1
  63. package/dist/components/ClampedText.es.js +1 -1
  64. package/dist/components/CodeBlock.cjs.js +1 -1
  65. package/dist/components/CodeBlock.es.js +1 -1
  66. package/dist/components/CodeEditor.cjs.js +1 -1
  67. package/dist/components/CodeEditor.es.js +1 -1
  68. package/dist/components/CollapsibleBox.cjs.js +12 -0
  69. package/dist/components/CollapsibleBox.cjs.js.map +1 -0
  70. package/dist/components/CollapsibleBox.d.ts +2 -0
  71. package/dist/components/CollapsibleBox.es.js +2 -0
  72. package/dist/components/CollapsibleBox.es.js.map +1 -0
  73. package/dist/components/Combobox.cjs.js +2 -2
  74. package/dist/components/Combobox.es.js +2 -2
  75. package/dist/components/Command.cjs.js +1 -1
  76. package/dist/components/Command.es.js +1 -1
  77. package/dist/components/CommandPalette.cjs.js +1 -1
  78. package/dist/components/CommandPalette.es.js +1 -1
  79. package/dist/components/Comment.cjs.js +3 -3
  80. package/dist/components/Comment.es.js +3 -3
  81. package/dist/components/CopyButton.cjs.js +1 -1
  82. package/dist/components/CopyButton.es.js +1 -1
  83. package/dist/components/DataCodeSection.cjs.js +1 -1
  84. package/dist/components/DataCodeSection.es.js +1 -1
  85. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  86. package/dist/components/DataDetailsPanel.es.js +2 -2
  87. package/dist/components/DataList.cjs.js +3 -3
  88. package/dist/components/DataList.es.js +3 -3
  89. package/dist/components/DataPanel.cjs.js +1 -1
  90. package/dist/components/DataPanel.es.js +1 -1
  91. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  92. package/dist/components/DateRangeTimeline.es.js +1 -1
  93. package/dist/components/DateTimePicker.cjs.js +3 -3
  94. package/dist/components/DateTimePicker.es.js +3 -3
  95. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  96. package/dist/components/DateTimeRangePicker.es.js +1 -1
  97. package/dist/components/Dialog.cjs.js +2 -2
  98. package/dist/components/Dialog.es.js +2 -2
  99. package/dist/components/DisabledFeatureButton.cjs.js +1 -1
  100. package/dist/components/DisabledFeatureButton.es.js +1 -1
  101. package/dist/components/Drawer.cjs.js +1 -1
  102. package/dist/components/Drawer.es.js +1 -1
  103. package/dist/components/EmptyState.cjs.js +1 -1
  104. package/dist/components/EmptyState.es.js +1 -1
  105. package/dist/components/EnvironmentVariablesEditor.cjs.js +9 -9
  106. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  107. package/dist/components/EnvironmentVariablesEditor.es.js +9 -9
  108. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  109. package/dist/components/ErrorBoundary.cjs.js +1 -1
  110. package/dist/components/ErrorBoundary.es.js +1 -1
  111. package/dist/components/FileDropBackdrop.cjs.js +1 -1
  112. package/dist/components/FileDropBackdrop.es.js +1 -1
  113. package/dist/components/FilterBar.cjs.js +3 -3
  114. package/dist/components/FilterBar.es.js +4 -4
  115. package/dist/components/FormFieldBlocks.cjs.js +5 -5
  116. package/dist/components/FormFieldBlocks.es.js +5 -5
  117. package/dist/components/InputGroup.cjs.js +1 -1
  118. package/dist/components/InputGroup.es.js +1 -1
  119. package/dist/components/JSONSchemaForm.cjs.js +3 -3
  120. package/dist/components/JSONSchemaForm.es.js +3 -3
  121. package/dist/components/ListSearch.cjs.js +1 -1
  122. package/dist/components/ListSearch.es.js +1 -1
  123. package/dist/components/LogsDataList.cjs.js +3 -1
  124. package/dist/components/LogsDataList.cjs.js.map +1 -1
  125. package/dist/components/LogsDataList.es.js +3 -1
  126. package/dist/components/LogsDataList.es.js.map +1 -1
  127. package/dist/components/MainSidebar.cjs.js +1 -1
  128. package/dist/components/MainSidebar.es.js +2 -2
  129. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  130. package/dist/components/MarkdownRenderer.es.js +1 -1
  131. package/dist/components/Message.cjs.js +1 -1
  132. package/dist/components/Message.es.js +1 -1
  133. package/dist/components/MetricsCard.cjs.js +1 -1
  134. package/dist/components/MetricsCard.es.js +1 -1
  135. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  136. package/dist/components/MetricsKpiCard.es.js +1 -1
  137. package/dist/components/Notice.cjs.js +1 -1
  138. package/dist/components/Notice.es.js +1 -1
  139. package/dist/components/PrevNextNav.cjs.js +1 -1
  140. package/dist/components/PrevNextNav.es.js +1 -1
  141. package/dist/components/ProductBadge.cjs.js +1 -1
  142. package/dist/components/ProductBadge.es.js +1 -1
  143. package/dist/components/PropertyFilter.cjs.js +3 -3
  144. package/dist/components/PropertyFilter.es.js +4 -4
  145. package/dist/components/PullRequestIcon.cjs.js +1 -1
  146. package/dist/components/PullRequestIcon.cjs.js.map +1 -1
  147. package/dist/components/PullRequestIcon.es.js +1 -1
  148. package/dist/components/PullRequestIcon.es.js.map +1 -1
  149. package/dist/components/RelativeTimestamp.cjs.js +1 -1
  150. package/dist/components/RelativeTimestamp.es.js +1 -1
  151. package/dist/components/RuleBuilder.cjs.js +3 -3
  152. package/dist/components/RuleBuilder.cjs.js.map +1 -1
  153. package/dist/components/RuleBuilder.es.js +3 -3
  154. package/dist/components/RuleBuilder.es.js.map +1 -1
  155. package/dist/components/SankeyChart.cjs.js +1 -1
  156. package/dist/components/SankeyChart.es.js +1 -1
  157. package/dist/components/Section.cjs.js +1 -1
  158. package/dist/components/Section.es.js +1 -1
  159. package/dist/components/SegmentedControl.cjs.js +11 -0
  160. package/dist/components/SegmentedControl.cjs.js.map +1 -0
  161. package/dist/components/SegmentedControl.d.ts +2 -0
  162. package/dist/components/SegmentedControl.es.js +2 -0
  163. package/dist/components/SegmentedControl.es.js.map +1 -0
  164. package/dist/components/Select.cjs.js +1 -1
  165. package/dist/components/Select.es.js +1 -1
  166. package/dist/components/SideDialog.cjs.js +1 -1
  167. package/dist/components/SideDialog.es.js +1 -1
  168. package/dist/components/Steps.cjs.js +2 -2
  169. package/dist/components/Steps.cjs.js.map +1 -1
  170. package/dist/components/Steps.es.js +2 -2
  171. package/dist/components/Steps.es.js.map +1 -1
  172. package/dist/components/Tabs.cjs.js +3 -3
  173. package/dist/components/Tabs.es.js +3 -3
  174. package/dist/components/ThemeToggle.cjs.js +17 -86
  175. package/dist/components/ThemeToggle.cjs.js.map +1 -1
  176. package/dist/components/ThemeToggle.es.js +18 -87
  177. package/dist/components/ThemeToggle.es.js.map +1 -1
  178. package/dist/components/ThreadList.cjs.js +1 -1
  179. package/dist/components/ThreadList.es.js +1 -1
  180. package/dist/components/TokenBudget.cjs.js +1 -1
  181. package/dist/components/TokenBudget.es.js +1 -1
  182. package/dist/components/Truncate.cjs.js +1 -1
  183. package/dist/components/Truncate.es.js +1 -1
  184. package/dist/components/Workflow.cjs.js +6 -6
  185. package/dist/components/Workflow.es.js +6 -6
  186. package/dist/components/ai/activity.cjs.js +4 -4
  187. package/dist/components/ai/activity.es.js +4 -4
  188. package/dist/components/ai/ask-user.cjs.js +1 -1
  189. package/dist/components/ai/ask-user.es.js +1 -1
  190. package/dist/components/ai/plan.cjs.js +1 -1
  191. package/dist/components/ai/plan.es.js +1 -1
  192. package/dist/components/ai/tool-approval.cjs.js +1 -1
  193. package/dist/components/ai/tool-approval.es.js +1 -1
  194. package/dist/components/ai/tool-call.cjs.js +4 -4
  195. package/dist/components/ai/tool-call.es.js +4 -4
  196. package/dist/{copy-button-C6nXDjBz.cjs → copy-button-CGkFEDHF.cjs} +2 -2
  197. package/dist/{copy-button-C6nXDjBz.cjs.map → copy-button-CGkFEDHF.cjs.map} +1 -1
  198. package/dist/{copy-button-DbmsTUum.js → copy-button-DH8xtrWz.js} +2 -2
  199. package/dist/{copy-button-DbmsTUum.js.map → copy-button-DH8xtrWz.js.map} +1 -1
  200. package/dist/{data-code-section-D5b6_jcB.cjs → data-code-section-DWBfkrmO.cjs} +6 -6
  201. package/dist/data-code-section-DWBfkrmO.cjs.map +1 -0
  202. package/dist/{data-code-section-Bd2Xnckz.js → data-code-section-It6myyvZ.js} +6 -6
  203. package/dist/data-code-section-It6myyvZ.js.map +1 -0
  204. package/dist/{data-list-DL_oFE4j.js → data-list-CyeD_u-6.js} +3 -3
  205. package/dist/{data-list-DL_oFE4j.js.map → data-list-CyeD_u-6.js.map} +1 -1
  206. package/dist/{data-list-D8bACyyK.cjs → data-list-Y42KyuI1.cjs} +3 -3
  207. package/dist/{data-list-D8bACyyK.cjs.map → data-list-Y42KyuI1.cjs.map} +1 -1
  208. package/dist/{data-list-spacer-_bFe0e2u.cjs → data-list-spacer-BSg2hCx7.cjs} +2 -2
  209. package/dist/{data-list-spacer-_bFe0e2u.cjs.map → data-list-spacer-BSg2hCx7.cjs.map} +1 -1
  210. package/dist/{data-list-spacer-CE6-4ZQq.js → data-list-spacer-C8z32twc.js} +2 -2
  211. package/dist/{data-list-spacer-CE6-4ZQq.js.map → data-list-spacer-C8z32twc.js.map} +1 -1
  212. package/dist/{data-panel-CjvoI_lx.cjs → data-panel-D7Qk4iwZ.cjs} +3 -3
  213. package/dist/{data-panel-CjvoI_lx.cjs.map → data-panel-D7Qk4iwZ.cjs.map} +1 -1
  214. package/dist/{data-panel-42fdcagQ.js → data-panel-DuLf5j8S.js} +3 -3
  215. package/dist/{data-panel-42fdcagQ.js.map → data-panel-DuLf5j8S.js.map} +1 -1
  216. package/dist/{date-time-range-picker-C-pSI1u1.js → date-time-range-picker-BDylIIzt.js} +4 -4
  217. package/dist/{date-time-range-picker-C-pSI1u1.js.map → date-time-range-picker-BDylIIzt.js.map} +1 -1
  218. package/dist/{date-time-range-picker-BORAuIJM.cjs → date-time-range-picker-UheN070q.cjs} +4 -4
  219. package/dist/{date-time-range-picker-BORAuIJM.cjs.map → date-time-range-picker-UheN070q.cjs.map} +1 -1
  220. package/dist/{dialog-cKzR2TXI.js → dialog-Dt5kASkl.js} +2 -2
  221. package/dist/{dialog-cKzR2TXI.js.map → dialog-Dt5kASkl.js.map} +1 -1
  222. package/dist/{dialog-action-B3AHq7mU.cjs → dialog-action-C3Tc7ZKI.cjs} +3 -3
  223. package/dist/{dialog-action-B3AHq7mU.cjs.map → dialog-action-C3Tc7ZKI.cjs.map} +1 -1
  224. package/dist/{dialog-action-BGmDoI5T.js → dialog-action-CB3h9Z2J.js} +3 -3
  225. package/dist/{dialog-action-BGmDoI5T.js.map → dialog-action-CB3h9Z2J.js.map} +1 -1
  226. package/dist/{dialog-DYpOpj9s.cjs → dialog-d_AK1NQD.cjs} +2 -2
  227. package/dist/{dialog-DYpOpj9s.cjs.map → dialog-d_AK1NQD.cjs.map} +1 -1
  228. package/dist/domains/auth/components/permission-denied.cjs.js +1 -1
  229. package/dist/domains/auth/components/permission-denied.es.js +1 -1
  230. package/dist/domains/auth/components/session-expired.cjs.js +2 -2
  231. package/dist/domains/auth/components/session-expired.es.js +2 -2
  232. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
  233. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
  234. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
  235. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
  236. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  237. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  238. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
  239. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
  240. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
  241. package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
  242. package/dist/domains/chat/messages/dataset-save-action.cjs.js +5 -5
  243. package/dist/domains/chat/messages/dataset-save-action.es.js +5 -5
  244. package/dist/domains/chat/messages/message-row.cjs.js +5 -5
  245. package/dist/domains/chat/messages/message-row.es.js +5 -5
  246. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  247. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  248. package/dist/domains/chat/messages/renderers/message-text.cjs.js +3 -3
  249. package/dist/domains/chat/messages/renderers/message-text.es.js +3 -3
  250. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  251. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  252. package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
  253. package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
  254. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  255. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  256. package/dist/domains/chat/messages/skill-message.cjs.js +3 -3
  257. package/dist/domains/chat/messages/skill-message.es.js +3 -3
  258. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  259. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  260. package/dist/domains/chat/messages/tripwire-notice.cjs.js +2 -2
  261. package/dist/domains/chat/messages/tripwire-notice.es.js +2 -2
  262. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  263. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  264. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +4 -4
  265. package/dist/domains/chat/tools/badges/agent-badge.es.js +4 -4
  266. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  267. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  268. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +3 -3
  269. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
  270. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +3 -3
  271. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
  272. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +3 -3
  273. package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
  274. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +3 -3
  275. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +3 -3
  276. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
  277. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
  278. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  279. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  280. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  281. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  282. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +3 -3
  283. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js.map +1 -1
  284. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +3 -3
  285. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js.map +1 -1
  286. package/dist/domains/chat/tools/badges/tool-approval-buttons.cjs.js +1 -1
  287. package/dist/domains/chat/tools/badges/tool-approval-buttons.es.js +1 -1
  288. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +4 -4
  289. package/dist/domains/chat/tools/badges/tool-badge.es.js +4 -4
  290. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +5 -3
  291. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  292. package/dist/domains/chat/tools/badges/workflow-badge.es.js +5 -3
  293. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  294. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  295. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  296. package/dist/domains/chat/tools/tool-card-kind.cjs.js +5 -1
  297. package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
  298. package/dist/domains/chat/tools/tool-card-kind.es.js +5 -2
  299. package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
  300. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  301. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  302. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
  303. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
  304. package/dist/domains/logs/components/log-data-panel.cjs.js +3 -3
  305. package/dist/domains/logs/components/log-data-panel.es.js +3 -3
  306. package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
  307. package/dist/domains/logs/components/logs-error-content.es.js +1 -1
  308. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  309. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  310. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  311. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  312. package/dist/domains/logs/components/no-logs-info.cjs.js +2 -2
  313. package/dist/domains/logs/components/no-logs-info.es.js +2 -2
  314. package/dist/domains/memory/components/flame-graph.cjs.js +2 -2
  315. package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
  316. package/dist/domains/memory/components/flame-graph.es.js +2 -2
  317. package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
  318. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  319. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  320. package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
  321. package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
  322. package/dist/domains/memory/components/thread-context-progress.cjs.js +1 -1
  323. package/dist/domains/memory/components/thread-context-progress.es.js +1 -1
  324. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  325. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  326. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  327. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  328. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  329. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  330. package/dist/domains/metrics/components/latency-card-view.cjs.js +5 -5
  331. package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
  332. package/dist/domains/metrics/components/latency-card-view.es.js +5 -5
  333. package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
  334. package/dist/domains/metrics/components/memory-card-view.cjs.js +5 -5
  335. package/dist/domains/metrics/components/memory-card-view.es.js +5 -5
  336. package/dist/domains/metrics/components/metrics-utils.cjs.js +1 -1
  337. package/dist/domains/metrics/components/metrics-utils.cjs.js.map +1 -1
  338. package/dist/domains/metrics/components/metrics-utils.es.js +1 -1
  339. package/dist/domains/metrics/components/metrics-utils.es.js.map +1 -1
  340. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
  341. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
  342. package/dist/domains/metrics/components/scores-card-view.cjs.js +6 -6
  343. package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
  344. package/dist/domains/metrics/components/scores-card-view.es.js +6 -6
  345. package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
  346. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +4 -4
  347. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +4 -4
  348. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +5 -5
  349. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
  350. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +5 -5
  351. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
  352. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +4 -4
  353. package/dist/domains/metrics/components/traces-volume-card-view.es.js +4 -4
  354. package/dist/domains/metrics/drilldown.cjs.js +0 -1
  355. package/dist/domains/metrics/drilldown.cjs.js.map +1 -1
  356. package/dist/domains/metrics/drilldown.es.js +0 -1
  357. package/dist/domains/metrics/drilldown.es.js.map +1 -1
  358. package/dist/domains/metrics/metrics-filters.cjs.js +0 -2
  359. package/dist/domains/metrics/metrics-filters.cjs.js.map +1 -1
  360. package/dist/domains/metrics/metrics-filters.es.js +0 -2
  361. package/dist/domains/metrics/metrics-filters.es.js.map +1 -1
  362. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -4
  363. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -4
  364. package/dist/domains/review/components/review-status-badge.cjs.js +1 -1
  365. package/dist/domains/review/components/review-status-badge.es.js +1 -1
  366. package/dist/domains/scores/components/score-data-panel.cjs.js +2 -2
  367. package/dist/domains/scores/components/score-data-panel.es.js +2 -2
  368. package/dist/domains/scores/components/span-scoring.cjs.js +4 -4
  369. package/dist/domains/scores/components/span-scoring.es.js +4 -4
  370. package/dist/domains/scores/components/trace-scores-tab.cjs.js +5 -4
  371. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  372. package/dist/domains/scores/components/trace-scores-tab.es.js +5 -4
  373. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  374. package/dist/domains/traces/components/feedback-thread.cjs.js +3 -3
  375. package/dist/domains/traces/components/feedback-thread.es.js +3 -3
  376. package/dist/domains/traces/components/format-trace-thread-messages.cjs.js +31 -9
  377. package/dist/domains/traces/components/format-trace-thread-messages.cjs.js.map +1 -1
  378. package/dist/domains/traces/components/format-trace-thread-messages.es.js +31 -9
  379. package/dist/domains/traces/components/format-trace-thread-messages.es.js.map +1 -1
  380. package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
  381. package/dist/domains/traces/components/no-traces-info.es.js +1 -1
  382. package/dist/domains/traces/components/span-data-panel-view.cjs.js +6 -6
  383. package/dist/domains/traces/components/span-data-panel-view.es.js +6 -6
  384. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  385. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  386. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
  387. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
  388. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  389. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  390. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
  391. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
  392. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  393. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js.map +1 -1
  394. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  395. package/dist/domains/traces/components/span-payload/span-payload-json.es.js.map +1 -1
  396. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +16 -11
  397. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js.map +1 -1
  398. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +16 -11
  399. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js.map +1 -1
  400. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  401. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  402. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  403. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  404. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +16 -3
  405. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js.map +1 -1
  406. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +16 -3
  407. package/dist/domains/traces/components/span-payload/span-payload-section.es.js.map +1 -1
  408. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  409. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  410. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +2 -2
  411. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +2 -2
  412. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  413. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  414. package/dist/domains/traces/components/span-type-legend.cjs.js +1 -1
  415. package/dist/domains/traces/components/span-type-legend.es.js +1 -1
  416. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  417. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  418. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +6 -6
  419. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js.map +1 -1
  420. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +6 -6
  421. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js.map +1 -1
  422. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +1 -1
  423. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +1 -1
  424. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +9 -2
  425. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  426. package/dist/domains/traces/components/thread-view-by-trace.es.js +10 -3
  427. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  428. package/dist/domains/traces/components/trace-columns-menu.cjs.js +5 -5
  429. package/dist/domains/traces/components/trace-columns-menu.es.js +5 -5
  430. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +6 -6
  431. package/dist/domains/traces/components/trace-data-panel-view.es.js +6 -6
  432. package/dist/domains/traces/components/trace-data-panel.cjs.js +4 -2
  433. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  434. package/dist/domains/traces/components/trace-data-panel.es.js +4 -2
  435. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  436. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  437. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  438. package/dist/domains/traces/components/trace-messages-panel.cjs.js +1 -1
  439. package/dist/domains/traces/components/trace-messages-panel.es.js +1 -1
  440. package/dist/domains/traces/components/trace-status-value.cjs.js +1 -1
  441. package/dist/domains/traces/components/trace-status-value.cjs.js.map +1 -1
  442. package/dist/domains/traces/components/trace-status-value.es.js +1 -1
  443. package/dist/domains/traces/components/trace-status-value.es.js.map +1 -1
  444. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  445. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  446. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +9 -2
  447. package/dist/domains/traces/components/trace-thread-item-view.cjs.js.map +1 -1
  448. package/dist/domains/traces/components/trace-thread-item-view.es.js +10 -3
  449. package/dist/domains/traces/components/trace-thread-item-view.es.js.map +1 -1
  450. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  451. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  452. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  453. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  454. package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
  455. package/dist/domains/traces/components/traces-error-content.es.js +1 -1
  456. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  457. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  458. package/dist/domains/traces/components/traces-list-view.cjs.js +2 -2
  459. package/dist/domains/traces/components/traces-list-view.es.js +2 -2
  460. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -0
  461. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  462. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -0
  463. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  464. package/dist/domains/traces/hooks/use-trace-query.cjs.js +2 -2
  465. package/dist/domains/traces/hooks/use-trace-query.cjs.js.map +1 -1
  466. package/dist/domains/traces/hooks/use-trace-query.es.js +2 -2
  467. package/dist/domains/traces/hooks/use-trace-query.es.js.map +1 -1
  468. package/dist/domains/traces/trace-filters.cjs.js +5 -5
  469. package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
  470. package/dist/domains/traces/trace-filters.es.js +5 -5
  471. package/dist/domains/traces/trace-filters.es.js.map +1 -1
  472. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  473. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  474. package/dist/domains/workflows/components/workflow-entity-header.cjs.js +1 -1
  475. package/dist/domains/workflows/components/workflow-entity-header.es.js +1 -1
  476. package/dist/domains/workflows/components/workflow-information.cjs.js +1 -1
  477. package/dist/domains/workflows/components/workflow-information.es.js +1 -1
  478. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
  479. package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
  480. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +2 -2
  481. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +2 -2
  482. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +3 -3
  483. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js.map +1 -1
  484. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +3 -3
  485. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js.map +1 -1
  486. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
  487. package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
  488. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  489. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  490. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +4 -4
  491. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js.map +1 -1
  492. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +4 -4
  493. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js.map +1 -1
  494. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +2 -2
  495. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +2 -2
  496. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +3 -3
  497. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +3 -3
  498. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  499. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  500. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  501. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  502. package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
  503. package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
  504. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  505. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  506. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  507. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  508. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +3 -3
  509. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +3 -3
  510. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  511. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  512. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  513. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  514. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  515. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  516. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
  517. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
  518. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +3 -3
  519. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +3 -3
  520. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +4 -4
  521. package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -4
  522. package/dist/domains/workflows/workflow/workflow-run-error.cjs.js +1 -1
  523. package/dist/domains/workflows/workflow/workflow-run-error.es.js +1 -1
  524. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +4 -4
  525. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js.map +1 -1
  526. package/dist/domains/workflows/workflow/workflow-run-header.es.js +4 -4
  527. package/dist/domains/workflows/workflow/workflow-run-header.es.js.map +1 -1
  528. package/dist/domains/workflows/workflow/workflow-status.cjs.js +2 -2
  529. package/dist/domains/workflows/workflow/workflow-status.cjs.js.map +1 -1
  530. package/dist/domains/workflows/workflow/workflow-status.es.js +2 -2
  531. package/dist/domains/workflows/workflow/workflow-status.es.js.map +1 -1
  532. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +3 -3
  533. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +3 -3
  534. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +2 -2
  535. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +2 -2
  536. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +3 -3
  537. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +3 -3
  538. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
  539. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
  540. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
  541. package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
  542. package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +1 -1
  543. package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +1 -1
  544. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +2 -2
  545. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +2 -2
  546. package/dist/domains/workflows/workflow-status-tone.cjs.js +2 -2
  547. package/dist/domains/workflows/workflow-status-tone.cjs.js.map +1 -1
  548. package/dist/domains/workflows/workflow-status-tone.es.js +2 -2
  549. package/dist/domains/workflows/workflow-status-tone.es.js.map +1 -1
  550. package/dist/{drawer-DXf50w71.js → drawer-BI3B_krl.js} +2 -2
  551. package/dist/{drawer-DXf50w71.js.map → drawer-BI3B_krl.js.map} +1 -1
  552. package/dist/{drawer-d81cZiSV.cjs → drawer-DnXudVbm.cjs} +2 -2
  553. package/dist/{drawer-d81cZiSV.cjs.map → drawer-DnXudVbm.cjs.map} +1 -1
  554. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
  555. package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
  556. package/dist/ee/signals/components/entity-index-list.cjs.js +4 -2
  557. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  558. package/dist/ee/signals/components/entity-index-list.es.js +4 -2
  559. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  560. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  561. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  562. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +1 -1
  563. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +1 -1
  564. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +5 -4
  565. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  566. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +5 -4
  567. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  568. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  569. package/dist/ee/signals/examples-pager.es.js +1 -1
  570. package/dist/ee/signals/flow-card.cjs.js +1 -1
  571. package/dist/ee/signals/flow-card.es.js +1 -1
  572. package/dist/ee/signals/noise-detail-panel.cjs.js +3 -3
  573. package/dist/ee/signals/noise-detail-panel.cjs.js.map +1 -1
  574. package/dist/ee/signals/noise-detail-panel.es.js +3 -3
  575. package/dist/ee/signals/noise-detail-panel.es.js.map +1 -1
  576. package/dist/ee/signals/sankey-signals.cjs.js +2 -2
  577. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
  578. package/dist/ee/signals/sankey-signals.es.js +2 -2
  579. package/dist/ee/signals/sankey-signals.es.js.map +1 -1
  580. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +5 -5
  581. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +5 -5
  582. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +3 -3
  583. package/dist/ee/signals/settings/trace-signal-settings.es.js +3 -3
  584. package/dist/ee/signals/signal-colors.cjs.js +3 -3
  585. package/dist/ee/signals/signal-colors.cjs.js.map +1 -1
  586. package/dist/ee/signals/signal-colors.es.js +3 -3
  587. package/dist/ee/signals/signal-colors.es.js.map +1 -1
  588. package/dist/ee/signals/signals-error-state.cjs.js +2 -2
  589. package/dist/ee/signals/signals-error-state.cjs.js.map +1 -1
  590. package/dist/ee/signals/signals-error-state.es.js +2 -2
  591. package/dist/ee/signals/signals-error-state.es.js.map +1 -1
  592. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  593. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  594. package/dist/ee/signals/theme-detail-panel.cjs.js +4 -4
  595. package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -1
  596. package/dist/ee/signals/theme-detail-panel.es.js +4 -4
  597. package/dist/ee/signals/theme-detail-panel.es.js.map +1 -1
  598. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  599. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  600. package/dist/ee/signals/trace-insight-view.cjs.js +4 -4
  601. package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
  602. package/dist/ee/signals/trace-insight-view.es.js +4 -4
  603. package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
  604. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  605. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  606. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  607. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  608. package/dist/{field-block-DpejZ6U6.js → field-block--PeppIRb.js} +10 -3
  609. package/dist/field-block--PeppIRb.js.map +1 -0
  610. package/dist/{field-block-BIDi9Bvc.cjs → field-block-DtaPqBa3.cjs} +10 -3
  611. package/dist/field-block-DtaPqBa3.cjs.map +1 -0
  612. package/dist/{field-block-error-msg-B6-wnlAz.cjs → field-block-error-msg-CkhEN6nU.cjs} +2 -2
  613. package/dist/{field-block-error-msg-B6-wnlAz.cjs.map → field-block-error-msg-CkhEN6nU.cjs.map} +1 -1
  614. package/dist/{field-block-error-msg-edlaudVx.js → field-block-error-msg-LXwhKzIq.js} +2 -2
  615. package/dist/{field-block-error-msg-edlaudVx.js.map → field-block-error-msg-LXwhKzIq.js.map} +1 -1
  616. package/dist/{filter-bar-chip-D4CSm9KP.cjs → filter-bar-chip-CBlHsz4A.cjs} +3 -3
  617. package/dist/{filter-bar-chip-D4CSm9KP.cjs.map → filter-bar-chip-CBlHsz4A.cjs.map} +1 -1
  618. package/dist/{filter-bar-chip-BNPOrSrD.js → filter-bar-chip-DFOtEvpW.js} +3 -3
  619. package/dist/{filter-bar-chip-BNPOrSrD.js.map → filter-bar-chip-DFOtEvpW.js.map} +1 -1
  620. package/dist/hooks/use-environment-variables-editor.cjs.js +6 -1
  621. package/dist/hooks/use-environment-variables-editor.cjs.js.map +1 -1
  622. package/dist/hooks/use-environment-variables-editor.es.js +6 -1
  623. package/dist/hooks/use-environment-variables-editor.es.js.map +1 -1
  624. package/dist/{input-group-B8bnoDrA.js → input-group-0G9ZX_cM.js} +2 -2
  625. package/dist/{input-group-B8bnoDrA.js.map → input-group-0G9ZX_cM.js.map} +1 -1
  626. package/dist/{input-group-I8YVM_Ps.cjs → input-group-BRhBfeHC.cjs} +2 -2
  627. package/dist/{input-group-I8YVM_Ps.cjs.map → input-group-BRhBfeHC.cjs.map} +1 -1
  628. package/dist/layout/tabbed-container.cjs.js +6 -6
  629. package/dist/layout/tabbed-container.es.js +6 -6
  630. package/dist/lib/form/components/array-element-wrapper.cjs.js +2 -2
  631. package/dist/lib/form/components/array-element-wrapper.cjs.js.map +1 -1
  632. package/dist/lib/form/components/array-element-wrapper.es.js +2 -2
  633. package/dist/lib/form/components/array-element-wrapper.es.js.map +1 -1
  634. package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
  635. package/dist/lib/form/components/array-wrapper.es.js +1 -1
  636. package/dist/lib/form/components/boolean-field.cjs.js +1 -1
  637. package/dist/lib/form/components/boolean-field.es.js +1 -1
  638. package/dist/lib/form/components/date-field.cjs.js +1 -1
  639. package/dist/lib/form/components/date-field.es.js +1 -1
  640. package/dist/lib/form/components/error-message.cjs.js +1 -1
  641. package/dist/lib/form/components/error-message.es.js +1 -1
  642. package/dist/lib/form/components/field-wrapper.cjs.js +1 -1
  643. package/dist/lib/form/components/field-wrapper.es.js +1 -1
  644. package/dist/lib/form/components/form-submit-row.cjs.js +1 -1
  645. package/dist/lib/form/components/form-submit-row.es.js +1 -1
  646. package/dist/lib/form/components/object-wrapper.cjs.js +1 -1
  647. package/dist/lib/form/components/object-wrapper.cjs.js.map +1 -1
  648. package/dist/lib/form/components/object-wrapper.es.js +1 -1
  649. package/dist/lib/form/components/object-wrapper.es.js.map +1 -1
  650. package/dist/lib/form/components/record-field.cjs.js +1 -1
  651. package/dist/lib/form/components/record-field.es.js +1 -1
  652. package/dist/lib/form/components/select-field.cjs.js +1 -1
  653. package/dist/lib/form/components/select-field.es.js +1 -1
  654. package/dist/lib/form/components/submit-button.cjs.js +1 -1
  655. package/dist/lib/form/components/submit-button.es.js +1 -1
  656. package/dist/{list-search-DXb7HFX8.cjs → list-search-BzAIj0DB.cjs} +2 -2
  657. package/dist/{list-search-DXb7HFX8.cjs.map → list-search-BzAIj0DB.cjs.map} +1 -1
  658. package/dist/{list-search-9l8IEdxZ.js → list-search-DI1DH7vU.js} +2 -2
  659. package/dist/{list-search-9l8IEdxZ.js.map → list-search-DI1DH7vU.js.map} +1 -1
  660. package/dist/{logs-data-list-C77r2FOj.js → logs-data-list-ButZV-2H.js} +3 -3
  661. package/dist/{logs-data-list-C77r2FOj.js.map → logs-data-list-ButZV-2H.js.map} +1 -1
  662. package/dist/{logs-data-list-CEFyG1Xb.cjs → logs-data-list-CtHern11.cjs} +3 -3
  663. package/dist/{logs-data-list-CEFyG1Xb.cjs.map → logs-data-list-CtHern11.cjs.map} +1 -1
  664. package/dist/{main-sidebar-link-active-BNko0jHZ.cjs → main-sidebar-link-active-D8VSuJKx.cjs} +2 -2
  665. package/dist/{main-sidebar-link-active-BNko0jHZ.cjs.map → main-sidebar-link-active-D8VSuJKx.cjs.map} +1 -1
  666. package/dist/{main-sidebar-link-active-1_ktyA8Q.js → main-sidebar-link-active-buZAhlHo.js} +2 -2
  667. package/dist/{main-sidebar-link-active-1_ktyA8Q.js.map → main-sidebar-link-active-buZAhlHo.js.map} +1 -1
  668. package/dist/{markdown-renderer-CSwjfPaf.cjs → markdown-renderer-CZV6neya.cjs} +3 -3
  669. package/dist/{markdown-renderer-CSwjfPaf.cjs.map → markdown-renderer-CZV6neya.cjs.map} +1 -1
  670. package/dist/{markdown-renderer-Bl0V7FCo.js → markdown-renderer-Cy7Iwy1c.js} +3 -3
  671. package/dist/{markdown-renderer-Bl0V7FCo.js.map → markdown-renderer-Cy7Iwy1c.js.map} +1 -1
  672. package/dist/{message-copy-button-DP3U-xA-.js → message-copy-button-C_mFZ3Vg.js} +2 -2
  673. package/dist/{message-copy-button-DP3U-xA-.js.map → message-copy-button-C_mFZ3Vg.js.map} +1 -1
  674. package/dist/{message-copy-button-ClJBX9qx.cjs → message-copy-button-CqMR2T2t.cjs} +2 -2
  675. package/dist/{message-copy-button-ClJBX9qx.cjs.map → message-copy-button-CqMR2T2t.cjs.map} +1 -1
  676. package/dist/{metrics-card-CloSmyRQ.js → metrics-card-C1rTkbcn.js} +3 -3
  677. package/dist/metrics-card-C1rTkbcn.js.map +1 -0
  678. package/dist/{metrics-card-HmQJHDNa.cjs → metrics-card-D7J9JDgn.cjs} +3 -3
  679. package/dist/metrics-card-D7J9JDgn.cjs.map +1 -0
  680. package/dist/{metrics-kpi-card-CW24YjZp.cjs → metrics-kpi-card-1hbihR2T.cjs} +3 -3
  681. package/dist/metrics-kpi-card-1hbihR2T.cjs.map +1 -0
  682. package/dist/{metrics-kpi-card-DLDT28IB.js → metrics-kpi-card-CiB88L41.js} +3 -3
  683. package/dist/metrics-kpi-card-CiB88L41.js.map +1 -0
  684. package/dist/new/settings.cjs.js +1 -1
  685. package/dist/new/settings.es.js +1 -1
  686. package/dist/new/sidebar.cjs.js +3 -3
  687. package/dist/new/sidebar.cjs.js.map +1 -1
  688. package/dist/new/sidebar.es.js +4 -4
  689. package/dist/new/sidebar.es.js.map +1 -1
  690. package/dist/{notification-activity-B1_2BPe_.js → notification-activity-CFR_b8eA.js} +4 -4
  691. package/dist/notification-activity-CFR_b8eA.js.map +1 -0
  692. package/dist/{notification-activity-BAn2fhYd.cjs → notification-activity-Dk50wcE4.cjs} +4 -4
  693. package/dist/notification-activity-Dk50wcE4.cjs.map +1 -0
  694. package/dist/{plan-DJfH1c_u.js → plan-CvTAGIWv.js} +10 -55
  695. package/dist/plan-CvTAGIWv.js.map +1 -0
  696. package/dist/{plan-ZKAT5frg.cjs → plan-DsfNN3a0.cjs} +10 -55
  697. package/dist/plan-DsfNN3a0.cjs.map +1 -0
  698. package/dist/primitives/menu-item.cjs.js +2 -2
  699. package/dist/primitives/menu-item.cjs.js.map +1 -1
  700. package/dist/primitives/menu-item.es.js +2 -2
  701. package/dist/primitives/menu-item.es.js.map +1 -1
  702. package/dist/primitives/trigger-button.cjs.js +1 -1
  703. package/dist/primitives/trigger-button.es.js +1 -1
  704. package/dist/{property-filter-applied-D0F0BYMY.cjs → property-filter-applied-Bp2z4KBv.cjs} +2 -2
  705. package/dist/{property-filter-applied-D0F0BYMY.cjs.map → property-filter-applied-Bp2z4KBv.cjs.map} +1 -1
  706. package/dist/{property-filter-applied-k0TOa9hf.js → property-filter-applied-C9verwDR.js} +2 -2
  707. package/dist/{property-filter-applied-k0TOa9hf.js.map → property-filter-applied-C9verwDR.js.map} +1 -1
  708. package/dist/{reasoning-activity-CO0Ab1Za.cjs → reasoning-activity-BVviIdMe.cjs} +3 -3
  709. package/dist/{reasoning-activity-CO0Ab1Za.cjs.map → reasoning-activity-BVviIdMe.cjs.map} +1 -1
  710. package/dist/{reasoning-activity-D3oCzL58.js → reasoning-activity-OM1-hbCV.js} +3 -3
  711. package/dist/{reasoning-activity-D3oCzL58.js.map → reasoning-activity-OM1-hbCV.js.map} +1 -1
  712. package/dist/{relative-timestamp-D-IvjsVb.cjs → relative-timestamp-BlmN8Vjn.cjs} +2 -2
  713. package/dist/{relative-timestamp-D-IvjsVb.cjs.map → relative-timestamp-BlmN8Vjn.cjs.map} +1 -1
  714. package/dist/{relative-timestamp-wERh5vUE.js → relative-timestamp-Cnp4VeLp.js} +2 -2
  715. package/dist/{relative-timestamp-wERh5vUE.js.map → relative-timestamp-Cnp4VeLp.js.map} +1 -1
  716. package/dist/resize/panel-drawer.cjs.js +1 -1
  717. package/dist/resize/panel-drawer.es.js +1 -1
  718. package/dist/{sankey-chart-D-xMiO2u.js → sankey-chart-D4Idjtth.js} +2 -2
  719. package/dist/sankey-chart-D4Idjtth.js.map +1 -0
  720. package/dist/{sankey-chart-S7iF7d0E.cjs → sankey-chart-DfVMZpz5.cjs} +2 -2
  721. package/dist/sankey-chart-DfVMZpz5.cjs.map +1 -0
  722. package/dist/{search-field-block-Cj9lJsYi.js → search-field-block-BPJh5yuW.js} +3 -3
  723. package/dist/{search-field-block-Cj9lJsYi.js.map → search-field-block-BPJh5yuW.js.map} +1 -1
  724. package/dist/{search-field-block-B1eqMV8x.cjs → search-field-block-DRa-ZNQj.cjs} +3 -3
  725. package/dist/{search-field-block-B1eqMV8x.cjs.map → search-field-block-DRa-ZNQj.cjs.map} +1 -1
  726. package/dist/{section-B5g_0tUo.js → section-BfEsNViI.js} +2 -2
  727. package/dist/{section-B5g_0tUo.js.map → section-BfEsNViI.js.map} +1 -1
  728. package/dist/{section-Bbp-NIR9.cjs → section-dBeXxS69.cjs} +2 -2
  729. package/dist/{section-Bbp-NIR9.cjs.map → section-dBeXxS69.cjs.map} +1 -1
  730. package/dist/segmented-control--I3IgW21.cjs +157 -0
  731. package/dist/segmented-control--I3IgW21.cjs.map +1 -0
  732. package/dist/segmented-control-BxeiypPR.js +135 -0
  733. package/dist/segmented-control-BxeiypPR.js.map +1 -0
  734. package/dist/{select-C0ZGSJYa.cjs → select-DBY9LQFQ.cjs} +2 -2
  735. package/dist/{select-C0ZGSJYa.cjs.map → select-DBY9LQFQ.cjs.map} +1 -1
  736. package/dist/{select-ch8imm15.js → select-DZeNf-kI.js} +2 -2
  737. package/dist/{select-ch8imm15.js.map → select-DZeNf-kI.js.map} +1 -1
  738. package/dist/{select-field-block-_ZUzUs7l.js → select-field-block-C_x9wNpU.js} +3 -3
  739. package/dist/{select-field-block-_ZUzUs7l.js.map → select-field-block-C_x9wNpU.js.map} +1 -1
  740. package/dist/{select-field-block-Dy_N3tWv.cjs → select-field-block-D8AMzoQT.cjs} +3 -3
  741. package/dist/{select-field-block-Dy_N3tWv.cjs.map → select-field-block-D8AMzoQT.cjs.map} +1 -1
  742. package/dist/{settings-row-2hq9Ww8Z.js → settings-row-C1JZDdz_.js} +4 -4
  743. package/dist/settings-row-C1JZDdz_.js.map +1 -0
  744. package/dist/{settings-row-BMRADph-.cjs → settings-row-C7YKfUgY.cjs} +4 -4
  745. package/dist/settings-row-C7YKfUgY.cjs.map +1 -0
  746. package/dist/{side-dialog-D2O3Y7GB.js → side-dialog-DCzCcZs6.js} +5 -5
  747. package/dist/{side-dialog-D2O3Y7GB.js.map → side-dialog-DCzCcZs6.js.map} +1 -1
  748. package/dist/{side-dialog-7P9aEC4v.cjs → side-dialog-DFnD1498.cjs} +5 -5
  749. package/dist/{side-dialog-7P9aEC4v.cjs.map → side-dialog-DFnD1498.cjs.map} +1 -1
  750. package/dist/{signal-activity-1REUU8T_.js → signal-activity-DW2ExjIp.js} +3 -3
  751. package/dist/{signal-activity-1REUU8T_.js.map → signal-activity-DW2ExjIp.js.map} +1 -1
  752. package/dist/{signal-activity-4OJb4kp6.cjs → signal-activity-byCTRP86.cjs} +3 -3
  753. package/dist/{signal-activity-4OJb4kp6.cjs.map → signal-activity-byCTRP86.cjs.map} +1 -1
  754. package/dist/{span-payload-primitives-CbXrqcs-.cjs → span-payload-primitives-D0mhsndj.cjs} +3 -3
  755. package/dist/{span-payload-primitives-CbXrqcs-.cjs.map → span-payload-primitives-D0mhsndj.cjs.map} +1 -1
  756. package/dist/{span-payload-primitives-CEflnpwW.js → span-payload-primitives-DL1Kr0cu.js} +3 -3
  757. package/dist/{span-payload-primitives-CEflnpwW.js.map → span-payload-primitives-DL1Kr0cu.js.map} +1 -1
  758. package/dist/src/domains/chat/tools/tool-card-kind.d.ts +2 -0
  759. package/dist/src/domains/metrics/components/metrics-utils.d.ts +1 -1
  760. package/dist/src/domains/metrics/hooks/use-metrics-filters.d.ts +0 -1
  761. package/dist/src/domains/metrics/metrics-filters.d.ts +0 -2
  762. package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +2 -0
  763. package/dist/src/domains/traces/hooks/use-trace-query.d.ts +1 -1
  764. package/dist/src/ds/components/Badge/Badge.d.ts +3 -3
  765. package/dist/src/ds/components/ButtonsGroup/buttons-group.d.ts +1 -0
  766. package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +0 -6
  767. package/dist/src/ds/components/CodeEditor/variable-autocomplete-extension.d.ts +6 -0
  768. package/dist/src/ds/components/CollapsibleBox/collapsible-box.d.ts +10 -0
  769. package/dist/src/ds/components/CollapsibleBox/collapsible-box.stories.d.ts +11 -0
  770. package/dist/src/ds/components/CollapsibleBox/index.d.ts +2 -0
  771. package/dist/src/ds/components/CollapsibleBox/use-collapsible-box.d.ts +14 -0
  772. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +1 -1
  773. package/dist/src/ds/components/SegmentedControl/index.d.ts +1 -0
  774. package/dist/src/ds/components/SegmentedControl/segmented-control.d.ts +38 -0
  775. package/dist/src/ds/components/SegmentedControl/segmented-control.stories.d.ts +11 -0
  776. package/dist/src/ds/components/ThemeToggle/theme-toggle.d.ts +12 -30
  777. package/dist/src/ds/components/ThemeToggle/theme-toggle.stories.d.ts +0 -1
  778. package/dist/src/ds/components/TokenBudget/tones.d.ts +1 -1
  779. package/dist/src/ds/components/Workflow/cards/workflow-card-badge-utils.d.ts +2 -2
  780. package/dist/src/ds/components/ai/plan/plan.d.ts +1 -1
  781. package/dist/src/ds/tokens/colors.d.ts +31 -28
  782. package/dist/src/hooks/use-environment-variables-editor.d.ts +1 -1
  783. package/dist/src/lib/colors.d.ts +1 -1
  784. package/dist/style.css +517 -184
  785. package/dist/{tabs-content-h2qqD8t-.js → tabs-content-CwbkTutf.js} +2 -2
  786. package/dist/{tabs-content-h2qqD8t-.js.map → tabs-content-CwbkTutf.js.map} +1 -1
  787. package/dist/{tabs-content-DQNRMjup.cjs → tabs-content-DnscxcLI.cjs} +2 -2
  788. package/dist/{tabs-content-DQNRMjup.cjs.map → tabs-content-DnscxcLI.cjs.map} +1 -1
  789. package/dist/{tabs-root-BqC8X_h6.cjs → tabs-root-C-ePF1y9.cjs} +4 -4
  790. package/dist/tabs-root-C-ePF1y9.cjs.map +1 -0
  791. package/dist/{tabs-root-4vL8SHCO.js → tabs-root-lrZZ3KwH.js} +4 -4
  792. package/dist/tabs-root-lrZZ3KwH.js.map +1 -0
  793. package/dist/{tabs-tab-lm4xyjtD.cjs → tabs-tab-BmIBFifi.cjs} +2 -2
  794. package/dist/{tabs-tab-lm4xyjtD.cjs.map → tabs-tab-BmIBFifi.cjs.map} +1 -1
  795. package/dist/{tabs-tab-7e2as-AV.js → tabs-tab-DoPSW-1s.js} +2 -2
  796. package/dist/{tabs-tab-7e2as-AV.js.map → tabs-tab-DoPSW-1s.js.map} +1 -1
  797. package/dist/{text-field-block-DYOWjPgO.cjs → text-field-block-DUntfMPu.cjs} +2 -2
  798. package/dist/{text-field-block-DYOWjPgO.cjs.map → text-field-block-DUntfMPu.cjs.map} +1 -1
  799. package/dist/{text-field-block-DJsOk8dJ.js → text-field-block-DZaGiu5D.js} +2 -2
  800. package/dist/{text-field-block-DJsOk8dJ.js.map → text-field-block-DZaGiu5D.js.map} +1 -1
  801. package/dist/{textarea-field-block-DqTd31gF.js → textarea-field-block-BscOSlvI.js} +2 -2
  802. package/dist/{textarea-field-block-DqTd31gF.js.map → textarea-field-block-BscOSlvI.js.map} +1 -1
  803. package/dist/{textarea-field-block-C5fPL2Hn.cjs → textarea-field-block-CKAhmLrz.cjs} +2 -2
  804. package/dist/{textarea-field-block-C5fPL2Hn.cjs.map → textarea-field-block-CKAhmLrz.cjs.map} +1 -1
  805. package/dist/{thread-list-DGI6M6if.js → thread-list-BTpezI4f.js} +2 -2
  806. package/dist/{thread-list-DGI6M6if.js.map → thread-list-BTpezI4f.js.map} +1 -1
  807. package/dist/{thread-list-DwASH1Vl.cjs → thread-list-Drcptd4x.cjs} +2 -2
  808. package/dist/{thread-list-DwASH1Vl.cjs.map → thread-list-Drcptd4x.cjs.map} +1 -1
  809. package/dist/{time-picker-CfZbLgMm.js → time-picker-BElZALzM.js} +2 -2
  810. package/dist/{time-picker-CfZbLgMm.js.map → time-picker-BElZALzM.js.map} +1 -1
  811. package/dist/{time-picker-C0DCPWpR.cjs → time-picker-_QJdolkZ.cjs} +2 -2
  812. package/dist/{time-picker-C0DCPWpR.cjs.map → time-picker-_QJdolkZ.cjs.map} +1 -1
  813. package/dist/tokens.cjs.js +31 -28
  814. package/dist/tokens.cjs.js.map +1 -1
  815. package/dist/tokens.es.js +31 -28
  816. package/dist/tokens.es.js.map +1 -1
  817. package/dist/{tones-DVtXIMPY.js → tones-RD3VjqiN.js} +2 -2
  818. package/dist/tones-RD3VjqiN.js.map +1 -0
  819. package/dist/{tones-BRAQR5Yb.cjs → tones-koH7QNLH.cjs} +2 -2
  820. package/dist/tones-koH7QNLH.cjs.map +1 -0
  821. package/dist/{tool-approval-xZvYiuBP.js → tool-approval-BNJ6MpnV.js} +3 -3
  822. package/dist/tool-approval-BNJ6MpnV.js.map +1 -0
  823. package/dist/{tool-approval-BAER9nxR.cjs → tool-approval-DOPxugSv.cjs} +3 -3
  824. package/dist/tool-approval-DOPxugSv.cjs.map +1 -0
  825. package/dist/{tool-call-arguments-D7PMJ6vj.js → tool-call-arguments-B1MghuMZ.js} +3 -3
  826. package/dist/{tool-call-arguments-D7PMJ6vj.js.map → tool-call-arguments-B1MghuMZ.js.map} +1 -1
  827. package/dist/{tool-call-arguments-ynBfg2dY.cjs → tool-call-arguments-CQYR65FB.cjs} +3 -3
  828. package/dist/{tool-call-arguments-ynBfg2dY.cjs.map → tool-call-arguments-CQYR65FB.cjs.map} +1 -1
  829. package/dist/{tool-call-group-9Dtupqev.cjs → tool-call-group-D_ioE9hT.cjs} +3 -3
  830. package/dist/tool-call-group-D_ioE9hT.cjs.map +1 -0
  831. package/dist/{tool-call-group-DJX7eUYY.js → tool-call-group-ZuYxpyDs.js} +3 -3
  832. package/dist/tool-call-group-ZuYxpyDs.js.map +1 -0
  833. package/dist/{tool-call-mono-gKG9Ek1m.js → tool-call-mono-CC6uzvhS.js} +2 -2
  834. package/dist/{tool-call-mono-gKG9Ek1m.js.map → tool-call-mono-CC6uzvhS.js.map} +1 -1
  835. package/dist/{tool-call-mono-DFSfVZ6E.cjs → tool-call-mono-DXtb4UMm.cjs} +2 -2
  836. package/dist/{tool-call-mono-DFSfVZ6E.cjs.map → tool-call-mono-DXtb4UMm.cjs.map} +1 -1
  837. package/dist/{tool-call-output-DEoCE_Xn.js → tool-call-output-COq3kB-f.js} +3 -3
  838. package/dist/tool-call-output-COq3kB-f.js.map +1 -0
  839. package/dist/{tool-call-output-Dl4sVfCy.cjs → tool-call-output-ht3k1qLQ.cjs} +3 -3
  840. package/dist/tool-call-output-ht3k1qLQ.cjs.map +1 -0
  841. package/dist/{tool-card-BA1YcDoS.js → tool-card-C_K5PwrK.js} +5 -5
  842. package/dist/tool-card-C_K5PwrK.js.map +1 -0
  843. package/dist/{tool-card-DRqhTx-u.cjs → tool-card-rxo27sve.cjs} +5 -5
  844. package/dist/tool-card-rxo27sve.cjs.map +1 -0
  845. package/dist/{traces-data-list-CU93pUfj.cjs → traces-data-list-BsAYYJ9t.cjs} +4 -4
  846. package/dist/{traces-data-list-CU93pUfj.cjs.map → traces-data-list-BsAYYJ9t.cjs.map} +1 -1
  847. package/dist/{traces-data-list-DaedGcID.js → traces-data-list-CnNpGVRN.js} +4 -4
  848. package/dist/{traces-data-list-DaedGcID.js.map → traces-data-list-CnNpGVRN.js.map} +1 -1
  849. package/dist/use-collapsible-box-CCvsF_a9.js +54 -0
  850. package/dist/use-collapsible-box-CCvsF_a9.js.map +1 -0
  851. package/dist/use-collapsible-box-CbQOkokQ.cjs +58 -0
  852. package/dist/use-collapsible-box-CbQOkokQ.cjs.map +1 -0
  853. package/dist/{use-workflow-graph-runtime-D0ODPlNB.cjs → use-workflow-graph-runtime-CIs2HzoP.cjs} +3 -3
  854. package/dist/{use-workflow-graph-runtime-D0ODPlNB.cjs.map → use-workflow-graph-runtime-CIs2HzoP.cjs.map} +1 -1
  855. package/dist/{use-workflow-graph-runtime-XL5zreeR.js → use-workflow-graph-runtime-CexS1ECI.js} +3 -3
  856. package/dist/{use-workflow-graph-runtime-XL5zreeR.js.map → use-workflow-graph-runtime-CexS1ECI.js.map} +1 -1
  857. package/dist/utils/colors.cjs.js +2 -2
  858. package/dist/utils/colors.cjs.js.map +1 -1
  859. package/dist/utils/colors.es.js +2 -2
  860. package/dist/utils/colors.es.js.map +1 -1
  861. package/dist/{workflow-code-dialog-content-vLneZlMd.cjs → workflow-code-dialog-content-BFm2IWDl.cjs} +3 -3
  862. package/dist/{workflow-code-dialog-content-vLneZlMd.cjs.map → workflow-code-dialog-content-BFm2IWDl.cjs.map} +1 -1
  863. package/dist/{workflow-code-dialog-content-Iz2Omi1P.js → workflow-code-dialog-content-BM4ZnrUr.js} +3 -3
  864. package/dist/{workflow-code-dialog-content-Iz2Omi1P.js.map → workflow-code-dialog-content-BM4ZnrUr.js.map} +1 -1
  865. package/dist/{workflow-condition-card-B0Va5Amx.js → workflow-condition-card-3J-As62x.js} +10 -10
  866. package/dist/{workflow-condition-card-B0Va5Amx.js.map → workflow-condition-card-3J-As62x.js.map} +1 -1
  867. package/dist/{workflow-condition-card-CfjhZb0m.cjs → workflow-condition-card-BjEAp0t6.cjs} +10 -10
  868. package/dist/{workflow-condition-card-CfjhZb0m.cjs.map → workflow-condition-card-BjEAp0t6.cjs.map} +1 -1
  869. package/dist/{workflow-data-edge-view-DXeWURnc.cjs → workflow-data-edge-view-7f8O6pVW.cjs} +2 -2
  870. package/dist/{workflow-data-edge-view-DXeWURnc.cjs.map → workflow-data-edge-view-7f8O6pVW.cjs.map} +1 -1
  871. package/dist/{workflow-data-edge-view-o7akvbpB.js → workflow-data-edge-view-BpGLV-at.js} +2 -2
  872. package/dist/{workflow-data-edge-view-o7akvbpB.js.map → workflow-data-edge-view-BpGLV-at.js.map} +1 -1
  873. package/dist/{workflow-debug-controls-Bcb4vcek.cjs → workflow-debug-controls-VbxiluNZ.cjs} +3 -3
  874. package/dist/{workflow-debug-controls-Bcb4vcek.cjs.map → workflow-debug-controls-VbxiluNZ.cjs.map} +1 -1
  875. package/dist/{workflow-debug-controls-DULCFa4s.js → workflow-debug-controls-tty6gLX2.js} +3 -3
  876. package/dist/{workflow-debug-controls-DULCFa4s.js.map → workflow-debug-controls-tty6gLX2.js.map} +1 -1
  877. package/dist/{workflow-edge-data-button-CX-eSbSB.cjs → workflow-edge-data-button-BOVRo4xO.cjs} +4 -4
  878. package/dist/{workflow-edge-data-button-CX-eSbSB.cjs.map → workflow-edge-data-button-BOVRo4xO.cjs.map} +1 -1
  879. package/dist/{workflow-edge-data-button-BuZzeN2n.js → workflow-edge-data-button-C6eyWbcG.js} +4 -4
  880. package/dist/{workflow-edge-data-button-BuZzeN2n.js.map → workflow-edge-data-button-C6eyWbcG.js.map} +1 -1
  881. package/dist/{workflow-step-action-Cf_XmOwj.js → workflow-step-action-B3coZwPr.js} +3 -3
  882. package/dist/{workflow-step-action-Cf_XmOwj.js.map → workflow-step-action-B3coZwPr.js.map} +1 -1
  883. package/dist/{workflow-step-action-JMkWtObA.cjs → workflow-step-action-COOlMQGX.cjs} +3 -3
  884. package/dist/{workflow-step-action-JMkWtObA.cjs.map → workflow-step-action-COOlMQGX.cjs.map} +1 -1
  885. package/package.json +10 -10
  886. package/theme/colors.css +66 -66
  887. package/theme/data-viz.css +3 -3
  888. package/theme/status.css +89 -71
  889. package/theme/surfaces.css +4 -1
  890. package/dist/Badge-H8K5WrXg.cjs.map +0 -1
  891. package/dist/Badge-Q_pCeeGW.js.map +0 -1
  892. package/dist/Button-BnmR2HRc.cjs.map +0 -1
  893. package/dist/Button-C6eUqcPI.js.map +0 -1
  894. package/dist/EmptyState-CJ5KC4Db.cjs.map +0 -1
  895. package/dist/EmptyState-CynkaZd1.js.map +0 -1
  896. package/dist/activity-8egTNbaI.cjs.map +0 -1
  897. package/dist/activity-Duth8KP_.js.map +0 -1
  898. package/dist/ask-user-Crg1O-o6.js.map +0 -1
  899. package/dist/ask-user-DJXmLJzy.cjs.map +0 -1
  900. package/dist/code-editor-BXchPl_F.cjs.map +0 -1
  901. package/dist/code-editor-Cltwid7c.js.map +0 -1
  902. package/dist/data-code-section-Bd2Xnckz.js.map +0 -1
  903. package/dist/data-code-section-D5b6_jcB.cjs.map +0 -1
  904. package/dist/field-block-BIDi9Bvc.cjs.map +0 -1
  905. package/dist/field-block-DpejZ6U6.js.map +0 -1
  906. package/dist/metrics-card-CloSmyRQ.js.map +0 -1
  907. package/dist/metrics-card-HmQJHDNa.cjs.map +0 -1
  908. package/dist/metrics-kpi-card-CW24YjZp.cjs.map +0 -1
  909. package/dist/metrics-kpi-card-DLDT28IB.js.map +0 -1
  910. package/dist/notification-activity-B1_2BPe_.js.map +0 -1
  911. package/dist/notification-activity-BAn2fhYd.cjs.map +0 -1
  912. package/dist/plan-DJfH1c_u.js.map +0 -1
  913. package/dist/plan-ZKAT5frg.cjs.map +0 -1
  914. package/dist/sankey-chart-D-xMiO2u.js.map +0 -1
  915. package/dist/sankey-chart-S7iF7d0E.cjs.map +0 -1
  916. package/dist/settings-row-2hq9Ww8Z.js.map +0 -1
  917. package/dist/settings-row-BMRADph-.cjs.map +0 -1
  918. package/dist/tabs-root-4vL8SHCO.js.map +0 -1
  919. package/dist/tabs-root-BqC8X_h6.cjs.map +0 -1
  920. package/dist/tones-BRAQR5Yb.cjs.map +0 -1
  921. package/dist/tones-DVtXIMPY.js.map +0 -1
  922. package/dist/tool-approval-BAER9nxR.cjs.map +0 -1
  923. package/dist/tool-approval-xZvYiuBP.js.map +0 -1
  924. package/dist/tool-call-group-9Dtupqev.cjs.map +0 -1
  925. package/dist/tool-call-group-DJX7eUYY.js.map +0 -1
  926. package/dist/tool-call-output-DEoCE_Xn.js.map +0 -1
  927. package/dist/tool-call-output-Dl4sVfCy.cjs.map +0 -1
  928. package/dist/tool-card-BA1YcDoS.js.map +0 -1
  929. package/dist/tool-card-DRqhTx-u.cjs.map +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const React = require('react');
5
- const Badge = require('./Badge-H8K5WrXg.cjs');
5
+ const Badge = require('./Badge-D3EctKQo.cjs');
6
6
  const tooltip = require('./tooltip-DIZ5oqjV.cjs');
7
7
  const primitives_transitions = require('./primitives/transitions.cjs.js');
8
8
  const utils_cn = require('./cn-DG0X1KEP.cjs');
@@ -117,4 +117,4 @@ function RelativeTimestamp({ value, label, className }) {
117
117
  }
118
118
 
119
119
  exports.RelativeTimestamp = RelativeTimestamp;
120
- //# sourceMappingURL=relative-timestamp-D-IvjsVb.cjs.map
120
+ //# sourceMappingURL=relative-timestamp-BlmN8Vjn.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"relative-timestamp-D-IvjsVb.cjs","sources":["../src/ds/components/RelativeTimestamp/relative-timestamp.tsx"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\nimport { formatDate, toDate } from '@/utils/date-format';\nimport type { DateInput } from '@/utils/date-format';\nimport { formatRelativeTime } from '@/utils/relative-time';\n\nexport interface RelativeTimestampProps {\n value: DateInput;\n label?: string;\n className?: string;\n}\n\nconst listeners = new Set<() => void>();\nlet ticker: ReturnType<typeof setInterval> | undefined;\nlet now = Date.now();\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n if (!ticker) {\n now = Date.now();\n ticker = setInterval(() => {\n now = Date.now();\n listeners.forEach(notify => notify());\n }, 1000);\n }\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n clearInterval(ticker);\n ticker = undefined;\n }\n };\n}\n\nfunction useNow() {\n const read = () => (ticker ? now : Date.now());\n return useSyncExternalStore(subscribe, read, read);\n}\n\nconst SINCE_UNITS = [\n ['day', 86_400_000],\n ['hour', 3_600_000],\n ['minute', 60_000],\n ['second', 1_000],\n] as const;\n\nfunction formatUnit(count: number, unit: (typeof SINCE_UNITS)[number][0]) {\n return new Intl.NumberFormat(undefined, { style: 'unit', unit, unitDisplay: 'long' }).format(count);\n}\n\nfunction formatSince(date: Date, at: number) {\n const diff = at - date.getTime();\n let rest = Math.abs(diff);\n const parts: string[] = [];\n for (const [unit, size] of SINCE_UNITS) {\n const count = Math.floor(rest / size);\n rest %= size;\n if (parts.length > 0) {\n if (count > 0) parts.push(formatUnit(count, unit));\n break;\n }\n if (count > 0 || unit === 'second') parts.push(formatUnit(count, unit));\n }\n const label = parts.join(' ');\n return diff < 0 ? `${label} from now` : `${label} ago`;\n}\n\nfunction Relative({ date }: { date: Date }) {\n return <>{formatRelativeTime(date, { now: useNow() })}</>;\n}\n\nfunction Since({ date }: { date: Date }) {\n return <>{formatSince(date, useNow())}</>;\n}\n\nfunction zoneName(date: Date, timeZone?: string) {\n return new Intl.DateTimeFormat(undefined, { timeZone, timeZoneName: 'short' })\n .formatToParts(date)\n .find(part => part.type === 'timeZoneName')?.value;\n}\n\nfunction zoneRow(date: Date, timeZone?: string) {\n return {\n zone: zoneName(date, timeZone) ?? 'Local',\n day: new Intl.DateTimeFormat(undefined, { timeZone, month: 'short', day: 'numeric', year: 'numeric' }).format(date),\n time: new Intl.DateTimeFormat(undefined, {\n timeZone,\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n }).format(date),\n };\n}\n\nexport function RelativeTimestamp({ value, label, className }: RelativeTimestampProps) {\n const date = toDate(value);\n if (!date) return null;\n\n const local = zoneRow(date);\n const rows = local.zone === 'UTC' ? [local] : [local, zoneRow(date, 'UTC')];\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <time\n dateTime={date.toISOString()}\n tabIndex={0}\n className={cn('rounded-sm font-mono whitespace-nowrap tabular-nums', focusRing, className)}\n />\n }\n >\n <span aria-hidden=\"true\">\n <Relative date={date} />\n </span>\n <span className=\"sr-only\">{[label, formatDate(date, 'date-time-seconds')].filter(Boolean).join(' ')}</span>\n </TooltipTrigger>\n <TooltipContent>\n <span className=\"text-muted-foreground\">\n {label ? `${label} ` : null}\n <Since date={date} />\n </span>\n <table className=\"mt-1.5 border-t border-border font-mono tabular-nums\">\n <tbody>\n {rows.map(row => (\n <tr key={row.zone}>\n <td className=\"pt-1.5 pr-3\">\n <Badge size=\"xs\">{row.zone}</Badge>\n </td>\n <td className=\"pt-1.5 pr-3\">{row.day}</td>\n <td className=\"pt-1.5 text-right\">{row.time}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </TooltipContent>\n </Tooltip>\n );\n}\n"],"names":["useSyncExternalStore","jsx","Fragment","toDate","Tooltip","jsxs","TooltipTrigger","cn","focusRing","formatDate","TooltipContent","Badge"],"mappings":"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"}
1
+ {"version":3,"file":"relative-timestamp-BlmN8Vjn.cjs","sources":["../src/ds/components/RelativeTimestamp/relative-timestamp.tsx"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\nimport { formatDate, toDate } from '@/utils/date-format';\nimport type { DateInput } from '@/utils/date-format';\nimport { formatRelativeTime } from '@/utils/relative-time';\n\nexport interface RelativeTimestampProps {\n value: DateInput;\n label?: string;\n className?: string;\n}\n\nconst listeners = new Set<() => void>();\nlet ticker: ReturnType<typeof setInterval> | undefined;\nlet now = Date.now();\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n if (!ticker) {\n now = Date.now();\n ticker = setInterval(() => {\n now = Date.now();\n listeners.forEach(notify => notify());\n }, 1000);\n }\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n clearInterval(ticker);\n ticker = undefined;\n }\n };\n}\n\nfunction useNow() {\n const read = () => (ticker ? now : Date.now());\n return useSyncExternalStore(subscribe, read, read);\n}\n\nconst SINCE_UNITS = [\n ['day', 86_400_000],\n ['hour', 3_600_000],\n ['minute', 60_000],\n ['second', 1_000],\n] as const;\n\nfunction formatUnit(count: number, unit: (typeof SINCE_UNITS)[number][0]) {\n return new Intl.NumberFormat(undefined, { style: 'unit', unit, unitDisplay: 'long' }).format(count);\n}\n\nfunction formatSince(date: Date, at: number) {\n const diff = at - date.getTime();\n let rest = Math.abs(diff);\n const parts: string[] = [];\n for (const [unit, size] of SINCE_UNITS) {\n const count = Math.floor(rest / size);\n rest %= size;\n if (parts.length > 0) {\n if (count > 0) parts.push(formatUnit(count, unit));\n break;\n }\n if (count > 0 || unit === 'second') parts.push(formatUnit(count, unit));\n }\n const label = parts.join(' ');\n return diff < 0 ? `${label} from now` : `${label} ago`;\n}\n\nfunction Relative({ date }: { date: Date }) {\n return <>{formatRelativeTime(date, { now: useNow() })}</>;\n}\n\nfunction Since({ date }: { date: Date }) {\n return <>{formatSince(date, useNow())}</>;\n}\n\nfunction zoneName(date: Date, timeZone?: string) {\n return new Intl.DateTimeFormat(undefined, { timeZone, timeZoneName: 'short' })\n .formatToParts(date)\n .find(part => part.type === 'timeZoneName')?.value;\n}\n\nfunction zoneRow(date: Date, timeZone?: string) {\n return {\n zone: zoneName(date, timeZone) ?? 'Local',\n day: new Intl.DateTimeFormat(undefined, { timeZone, month: 'short', day: 'numeric', year: 'numeric' }).format(date),\n time: new Intl.DateTimeFormat(undefined, {\n timeZone,\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n }).format(date),\n };\n}\n\nexport function RelativeTimestamp({ value, label, className }: RelativeTimestampProps) {\n const date = toDate(value);\n if (!date) return null;\n\n const local = zoneRow(date);\n const rows = local.zone === 'UTC' ? [local] : [local, zoneRow(date, 'UTC')];\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <time\n dateTime={date.toISOString()}\n tabIndex={0}\n className={cn('rounded-sm font-mono whitespace-nowrap tabular-nums', focusRing, className)}\n />\n }\n >\n <span aria-hidden=\"true\">\n <Relative date={date} />\n </span>\n <span className=\"sr-only\">{[label, formatDate(date, 'date-time-seconds')].filter(Boolean).join(' ')}</span>\n </TooltipTrigger>\n <TooltipContent>\n <span className=\"text-muted-foreground\">\n {label ? `${label} ` : null}\n <Since date={date} />\n </span>\n <table className=\"mt-1.5 border-t border-border font-mono tabular-nums\">\n <tbody>\n {rows.map(row => (\n <tr key={row.zone}>\n <td className=\"pt-1.5 pr-3\">\n <Badge size=\"xs\">{row.zone}</Badge>\n </td>\n <td className=\"pt-1.5 pr-3\">{row.day}</td>\n <td className=\"pt-1.5 text-right\">{row.time}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </TooltipContent>\n </Tooltip>\n );\n}\n"],"names":["useSyncExternalStore","jsx","Fragment","toDate","Tooltip","jsxs","TooltipTrigger","cn","focusRing","formatDate","TooltipContent","Badge"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useSyncExternalStore } from 'react';
3
- import { B as Badge } from './Badge-Q_pCeeGW.js';
3
+ import { B as Badge } from './Badge-DmOqFpXW.js';
4
4
  import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from './tooltip-DsQPiynb.js';
5
5
  import { focusRing } from './primitives/transitions.es.js';
6
6
  import { c as cn } from './cn-65Adrsfj.js';
@@ -115,4 +115,4 @@ function RelativeTimestamp({ value, label, className }) {
115
115
  }
116
116
 
117
117
  export { RelativeTimestamp as R };
118
- //# sourceMappingURL=relative-timestamp-wERh5vUE.js.map
118
+ //# sourceMappingURL=relative-timestamp-Cnp4VeLp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relative-timestamp-wERh5vUE.js","sources":["../src/ds/components/RelativeTimestamp/relative-timestamp.tsx"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\nimport { formatDate, toDate } from '@/utils/date-format';\nimport type { DateInput } from '@/utils/date-format';\nimport { formatRelativeTime } from '@/utils/relative-time';\n\nexport interface RelativeTimestampProps {\n value: DateInput;\n label?: string;\n className?: string;\n}\n\nconst listeners = new Set<() => void>();\nlet ticker: ReturnType<typeof setInterval> | undefined;\nlet now = Date.now();\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n if (!ticker) {\n now = Date.now();\n ticker = setInterval(() => {\n now = Date.now();\n listeners.forEach(notify => notify());\n }, 1000);\n }\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n clearInterval(ticker);\n ticker = undefined;\n }\n };\n}\n\nfunction useNow() {\n const read = () => (ticker ? now : Date.now());\n return useSyncExternalStore(subscribe, read, read);\n}\n\nconst SINCE_UNITS = [\n ['day', 86_400_000],\n ['hour', 3_600_000],\n ['minute', 60_000],\n ['second', 1_000],\n] as const;\n\nfunction formatUnit(count: number, unit: (typeof SINCE_UNITS)[number][0]) {\n return new Intl.NumberFormat(undefined, { style: 'unit', unit, unitDisplay: 'long' }).format(count);\n}\n\nfunction formatSince(date: Date, at: number) {\n const diff = at - date.getTime();\n let rest = Math.abs(diff);\n const parts: string[] = [];\n for (const [unit, size] of SINCE_UNITS) {\n const count = Math.floor(rest / size);\n rest %= size;\n if (parts.length > 0) {\n if (count > 0) parts.push(formatUnit(count, unit));\n break;\n }\n if (count > 0 || unit === 'second') parts.push(formatUnit(count, unit));\n }\n const label = parts.join(' ');\n return diff < 0 ? `${label} from now` : `${label} ago`;\n}\n\nfunction Relative({ date }: { date: Date }) {\n return <>{formatRelativeTime(date, { now: useNow() })}</>;\n}\n\nfunction Since({ date }: { date: Date }) {\n return <>{formatSince(date, useNow())}</>;\n}\n\nfunction zoneName(date: Date, timeZone?: string) {\n return new Intl.DateTimeFormat(undefined, { timeZone, timeZoneName: 'short' })\n .formatToParts(date)\n .find(part => part.type === 'timeZoneName')?.value;\n}\n\nfunction zoneRow(date: Date, timeZone?: string) {\n return {\n zone: zoneName(date, timeZone) ?? 'Local',\n day: new Intl.DateTimeFormat(undefined, { timeZone, month: 'short', day: 'numeric', year: 'numeric' }).format(date),\n time: new Intl.DateTimeFormat(undefined, {\n timeZone,\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n }).format(date),\n };\n}\n\nexport function RelativeTimestamp({ value, label, className }: RelativeTimestampProps) {\n const date = toDate(value);\n if (!date) return null;\n\n const local = zoneRow(date);\n const rows = local.zone === 'UTC' ? [local] : [local, zoneRow(date, 'UTC')];\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <time\n dateTime={date.toISOString()}\n tabIndex={0}\n className={cn('rounded-sm font-mono whitespace-nowrap tabular-nums', focusRing, className)}\n />\n }\n >\n <span aria-hidden=\"true\">\n <Relative date={date} />\n </span>\n <span className=\"sr-only\">{[label, formatDate(date, 'date-time-seconds')].filter(Boolean).join(' ')}</span>\n </TooltipTrigger>\n <TooltipContent>\n <span className=\"text-muted-foreground\">\n {label ? `${label} ` : null}\n <Since date={date} />\n </span>\n <table className=\"mt-1.5 border-t border-border font-mono tabular-nums\">\n <tbody>\n {rows.map(row => (\n <tr key={row.zone}>\n <td className=\"pt-1.5 pr-3\">\n <Badge size=\"xs\">{row.zone}</Badge>\n </td>\n <td className=\"pt-1.5 pr-3\">{row.day}</td>\n <td className=\"pt-1.5 text-right\">{row.time}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </TooltipContent>\n </Tooltip>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relative-timestamp-Cnp4VeLp.js","sources":["../src/ds/components/RelativeTimestamp/relative-timestamp.tsx"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\nimport { formatDate, toDate } from '@/utils/date-format';\nimport type { DateInput } from '@/utils/date-format';\nimport { formatRelativeTime } from '@/utils/relative-time';\n\nexport interface RelativeTimestampProps {\n value: DateInput;\n label?: string;\n className?: string;\n}\n\nconst listeners = new Set<() => void>();\nlet ticker: ReturnType<typeof setInterval> | undefined;\nlet now = Date.now();\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n if (!ticker) {\n now = Date.now();\n ticker = setInterval(() => {\n now = Date.now();\n listeners.forEach(notify => notify());\n }, 1000);\n }\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n clearInterval(ticker);\n ticker = undefined;\n }\n };\n}\n\nfunction useNow() {\n const read = () => (ticker ? now : Date.now());\n return useSyncExternalStore(subscribe, read, read);\n}\n\nconst SINCE_UNITS = [\n ['day', 86_400_000],\n ['hour', 3_600_000],\n ['minute', 60_000],\n ['second', 1_000],\n] as const;\n\nfunction formatUnit(count: number, unit: (typeof SINCE_UNITS)[number][0]) {\n return new Intl.NumberFormat(undefined, { style: 'unit', unit, unitDisplay: 'long' }).format(count);\n}\n\nfunction formatSince(date: Date, at: number) {\n const diff = at - date.getTime();\n let rest = Math.abs(diff);\n const parts: string[] = [];\n for (const [unit, size] of SINCE_UNITS) {\n const count = Math.floor(rest / size);\n rest %= size;\n if (parts.length > 0) {\n if (count > 0) parts.push(formatUnit(count, unit));\n break;\n }\n if (count > 0 || unit === 'second') parts.push(formatUnit(count, unit));\n }\n const label = parts.join(' ');\n return diff < 0 ? `${label} from now` : `${label} ago`;\n}\n\nfunction Relative({ date }: { date: Date }) {\n return <>{formatRelativeTime(date, { now: useNow() })}</>;\n}\n\nfunction Since({ date }: { date: Date }) {\n return <>{formatSince(date, useNow())}</>;\n}\n\nfunction zoneName(date: Date, timeZone?: string) {\n return new Intl.DateTimeFormat(undefined, { timeZone, timeZoneName: 'short' })\n .formatToParts(date)\n .find(part => part.type === 'timeZoneName')?.value;\n}\n\nfunction zoneRow(date: Date, timeZone?: string) {\n return {\n zone: zoneName(date, timeZone) ?? 'Local',\n day: new Intl.DateTimeFormat(undefined, { timeZone, month: 'short', day: 'numeric', year: 'numeric' }).format(date),\n time: new Intl.DateTimeFormat(undefined, {\n timeZone,\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n }).format(date),\n };\n}\n\nexport function RelativeTimestamp({ value, label, className }: RelativeTimestampProps) {\n const date = toDate(value);\n if (!date) return null;\n\n const local = zoneRow(date);\n const rows = local.zone === 'UTC' ? [local] : [local, zoneRow(date, 'UTC')];\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <time\n dateTime={date.toISOString()}\n tabIndex={0}\n className={cn('rounded-sm font-mono whitespace-nowrap tabular-nums', focusRing, className)}\n />\n }\n >\n <span aria-hidden=\"true\">\n <Relative date={date} />\n </span>\n <span className=\"sr-only\">{[label, formatDate(date, 'date-time-seconds')].filter(Boolean).join(' ')}</span>\n </TooltipTrigger>\n <TooltipContent>\n <span className=\"text-muted-foreground\">\n {label ? `${label} ` : null}\n <Since date={date} />\n </span>\n <table className=\"mt-1.5 border-t border-border font-mono tabular-nums\">\n <tbody>\n {rows.map(row => (\n <tr key={row.zone}>\n <td className=\"pt-1.5 pr-3\">\n <Badge size=\"xs\">{row.zone}</Badge>\n </td>\n <td className=\"pt-1.5 pr-3\">{row.day}</td>\n <td className=\"pt-1.5 text-right\">{row.time}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </TooltipContent>\n </Tooltip>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const resize_panelEdgeIcon = require('./panel-edge-icon.cjs.js');
7
7
  const resize_panelIconButton = require('./panel-icon-button.cjs.js');
8
- const drawer = require('../drawer-d81cZiSV.cjs');
8
+ const drawer = require('../drawer-DnXudVbm.cjs');
9
9
  const icons_Icon = require('../icons/Icon.cjs.js');
10
10
  require('lucide-react');
11
11
  const utils_cn = require('../cn-DG0X1KEP.cjs');
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { PanelEdgeIcon } from './panel-edge-icon.es.js';
3
3
  import { panelIconButtonClass } from './panel-icon-button.es.js';
4
- import { D as Drawer, p as DrawerTrigger, l as DrawerPortal, a as DrawerBackdrop, q as DrawerViewport, k as DrawerPopup, o as DrawerTitle } from '../drawer-DXf50w71.js';
4
+ import { D as Drawer, p as DrawerTrigger, l as DrawerPortal, a as DrawerBackdrop, q as DrawerViewport, k as DrawerPopup, o as DrawerTitle } from '../drawer-BI3B_krl.js';
5
5
  import { Icon } from '../icons/Icon.es.js';
6
6
  import 'lucide-react';
7
7
  import { c as cn } from '../cn-65Adrsfj.js';
@@ -237,7 +237,7 @@ const sankeySeriesColors = [
237
237
  "var(--chart-purple)",
238
238
  "var(--chart-pink)",
239
239
  "var(--chart-red)",
240
- "var(--chart-yellow)",
240
+ "var(--chart-amber)",
241
241
  "var(--chart-blue-deep)"
242
242
  ];
243
243
  function buildSankeyColorMap(names) {
@@ -935,4 +935,4 @@ function SankeyLink({
935
935
  }
936
936
 
937
937
  export { Sankey as S, SankeyChart as a, buildSankeyChartGraph as b, buildSankeyColorMap as c, getSankeyChartNodeSelection as d, getSankeyChartNodeWeights as e, getSankeyChartValue as f, getSankeyChartCurveSelection as g, reorderSankeyChartColumns as r, sankeySeriesColors as s, useSankey as u };
938
- //# sourceMappingURL=sankey-chart-D-xMiO2u.js.map
938
+ //# sourceMappingURL=sankey-chart-D4Idjtth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sankey-chart-D4Idjtth.js","sources":["../src/ds/components/SankeyChart/sankey-chart-utils.ts","../src/ds/components/SankeyChart/sankeyColor.ts","../src/ds/components/SankeyChart/sankey-context.tsx","../src/ds/components/SankeyChart/use-sankey-hover-tooltip.ts","../src/ds/components/SankeyChart/sankey-portal-tooltip.tsx","../src/ds/components/SankeyChart/use-sankey-chart-measurements.ts","../src/ds/components/SankeyChart/use-sankey-geometry-transition.ts","../src/ds/components/SankeyChart/sankey-chart.tsx"],"sourcesContent":["export type SankeyChartRecord = Record<string, unknown>;\n\nexport type SankeyChartColumn = {\n id: string;\n label: string;\n};\n\nexport type SankeyChartNode = {\n id: string;\n name: string;\n label: string;\n column: SankeyChartColumn;\n value: string | number;\n displayValue?: number;\n};\n\nexport type SankeyChartLink = {\n id: string;\n source: number;\n target: number;\n value: number;\n displayValue: number;\n sourceNode: SankeyChartNode;\n targetNode: SankeyChartNode;\n records: Array<SankeyChartRecord>;\n};\n\nexport type SankeyChartGraph = {\n nodes: Array<SankeyChartNode>;\n links: Array<SankeyChartLink>;\n};\n\nexport type FixedSankeyNodeGeometry = {\n x: number;\n centerY: number;\n y: number;\n height: number;\n};\n\nexport type FixedSankeyLinkGeometry = {\n sourceX: number;\n targetX: number;\n sourceY: number;\n targetY: number;\n sourceWidth: number;\n targetWidth: number;\n};\n\nexport type FixedSankeyGeometry = {\n nodes: Map<string, FixedSankeyNodeGeometry>;\n links: Map<string, FixedSankeyLinkGeometry>;\n};\n\nexport type SankeyChartNodeSelection = {\n column: SankeyChartColumn;\n value: string | number;\n};\n\nexport type SankeyChartCurveSelection = {\n source: {\n column: SankeyChartColumn;\n value: string | number;\n };\n target: {\n column: SankeyChartColumn;\n value: string | number;\n };\n records: Array<SankeyChartRecord>;\n};\n\nconst EMPTY_GRAPH: SankeyChartGraph = { nodes: [], links: [] };\n\nexport function getSankeyChartValue(value: unknown): string | number | undefined {\n if (typeof value === 'string') {\n const trimmedValue = value.trim();\n return trimmedValue.length > 0 ? trimmedValue : undefined;\n }\n\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n\n return undefined;\n}\n\nexport function reorderSankeyChartColumns(\n columns: Array<SankeyChartColumn>,\n startIndex: number,\n endIndex: number,\n): Array<SankeyChartColumn> {\n if (\n startIndex === endIndex ||\n startIndex < 0 ||\n endIndex < 0 ||\n startIndex >= columns.length ||\n endIndex >= columns.length\n ) {\n return columns;\n }\n\n const reorderedColumns = [...columns];\n const [movedColumn] = reorderedColumns.splice(startIndex, 1);\n if (!movedColumn) return columns;\n reorderedColumns.splice(endIndex, 0, movedColumn);\n return reorderedColumns;\n}\n\nexport function buildSankeyChartGraph(\n data: Array<SankeyChartRecord>,\n columns: Array<SankeyChartColumn>,\n getRecordWeight: (record: SankeyChartRecord) => number = () => 1,\n getRecordNodeId?: (record: SankeyChartRecord, column: SankeyChartColumn) => string,\n getRecordNodeLabel?: (record: SankeyChartRecord, column: SankeyChartColumn) => string,\n getRecordNodeValue?: (record: SankeyChartRecord, column: SankeyChartColumn) => number,\n getRecordLayoutWeight?: (record: SankeyChartRecord) => number,\n): SankeyChartGraph {\n if (columns.length < 2 || data.length === 0) return EMPTY_GRAPH;\n\n const nodes: Array<SankeyChartNode> = [];\n const nodeIndexes = new Map<string, number>();\n const linksById = new Map<string, SankeyChartLink>();\n\n const getNode = (\n column: SankeyChartColumn,\n value: string | number,\n label: string,\n displayValue: number | undefined,\n ): { node: SankeyChartNode; index: number } => {\n const id = createNodeId(column.id, value);\n const existingIndex = nodeIndexes.get(id);\n const existingNode = existingIndex === undefined ? undefined : nodes[existingIndex];\n if (existingIndex !== undefined && existingNode) return { node: existingNode, index: existingIndex };\n\n const node: SankeyChartNode = { id, name: String(value), label, column, value, displayValue };\n const index = nodes.length;\n nodes.push(node);\n nodeIndexes.set(id, index);\n return { node, index };\n };\n\n for (let columnIndex = 0; columnIndex < columns.length - 1; columnIndex += 1) {\n const sourceColumn = columns[columnIndex];\n const targetColumn = columns[columnIndex + 1];\n if (!sourceColumn || !targetColumn) continue;\n\n for (const record of data) {\n const displayWeight = getRecordWeight(record);\n const layoutWeight = getRecordLayoutWeight?.(record) ?? displayWeight;\n if (!Number.isFinite(displayWeight) || displayWeight < 0 || !Number.isFinite(layoutWeight) || layoutWeight < 0) {\n continue;\n }\n\n const sourceRecordValue = getSankeyChartValue(record[sourceColumn.id]);\n const targetRecordValue = getSankeyChartValue(record[targetColumn.id]);\n if (sourceRecordValue === undefined || targetRecordValue === undefined) continue;\n\n const sourceValue = getRecordNodeId\n ? getSankeyChartValue(getRecordNodeId(record, sourceColumn))\n : sourceRecordValue;\n const targetValue = getRecordNodeId\n ? getSankeyChartValue(getRecordNodeId(record, targetColumn))\n : targetRecordValue;\n if (sourceValue === undefined || targetValue === undefined) continue;\n\n const sourceLabel = getRecordNodeLabel?.(record, sourceColumn) ?? String(sourceRecordValue);\n const targetLabel = getRecordNodeLabel?.(record, targetColumn) ?? String(targetRecordValue);\n const sourceDisplayValue = getRecordNodeValue?.(record, sourceColumn);\n const targetDisplayValue = getRecordNodeValue?.(record, targetColumn);\n const source = getNode(\n sourceColumn,\n sourceValue,\n sourceLabel,\n sourceDisplayValue !== undefined && Number.isFinite(sourceDisplayValue) && sourceDisplayValue >= 0\n ? sourceDisplayValue\n : undefined,\n );\n const target = getNode(\n targetColumn,\n targetValue,\n targetLabel,\n targetDisplayValue !== undefined && Number.isFinite(targetDisplayValue) && targetDisplayValue >= 0\n ? targetDisplayValue\n : undefined,\n );\n const id = `${source.node.id}->${target.node.id}`;\n const existingLink = linksById.get(id);\n\n if (existingLink) {\n existingLink.value += layoutWeight;\n existingLink.displayValue += displayWeight;\n existingLink.records.push(record);\n } else {\n linksById.set(id, {\n id,\n source: source.index,\n target: target.index,\n value: layoutWeight,\n displayValue: displayWeight,\n sourceNode: source.node,\n targetNode: target.node,\n records: [record],\n });\n }\n }\n }\n\n return { nodes, links: [...linksById.values()] };\n}\n\nexport const SANKEY_NODE_WIDTH = 7;\n\n// mono faces we ship advance at ~0.6em — 0.62 biases toward truncating early\nconst LABEL_CHARACTER_WIDTH_RATIO = 0.62;\nconst LABEL_GUTTER = 16;\nconst LABEL_ELLIPSIS = '…';\n\nexport type SankeyLabelWidths = {\n centered: number;\n edge: number;\n};\n\nexport function getSankeyLabelWidths({\n chartWidth,\n columnCount,\n marginLeft,\n marginRight,\n}: {\n chartWidth: number;\n columnCount: number;\n marginLeft: number;\n marginRight: number;\n}): SankeyLabelWidths {\n if (chartWidth <= 0 || columnCount < 2) {\n return { centered: Number.POSITIVE_INFINITY, edge: Number.POSITIVE_INFINITY };\n }\n\n const columnPitch = (chartWidth - marginLeft - marginRight - SANKEY_NODE_WIDTH) / (columnCount - 1);\n const centered = Math.max(0, columnPitch - LABEL_GUTTER);\n // edge columns anchor at start/end, so their label spreads toward one neighbour instead of two\n const edge = Math.max(0, columnPitch + SANKEY_NODE_WIDTH / 2 - LABEL_GUTTER - centered / 2);\n\n return { centered, edge };\n}\n\nexport function truncateSankeyLabel(\n label: string,\n {\n fontSize,\n maxWidth,\n maxCharacters = Number.POSITIVE_INFINITY,\n }: { fontSize: number; maxWidth: number; maxCharacters?: number },\n): string {\n const widthLimit = Number.isFinite(maxWidth)\n ? Math.floor(maxWidth / (fontSize * LABEL_CHARACTER_WIDTH_RATIO))\n : Number.POSITIVE_INFINITY;\n const limit = Math.min(widthLimit, maxCharacters);\n\n if (label.length <= limit) return label;\n if (limit <= 1) return LABEL_ELLIPSIS;\n\n return `${label.slice(0, limit - 1).trimEnd()}${LABEL_ELLIPSIS}`;\n}\n\nexport function buildFixedSankeyGeometry(\n graph: SankeyChartGraph,\n {\n top,\n bottom,\n left,\n right,\n nodePadding,\n }: { top: number; bottom: number; left: number; right: number; nodePadding: number },\n): FixedSankeyGeometry {\n const nodes = new Map<string, FixedSankeyNodeGeometry>();\n const nodesByColumn = new Map<string, SankeyChartNode[]>();\n const currentNodeWeights = getSankeyChartCurrentNodeWeights(graph);\n\n for (const node of graph.nodes) {\n const columnNodes = nodesByColumn.get(node.column.id) ?? [];\n columnNodes.push(node);\n nodesByColumn.set(node.column.id, columnNodes);\n }\n\n const columns = [...nodesByColumn.values()];\n const slotHeights = columns.map(columnNodes =>\n Math.max(0, (bottom - top - nodePadding * Math.max(0, columnNodes.length - 1)) / columnNodes.length),\n );\n const maximumNodeHeight = Math.min(...slotHeights) * 0.6;\n\n columns.forEach((columnNodes, columnIndex) => {\n const slotHeight = slotHeights[columnIndex] ?? 0;\n const columnTotal = columnNodes.reduce(\n (total, node) => total + (node.displayValue ?? currentNodeWeights.get(node.id) ?? 0),\n 0,\n );\n const x = columns.length > 1 ? left + ((right - left) * columnIndex) / (columns.length - 1) : left;\n\n columnNodes.forEach((node, index) => {\n const value = node.displayValue ?? currentNodeWeights.get(node.id) ?? 0;\n const centerY = top + index * (slotHeight + nodePadding) + slotHeight / 2;\n const height = columnTotal > 0 ? maximumNodeHeight * (value / columnTotal) : 0;\n nodes.set(node.id, { x, centerY, y: centerY - height / 2, height });\n });\n });\n\n const links = new Map<string, FixedSankeyLinkGeometry>();\n const outgoingTotals = new Map<string, number>();\n const incomingTotals = new Map<string, number>();\n for (const link of graph.links) {\n outgoingTotals.set(link.sourceNode.id, (outgoingTotals.get(link.sourceNode.id) ?? 0) + link.displayValue);\n incomingTotals.set(link.targetNode.id, (incomingTotals.get(link.targetNode.id) ?? 0) + link.displayValue);\n }\n const sourceOffsets = new Map([...nodes].map(([id, geometry]) => [id, geometry.y]));\n const targetOffsets = new Map([...nodes].map(([id, geometry]) => [id, geometry.y]));\n\n for (const link of graph.links) {\n const sourceGeometry = nodes.get(link.sourceNode.id);\n const targetGeometry = nodes.get(link.targetNode.id);\n if (!sourceGeometry || !targetGeometry) continue;\n const sourceTotal = outgoingTotals.get(link.sourceNode.id) ?? 0;\n const targetTotal = incomingTotals.get(link.targetNode.id) ?? 0;\n const sourceWidth = sourceTotal > 0 ? sourceGeometry.height * (link.displayValue / sourceTotal) : 0;\n const targetWidth = targetTotal > 0 ? targetGeometry.height * (link.displayValue / targetTotal) : 0;\n const sourceOffset = sourceOffsets.get(link.sourceNode.id) ?? sourceGeometry.y;\n const targetOffset = targetOffsets.get(link.targetNode.id) ?? targetGeometry.y;\n links.set(link.id, {\n // ribbons anchor to their own nodes' columns: depth-based layouts (like\n // the underlying recharts sankey) would otherwise stretch links of a\n // disconnected graph across the full chart width\n sourceX: sourceGeometry.x + SANKEY_NODE_WIDTH,\n targetX: targetGeometry.x,\n sourceY: sourceOffset + sourceWidth / 2,\n targetY: targetOffset + targetWidth / 2,\n sourceWidth,\n targetWidth,\n });\n sourceOffsets.set(link.sourceNode.id, sourceOffset + sourceWidth);\n targetOffsets.set(link.targetNode.id, targetOffset + targetWidth);\n }\n\n return { nodes, links };\n}\n\nexport function getSankeyChartNodeWeights(graph: SankeyChartGraph): Map<string, number> {\n const incomingWeights = new Map<string, number>();\n const outgoingWeights = new Map<string, number>();\n\n for (const link of graph.links) {\n outgoingWeights.set(link.sourceNode.id, (outgoingWeights.get(link.sourceNode.id) ?? 0) + link.value);\n incomingWeights.set(link.targetNode.id, (incomingWeights.get(link.targetNode.id) ?? 0) + link.value);\n }\n\n return new Map(\n graph.nodes.map(node => [node.id, Math.max(incomingWeights.get(node.id) ?? 0, outgoingWeights.get(node.id) ?? 0)]),\n );\n}\n\nfunction getSankeyChartCurrentNodeWeights(graph: SankeyChartGraph): Map<string, number> {\n const incomingWeights = new Map<string, number>();\n const outgoingWeights = new Map<string, number>();\n\n for (const link of graph.links) {\n outgoingWeights.set(link.sourceNode.id, (outgoingWeights.get(link.sourceNode.id) ?? 0) + link.displayValue);\n incomingWeights.set(link.targetNode.id, (incomingWeights.get(link.targetNode.id) ?? 0) + link.displayValue);\n }\n\n return new Map(\n graph.nodes.map(node => [node.id, Math.max(incomingWeights.get(node.id) ?? 0, outgoingWeights.get(node.id) ?? 0)]),\n );\n}\n\nexport function getSankeyChartCurveSelection(link: SankeyChartLink): SankeyChartCurveSelection {\n return {\n source: { column: link.sourceNode.column, value: link.sourceNode.value },\n target: { column: link.targetNode.column, value: link.targetNode.value },\n records: link.records,\n };\n}\n\nexport function getSankeyChartNodeSelection(node: SankeyChartNode): SankeyChartNodeSelection {\n return { column: node.column, value: node.value };\n}\n\nfunction createNodeId(columnId: string, value: string | number) {\n return JSON.stringify([columnId, typeof value, value]);\n}\n","import { hashLabel } from '@/lib/colors';\n\nexport const sankeySeriesColors: readonly string[] = [\n 'var(--chart-blue)',\n 'var(--chart-orange)',\n 'var(--chart-green)',\n 'var(--chart-purple)',\n 'var(--chart-pink)',\n 'var(--chart-red)',\n 'var(--chart-amber)',\n 'var(--chart-blue-deep)',\n];\n\nexport function buildSankeyColorMap(names: string[]) {\n const colors: Record<string, string> = {};\n for (const name of names) {\n colors[name] = sankeySeriesColors[hashLabel(name) % sankeySeriesColors.length] ?? 'var(--chart-blue)';\n }\n return colors;\n}\n","import { createContext, useContext, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { buildSankeyChartGraph, reorderSankeyChartColumns } from './sankey-chart-utils';\nimport type { SankeyChartColumn, SankeyChartGraph, SankeyChartRecord } from './sankey-chart-utils';\nimport { buildSankeyColorMap } from './sankeyColor';\n\nexport type SankeyProps = {\n data: Array<SankeyChartRecord>;\n columns: Array<SankeyChartColumn>;\n children: ReactNode;\n columnOrder?: Array<string>;\n onColumnOrderChange?: (columnOrder: Array<string>) => void;\n visibleColumnIds?: Array<string>;\n onVisibleColumnIdsChange?: (columnIds: Array<string>) => void;\n getRecordWeight?: (record: SankeyChartRecord) => number;\n getRecordLayoutWeight?: (record: SankeyChartRecord) => number;\n getRecordNodeId?: (record: SankeyChartRecord, column: SankeyChartColumn) => string;\n getRecordNodeLabel?: (record: SankeyChartRecord, column: SankeyChartColumn) => string;\n getRecordNodeValue?: (record: SankeyChartRecord, column: SankeyChartColumn) => number;\n getColumnColor?: (column: SankeyChartColumn) => string;\n};\n\nexport type SankeyControlColumn = SankeyChartColumn & {\n visible: boolean;\n};\n\nexport type SankeyControls = {\n columns: Array<SankeyControlColumn>;\n toggleColumn: (columnId: string) => void;\n reorderColumns: (sourceIndex: number, destinationIndex: number) => void;\n};\n\ntype SankeyRenderContext = {\n graph: SankeyChartGraph;\n enabledColumns: Array<SankeyChartColumn>;\n colorMap: Record<string, string>;\n usesFixedGeometry: boolean;\n};\n\nconst SankeyControlsContext = createContext<SankeyControls | undefined>(undefined);\nconst SankeyRenderContext = createContext<SankeyRenderContext | undefined>(undefined);\n\nexport function Sankey({\n data,\n columns,\n children,\n columnOrder,\n onColumnOrderChange,\n visibleColumnIds,\n onVisibleColumnIdsChange,\n getRecordWeight,\n getRecordLayoutWeight,\n getRecordNodeId,\n getRecordNodeLabel,\n getRecordNodeValue,\n getColumnColor,\n}: SankeyProps) {\n const columnIds = columns.map(column => column.id);\n const [internalOrder, setInternalOrder] = useState(columnIds);\n const [internalVisibleIds, setInternalVisibleIds] = useState(columnIds);\n const orderedColumns = orderColumns(columns, columnOrder ?? internalOrder);\n const visibleIds = new Set(visibleColumnIds ?? internalVisibleIds);\n const enabledColumns = orderedColumns.filter(column => visibleIds.has(column.id));\n const graph = buildSankeyChartGraph(\n data,\n enabledColumns,\n getRecordWeight,\n getRecordNodeId,\n getRecordNodeLabel,\n getRecordNodeValue,\n getRecordLayoutWeight,\n );\n const defaultColorMap = buildSankeyColorMap(graph.nodes.map(node => String(node.value)));\n const colorMap = Object.fromEntries(\n graph.nodes.map(node => [\n String(node.value),\n getColumnColor?.(node.column) ?? defaultColorMap[String(node.value)] ?? 'var(--chart-blue)',\n ]),\n );\n\n const setVisibleColumns = (nextIds: Array<string>) => {\n if (visibleColumnIds === undefined) setInternalVisibleIds(nextIds);\n onVisibleColumnIdsChange?.(nextIds);\n };\n\n const setColumnOrder = (nextOrder: Array<string>) => {\n if (columnOrder === undefined) setInternalOrder(nextOrder);\n onColumnOrderChange?.(nextOrder);\n };\n\n const toggleColumn = (columnId: string) => {\n const nextIds = visibleIds.has(columnId)\n ? orderedColumns.filter(column => visibleIds.has(column.id) && column.id !== columnId).map(column => column.id)\n : orderedColumns.filter(column => visibleIds.has(column.id) || column.id === columnId).map(column => column.id);\n setVisibleColumns(nextIds);\n };\n\n const reorderColumns = (sourceIndex: number, destinationIndex: number) => {\n const reorderedEnabled = reorderSankeyChartColumns(enabledColumns, sourceIndex, destinationIndex);\n const enabledIterator = reorderedEnabled[Symbol.iterator]();\n const nextColumns = orderedColumns.map(column =>\n visibleIds.has(column.id) ? (enabledIterator.next().value ?? column) : column,\n );\n setColumnOrder(nextColumns.map(column => column.id));\n };\n\n const controlColumns = orderedColumns.map(column => ({ ...column, visible: visibleIds.has(column.id) }));\n\n return (\n <SankeyControlsContext.Provider value={{ columns: controlColumns, toggleColumn, reorderColumns }}>\n <SankeyRenderContext.Provider\n value={{ graph, enabledColumns, colorMap, usesFixedGeometry: getRecordLayoutWeight !== undefined }}\n >\n {children}\n </SankeyRenderContext.Provider>\n </SankeyControlsContext.Provider>\n );\n}\n\n// Context providers and their hooks intentionally share this module.\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useSankey() {\n const context = useContext(SankeyControlsContext);\n if (!context) throw new Error('useSankey must be used within Sankey');\n return context;\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useSankeyRenderContext() {\n const context = useContext(SankeyRenderContext);\n if (!context) throw new Error('SankeyChart must be used within Sankey');\n return context;\n}\n\nfunction orderColumns(columns: Array<SankeyChartColumn>, order: Array<string>) {\n const positions = new Map(order.map((id, index) => [id, index]));\n return [...columns].sort(\n (left, right) => (positions.get(left.id) ?? columns.length) - (positions.get(right.id) ?? columns.length),\n );\n}\n","import { useId, useState } from 'react';\n\nexport type SankeyTooltipPosition = {\n left: number;\n top: number;\n placement: 'above' | 'below';\n};\n\nexport const SANKEY_TOOLTIP_MAX_WIDTH_PX = 320;\n\nconst TOOLTIP_TOP_FLIP_THRESHOLD = 120;\nconst TOOLTIP_EDGE_INSET = 16;\nconst TOOLTIP_RIGHT_INSET = SANKEY_TOOLTIP_MAX_WIDTH_PX + TOOLTIP_EDGE_INSET;\n\nexport function useSankeyHoverTooltip(enabled: boolean) {\n const id = useId();\n const [isHovered, setIsHovered] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [position, setPosition] = useState<SankeyTooltipPosition>();\n\n function showAt(target: Element) {\n if (!enabled) return;\n const rect = target.getBoundingClientRect();\n const placement = rect.top < TOOLTIP_TOP_FLIP_THRESHOLD ? 'below' : 'above';\n setPosition({\n left: Math.min(\n Math.max(rect.left, TOOLTIP_EDGE_INSET),\n Math.max(window.innerWidth - TOOLTIP_RIGHT_INSET, TOOLTIP_EDGE_INSET),\n ),\n top: placement === 'above' ? rect.top - 8 : rect.bottom + 8,\n placement,\n });\n }\n\n return {\n id,\n position,\n isVisible: Boolean(enabled && position && (isHovered || isFocused)),\n showOnHover(target: Element) {\n setIsHovered(true);\n showAt(target);\n },\n hideOnLeave() {\n setIsHovered(false);\n },\n showOnFocus(target: Element) {\n setIsFocused(true);\n showAt(target);\n },\n hideOnBlur() {\n setIsFocused(false);\n },\n };\n}\n","import { createPortal } from 'react-dom';\n\nimport { SANKEY_TOOLTIP_MAX_WIDTH_PX } from './use-sankey-hover-tooltip';\nimport type { SankeyTooltipPosition } from './use-sankey-hover-tooltip';\nimport { ChartTooltip } from '@/ds/components/ChartTooltip';\n\nexport function SankeyPortalTooltip({\n id,\n title,\n description,\n position,\n visible,\n}: {\n id: string;\n title: string;\n description: string;\n position: SankeyTooltipPosition | undefined;\n visible: boolean;\n}) {\n if (!visible || !position) return null;\n\n return createPortal(\n <ChartTooltip\n aria-label={`${title}: ${description}`}\n className=\"pointer-events-none fixed z-50 p-2\"\n id={id}\n role=\"tooltip\"\n style={{\n left: position.left,\n maxWidth: `min(${SANKEY_TOOLTIP_MAX_WIDTH_PX}px, calc(100vw - 2rem))`,\n top: position.top,\n transform: position.placement === 'above' ? 'translateY(-100%)' : undefined,\n width: 'max-content',\n }}\n >\n <div className=\"text-column\">{title}</div>\n <div className=\"whitespace-pre-wrap text-muted-foreground\">{description}</div>\n </ChartTooltip>,\n document.body,\n );\n}\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { ComponentProps, CSSProperties } from 'react';\nimport type { Sankey as RechartsSankey } from 'recharts';\n\nimport { buildFixedSankeyGeometry, getSankeyLabelWidths, SANKEY_NODE_WIDTH } from './sankey-chart-utils';\nimport type { SankeyChartGraph } from './sankey-chart-utils';\n\ntype SankeyChartMeasurementsOptions = {\n graph: SankeyChartGraph;\n height: CSSProperties['height'];\n margin: ComponentProps<typeof RechartsSankey>['margin'];\n usesFixedGeometry: boolean;\n};\n\nexport function useSankeyChartMeasurements({\n graph,\n height,\n margin,\n usesFixedGeometry,\n}: SankeyChartMeasurementsOptions) {\n const chartContainerRef = useRef<HTMLDivElement>(null);\n const [measuredHeight, setMeasuredHeight] = useState(typeof height === 'number' ? height : 320);\n const [measuredWidth, setMeasuredWidth] = useState(800);\n\n useEffect(() => {\n const element = chartContainerRef.current;\n if (!element) return;\n\n const updateDimensions = () => {\n if (element.offsetHeight > 0) setMeasuredHeight(element.offsetHeight);\n if (element.offsetWidth > 0) setMeasuredWidth(element.offsetWidth);\n };\n\n updateDimensions();\n if (typeof ResizeObserver === 'undefined') return;\n\n const observer = new ResizeObserver(updateDimensions);\n observer.observe(element);\n return () => observer.disconnect();\n }, [height]);\n\n const fixedGeometry = useMemo(\n () =>\n usesFixedGeometry\n ? buildFixedSankeyGeometry(graph, {\n top: Number(margin?.top ?? 64),\n bottom: measuredHeight - Number(margin?.bottom ?? 12),\n left: Number(margin?.left ?? 160),\n right: measuredWidth - Number(margin?.right ?? 160) - SANKEY_NODE_WIDTH,\n nodePadding: 8,\n })\n : undefined,\n [graph, margin?.bottom, margin?.left, margin?.right, margin?.top, measuredHeight, measuredWidth, usesFixedGeometry],\n );\n\n // recharts spaces columns by link depth, so the graph — not the enabled column list — sets the pitch\n const labelWidths = getSankeyLabelWidths({\n chartWidth: measuredWidth,\n columnCount: new Set(graph.nodes.map(node => node.column.id)).size,\n marginLeft: Number(margin?.left ?? 160),\n marginRight: Number(margin?.right ?? 160),\n });\n\n return { chartContainerRef, fixedGeometry, labelWidths };\n}\n","import { useEffect, useState, useSyncExternalStore } from 'react';\n\nimport type { FixedSankeyGeometry, FixedSankeyLinkGeometry, FixedSankeyNodeGeometry } from './sankey-chart-utils';\n\nconst TRANSITION_DURATION_MS = 850;\n\ntype GeometryTransition = {\n from: FixedSankeyGeometry;\n to: FixedSankeyGeometry;\n startedAt: number;\n};\n\nfunction mix(from: number, to: number, progress: number) {\n return from + (to - from) * progress;\n}\n\nfunction interpolateNode(\n from: FixedSankeyNodeGeometry,\n to: FixedSankeyNodeGeometry,\n progress: number,\n): FixedSankeyNodeGeometry {\n return {\n x: mix(from.x, to.x, progress),\n y: mix(from.y, to.y, progress),\n centerY: mix(from.centerY, to.centerY, progress),\n height: mix(from.height, to.height, progress),\n };\n}\n\nfunction interpolateLink(\n from: FixedSankeyLinkGeometry,\n to: FixedSankeyLinkGeometry,\n progress: number,\n): FixedSankeyLinkGeometry {\n return {\n sourceX: mix(from.sourceX, to.sourceX, progress),\n targetX: mix(from.targetX, to.targetX, progress),\n sourceY: mix(from.sourceY, to.sourceY, progress),\n targetY: mix(from.targetY, to.targetY, progress),\n sourceWidth: mix(from.sourceWidth, to.sourceWidth, progress),\n targetWidth: mix(from.targetWidth, to.targetWidth, progress),\n };\n}\n\n/**\n * Preserves node identity while pairing replaced links by render order. That\n * synthetic pairing keeps every ribbon moving continuously through a reorder,\n * even though changing adjacency means the old and new links have different IDs.\n */\nexport function interpolateSankeyGeometry(\n from: FixedSankeyGeometry,\n to: FixedSankeyGeometry,\n progress: number,\n): FixedSankeyGeometry {\n const replacedPreviousLinks = [...from.links].filter(([id]) => !to.links.has(id)).map(([, link]) => link);\n const nodes = new Map<string, FixedSankeyNodeGeometry>();\n const links = new Map<string, FixedSankeyLinkGeometry>();\n\n for (const [id, target] of to.nodes) {\n nodes.set(id, interpolateNode(from.nodes.get(id) ?? target, target, progress));\n }\n\n let replacedLinkIndex = 0;\n for (const [id, target] of to.links) {\n const matchingSource = from.links.get(id);\n const syntheticSource = matchingSource ? undefined : replacedPreviousLinks[replacedLinkIndex++];\n links.set(id, interpolateLink(matchingSource ?? syntheticSource ?? target, target, progress));\n }\n\n return { nodes, links };\n}\n\nfunction prefersReducedMotion() {\n return (\n typeof window !== 'undefined' &&\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\n );\n}\n\nclass SankeyGeometryMotionStore {\n private animationFrame = 0;\n private key?: string;\n private listeners = new Set<() => void>();\n private snapshot?: FixedSankeyGeometry;\n private target?: FixedSankeyGeometry;\n private transition?: GeometryTransition;\n\n constructor(key?: string, geometry?: FixedSankeyGeometry) {\n this.key = key;\n this.snapshot = geometry;\n this.target = geometry;\n }\n\n getSnapshot = () => this.snapshot;\n\n subscribe = (listener: () => void) => {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n };\n\n transitionTo(key: string | undefined, geometry: FixedSankeyGeometry | undefined) {\n if (key === this.key && geometry === this.target) return;\n\n const keyChanged = key !== this.key;\n this.key = key;\n this.target = geometry;\n\n if (!keyChanged && geometry && this.transition) {\n this.transition = { ...this.transition, to: geometry };\n return;\n }\n\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = 0;\n\n if (!keyChanged || !geometry || !this.snapshot || prefersReducedMotion()) {\n this.transition = undefined;\n this.publish(geometry);\n return;\n }\n\n this.transition = { from: this.snapshot, to: geometry, startedAt: performance.now() };\n this.animationFrame = requestAnimationFrame(this.animate);\n }\n\n dispose() {\n cancelAnimationFrame(this.animationFrame);\n this.listeners.clear();\n }\n\n private animate = (now: number) => {\n const transition = this.transition;\n if (!transition) return;\n\n const elapsed = Math.min((now - transition.startedAt) / TRANSITION_DURATION_MS, 1);\n const progress = 1 - (1 - elapsed) ** 3;\n this.publish(interpolateSankeyGeometry(transition.from, transition.to, progress));\n\n if (elapsed < 1) {\n this.animationFrame = requestAnimationFrame(this.animate);\n return;\n }\n\n this.transition = undefined;\n this.animationFrame = 0;\n };\n\n private publish(geometry: FixedSankeyGeometry | undefined) {\n this.snapshot = geometry;\n for (const listener of this.listeners) listener();\n }\n}\n\nexport function useSankeyGeometryTransition({\n geometry,\n transitionKey,\n}: {\n geometry?: FixedSankeyGeometry;\n transitionKey?: string;\n}) {\n const [store] = useState(() => new SankeyGeometryMotionStore(transitionKey, geometry));\n const animatedGeometry = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);\n\n useEffect(() => {\n store.transitionTo(transitionKey, geometry);\n }, [geometry, store, transitionKey]);\n\n useEffect(() => () => store.dispose(), [store]);\n\n return animatedGeometry;\n}\n","import { useState } from 'react';\nimport type { ComponentProps, CSSProperties, KeyboardEvent } from 'react';\nimport { ResponsiveContainer, Sankey as RechartsSankey } from 'recharts';\nimport {\n getSankeyChartCurveSelection,\n getSankeyChartNodeSelection,\n getSankeyChartNodeWeights,\n SANKEY_NODE_WIDTH,\n truncateSankeyLabel,\n} from './sankey-chart-utils';\nimport type {\n SankeyChartColumn,\n SankeyChartCurveSelection,\n SankeyChartNodeSelection,\n SankeyLabelWidths,\n} from './sankey-chart-utils';\nimport { useSankeyRenderContext } from './sankey-context';\nimport { SankeyPortalTooltip } from './sankey-portal-tooltip';\nimport { useSankeyChartMeasurements } from './use-sankey-chart-measurements';\nimport { useSankeyGeometryTransition } from './use-sankey-geometry-transition';\nimport { useSankeyHoverTooltip } from './use-sankey-hover-tooltip';\nimport { CHART_LABEL_FONT_SIZE, CHART_TICK_FONT_SIZE, Colors } from '@/ds/tokens';\nimport { cn } from '@/lib/utils';\n\nconst NODE_LABEL_FONT_SIZE = CHART_TICK_FONT_SIZE;\nconst COLUMN_LABEL_FONT_SIZE = CHART_LABEL_FONT_SIZE;\n// pre-measurement cap, kept so wide charts read unchanged\nconst NODE_LABEL_MAX_CHARACTERS = 23;\n\nexport type SankeyChartProps = {\n height?: CSSProperties['height'];\n getNodeColor?: (selection: SankeyChartNodeSelection) => string;\n getLinkColor?: (selection: SankeyChartCurveSelection) => string;\n className?: string;\n margin?: ComponentProps<typeof RechartsSankey>['margin'];\n onCurveClick?: (selection: SankeyChartCurveSelection) => void;\n onNodeClick?: (selection: SankeyChartNodeSelection) => void;\n isNodeClickable?: (selection: SankeyChartNodeSelection) => boolean;\n getColumnDescription?: (column: SankeyChartColumn) => string | undefined;\n /** Suppress the built-in SVG column headers when the caller renders its own header row. */\n hideColumnLabels?: boolean;\n /** Animate fixed node and ribbon geometry when this perspective key changes. */\n geometryTransitionKey?: string;\n};\n\nexport function SankeyChart({\n height = 320,\n className,\n margin = { top: 64, right: 160, bottom: 12, left: 160 },\n onCurveClick,\n onNodeClick,\n isNodeClickable,\n getColumnDescription,\n hideColumnLabels = false,\n geometryTransitionKey,\n getNodeColor,\n getLinkColor,\n}: SankeyChartProps) {\n const { graph, enabledColumns, colorMap, usesFixedGeometry } = useSankeyRenderContext();\n const { chartContainerRef, fixedGeometry, labelWidths } = useSankeyChartMeasurements({\n graph,\n height,\n margin,\n usesFixedGeometry,\n });\n const animatedGeometry = useSankeyGeometryTransition({\n geometry: fixedGeometry,\n transitionKey: geometryTransitionKey,\n });\n const [hoveredSourceName, setHoveredSourceName] = useState<string>();\n const [focusedSourceName, setFocusedSourceName] = useState<string>();\n const activeSourceName = hoveredSourceName ?? focusedSourceName;\n const firstColumnId = enabledColumns[0]?.id;\n const lastColumnId = enabledColumns.at(-1)?.id;\n const nodeWeights = getSankeyChartNodeWeights(graph);\n // Each node's percentage is its share of its own column, so later columns\n // with more counted traces than the first column never exceed 100%.\n const columnTotals = new Map<string, number>();\n for (const node of graph.nodes) {\n const nodeValue = node.displayValue ?? nodeWeights.get(node.id) ?? 0;\n columnTotals.set(node.column.id, (columnTotals.get(node.column.id) ?? 0) + nodeValue);\n }\n\n return (\n <div className={cn('min-w-0', className)}>\n {graph.links.length === 0 ? (\n <div\n className=\"flex items-center justify-center rounded-md border border-border text-caption text-muted-foreground\"\n style={{ height }}\n >\n Select at least two columns with data to display a flow\n </div>\n ) : (\n <div ref={chartContainerRef} style={{ height }}>\n <ResponsiveContainer\n width=\"100%\"\n height=\"100%\"\n initialDimension={{ width: 800, height: typeof height === 'number' ? height : 320 }}\n >\n <RechartsSankey\n data={graph}\n nodeWidth={SANKEY_NODE_WIDTH}\n nodePadding={56}\n margin={margin}\n node={(props: SankeyNodeRendererProps) => {\n const node = graph.nodes[props.index];\n const showColumnLabel =\n !hideColumnLabels && node\n ? graph.nodes.findIndex(candidate => candidate.column.id === node.column.id) === props.index\n : false;\n const nodeGeometry = node ? animatedGeometry?.nodes.get(node.id) : undefined;\n const selection = node ? getSankeyChartNodeSelection(node) : undefined;\n const clickable = Boolean(\n onNodeClick && selection && (isNodeClickable === undefined || isNodeClickable(selection)),\n );\n return (\n <SankeyNode\n {...props}\n x={nodeGeometry?.x ?? props.x}\n y={nodeGeometry?.y ?? props.y}\n height={nodeGeometry?.height ?? props.height}\n colorMap={colorMap}\n color={selection ? getNodeColor?.(selection) : undefined}\n columnLabel={node?.column.label}\n columnDescription={node ? getColumnDescription?.(node.column) : undefined}\n label={node?.label}\n nodeValue={node?.displayValue}\n layoutValue={nodeGeometry ? undefined : node ? nodeWeights.get(node.id) : undefined}\n columnTotal={node ? (columnTotals.get(node.column.id) ?? 0) : 0}\n showColumnLabel={showColumnLabel}\n isFirstColumn={node?.column.id === firstColumnId}\n isLastColumn={node?.column.id === lastColumnId}\n labelWidths={labelWidths}\n onFocusChange={setFocusedSourceName}\n onHoverChange={setHoveredSourceName}\n clickable={clickable}\n onSelect={() => {\n if (selection && clickable) onNodeClick?.(selection);\n }}\n />\n );\n }}\n link={(props: SankeyLinkRendererProps) => {\n const link = graph.links[props.index];\n const selection = link ? getSankeyChartCurveSelection(link) : undefined;\n const linkGeometry = link ? animatedGeometry?.links.get(link.id) : undefined;\n const sourceX = linkGeometry?.sourceX ?? props.sourceX;\n const targetX = linkGeometry?.targetX ?? props.targetX;\n const fixedControlX = linkGeometry ? (sourceX + targetX) / 2 : undefined;\n return (\n <SankeyLink\n {...props}\n sourceX={sourceX}\n targetX={targetX}\n sourceControlX={fixedControlX ?? props.sourceControlX}\n targetControlX={fixedControlX ?? props.targetControlX}\n sourceY={linkGeometry?.sourceY ?? props.sourceY}\n targetY={linkGeometry?.targetY ?? props.targetY}\n sourceWidth={linkGeometry?.sourceWidth}\n targetWidth={linkGeometry?.targetWidth}\n colorMap={colorMap}\n highlighted={String(props.payload.source.name ?? '') === activeSourceName}\n color={selection ? getLinkColor?.(selection) : undefined}\n sourceColor={selection ? getNodeColor?.(selection.source) : undefined}\n targetColor={selection ? getNodeColor?.(selection.target) : undefined}\n displayValue={link?.displayValue}\n layoutValue={link?.value}\n onHoverChange={setHoveredSourceName}\n clickable={onCurveClick !== undefined}\n onSelect={() => {\n if (link) onCurveClick?.(getSankeyChartCurveSelection(link));\n }}\n />\n );\n }}\n />\n </ResponsiveContainer>\n </div>\n )}\n </div>\n );\n}\n\ntype SankeyNodeRendererProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n index: number;\n payload: { name?: string | number; value?: string | number };\n};\n\ntype SankeyLinkRendererProps = {\n sourceX: number;\n targetX: number;\n sourceY: number;\n targetY: number;\n sourceControlX: number;\n targetControlX: number;\n linkWidth: number;\n index: number;\n payload: { source: { name?: string | number }; target: { name?: string | number } };\n};\n\ntype SankeyNodeProps = SankeyNodeRendererProps & {\n colorMap: Record<string, string>;\n color?: string;\n columnLabel?: string;\n columnDescription?: string;\n label?: string;\n nodeValue?: number;\n layoutValue?: number;\n columnTotal: number;\n showColumnLabel: boolean;\n isFirstColumn: boolean;\n isLastColumn: boolean;\n labelWidths: SankeyLabelWidths;\n clickable: boolean;\n onFocusChange: (sourceName: string | undefined) => void;\n onHoverChange: (sourceName: string | undefined) => void;\n onSelect: () => void;\n};\n\nfunction SankeyNode({\n x,\n y,\n width,\n height,\n payload,\n colorMap,\n color,\n columnLabel,\n columnDescription,\n label,\n nodeValue,\n layoutValue,\n columnTotal,\n showColumnLabel,\n isFirstColumn,\n isLastColumn,\n labelWidths,\n clickable,\n onFocusChange,\n onHoverChange,\n onSelect,\n}: SankeyNodeProps) {\n const name = typeof payload.name === 'string' || typeof payload.name === 'number' ? String(payload.name) : '';\n const displayLabel = label ?? name;\n const descriptionIndex = displayLabel.indexOf('\\n');\n const visibleDisplayLabel = descriptionIndex >= 0 ? displayLabel.slice(0, descriptionIndex) : displayLabel;\n const description = descriptionIndex >= 0 ? displayLabel.slice(descriptionIndex + 1) : undefined;\n const accessibleLabel = displayLabel.replaceAll('\\n', '. ');\n const nodeLabelWidth = isFirstColumn || isLastColumn ? labelWidths.edge : labelWidths.centered;\n const visibleLabel = truncateSankeyLabel(visibleDisplayLabel, {\n fontSize: NODE_LABEL_FONT_SIZE,\n maxWidth: nodeLabelWidth,\n maxCharacters: NODE_LABEL_MAX_CHARACTERS,\n });\n const visibleColumnLabel = columnLabel\n ? truncateSankeyLabel(columnLabel, { fontSize: COLUMN_LABEL_FONT_SIZE, maxWidth: nodeLabelWidth })\n : undefined;\n const tooltip = useSankeyHoverTooltip(description !== undefined);\n const numericValue = nodeValue ?? (typeof payload.value === 'number' ? payload.value : Number(payload.value));\n const value = Number.isFinite(numericValue) ? String(numericValue) : '';\n const percentage =\n columnTotal > 0 && Number.isFinite(numericValue) ? Math.round((numericValue / columnTotal) * 100) : 0;\n const visibleHeight = scaleSankeyDimension(height, numericValue, layoutValue);\n const visibleY = y + (height - visibleHeight) / 2;\n const textAnchor = isFirstColumn ? 'start' : isLastColumn ? 'end' : 'middle';\n const labelX = isFirstColumn ? x : isLastColumn ? x + width : x + width / 2;\n const nodeFill = colorMap[name] ?? 'var(--chart-blue)';\n const handleKeyDown = (event: KeyboardEvent<SVGGElement>) => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n onSelect();\n };\n\n return (\n <>\n {/* Rendered outside the interactive group so hovering the header never opens a theme tooltip. */}\n {showColumnLabel && visibleColumnLabel && columnLabel ? (\n <SankeyColumnHeader\n x={labelX}\n textAnchor={textAnchor}\n fill={color ? Colors.foreground : nodeFill}\n label={visibleColumnLabel}\n fullLabel={columnLabel}\n description={columnDescription}\n />\n ) : null}\n <g\n aria-describedby={description ? tooltip.id : undefined}\n aria-label={`${accessibleLabel}: ${value} ${numericValue === 1 ? 'trace' : 'traces'} (${percentage}%)`}\n className=\"outline-hidden focus-visible:[&>rect]:stroke-foreground focus-visible:[&>rect]:stroke-2\"\n onClick={clickable ? onSelect : undefined}\n onKeyDown={clickable ? handleKeyDown : undefined}\n role={clickable ? 'button' : undefined}\n onFocus={event => {\n onFocusChange(name);\n tooltip.showOnFocus(event.currentTarget);\n }}\n onBlur={() => {\n onFocusChange(undefined);\n tooltip.hideOnBlur();\n }}\n onMouseEnter={event => {\n onHoverChange(name);\n tooltip.showOnHover(event.currentTarget);\n }}\n onMouseLeave={() => {\n onHoverChange(undefined);\n tooltip.hideOnLeave();\n }}\n style={{ cursor: clickable ? 'pointer' : undefined }}\n tabIndex={0}\n >\n {/* The custom tooltip covers described nodes; a native title there would stack a second popup. */}\n {description ? null : <title>{displayLabel}</title>}\n <rect x={x} y={visibleY} width={width} height={visibleHeight} rx={3} fill={color ?? nodeFill} />\n <text\n x={labelX}\n y={y - 24}\n textAnchor={textAnchor}\n fill={Colors.foreground}\n fontSize={NODE_LABEL_FONT_SIZE}\n fontFamily=\"var(--font-mono)\"\n >\n {visibleLabel}\n </text>\n <text x={labelX} y={y - 8} textAnchor={textAnchor} fill={Colors['muted-foreground']} fontSize={9.5}>\n {value} ({percentage}%)\n </text>\n </g>\n {description ? (\n <SankeyPortalTooltip\n id={tooltip.id}\n title={visibleDisplayLabel}\n description={description}\n position={tooltip.position}\n visible={tooltip.isVisible}\n />\n ) : null}\n </>\n );\n}\n\n/**\n * Column header text. Inert for node tooltips, but when the caller supplies a\n * column description it opens its own portal tooltip on hover or focus.\n */\nfunction SankeyColumnHeader({\n x,\n textAnchor,\n fill,\n label,\n fullLabel,\n description,\n}: {\n x: number;\n textAnchor: 'start' | 'middle' | 'end';\n fill: string;\n label: string;\n fullLabel: string;\n description?: string;\n}) {\n const tooltip = useSankeyHoverTooltip(description !== undefined);\n\n return (\n <>\n <text\n aria-describedby={description ? tooltip.id : undefined}\n aria-label={description ? fullLabel : undefined}\n role={description ? 'img' : undefined}\n x={x}\n y={18}\n textAnchor={textAnchor}\n fill={fill}\n fontSize={COLUMN_LABEL_FONT_SIZE}\n fontWeight={600}\n tabIndex={description ? 0 : undefined}\n onMouseEnter={description ? event => tooltip.showOnHover(event.currentTarget) : undefined}\n onMouseLeave={description ? tooltip.hideOnLeave : undefined}\n onFocus={description ? event => tooltip.showOnFocus(event.currentTarget) : undefined}\n onBlur={description ? tooltip.hideOnBlur : undefined}\n >\n {/* The custom tooltip already names the column; a native title would stack a second popup. */}\n {label === fullLabel || description ? null : <title>{fullLabel}</title>}\n {label}\n </text>\n {description ? (\n <SankeyPortalTooltip\n id={tooltip.id}\n title={fullLabel}\n description={description}\n position={tooltip.position}\n visible={tooltip.isVisible}\n />\n ) : null}\n </>\n );\n}\n\nfunction scaleSankeyDimension(size: number, displayValue: number | undefined, layoutValue: number | undefined) {\n if (displayValue === undefined || layoutValue === undefined || layoutValue <= 0) return size;\n return size * Math.min(Math.max(displayValue / layoutValue, 0), 1);\n}\n\ntype SankeyLinkProps = SankeyLinkRendererProps & {\n colorMap: Record<string, string>;\n color?: string;\n sourceColor?: string;\n targetColor?: string;\n highlighted: boolean;\n displayValue?: number;\n layoutValue?: number;\n sourceWidth?: number;\n targetWidth?: number;\n clickable: boolean;\n onHoverChange: (sourceName: string | undefined) => void;\n onSelect: () => void;\n};\n\nfunction SankeyLink({\n sourceX,\n targetX,\n sourceY,\n targetY,\n sourceControlX,\n targetControlX,\n linkWidth,\n index,\n payload,\n colorMap,\n color,\n sourceColor,\n targetColor,\n highlighted,\n displayValue,\n layoutValue,\n sourceWidth,\n targetWidth,\n clickable,\n onHoverChange,\n onSelect,\n}: SankeyLinkProps) {\n const visibleWidth = scaleSankeyDimension(linkWidth, displayValue, layoutValue);\n const sourceHalfWidth = Math.max(0, sourceWidth ?? visibleWidth) / 2;\n const targetHalfWidth = Math.max(0, targetWidth ?? visibleWidth) / 2;\n const path = [\n `M${sourceX},${sourceY - sourceHalfWidth}`,\n `C${sourceControlX},${sourceY - sourceHalfWidth} ${targetControlX},${targetY - targetHalfWidth} ${targetX},${targetY - targetHalfWidth}`,\n `L${targetX},${targetY + targetHalfWidth}`,\n `C${targetControlX},${targetY + targetHalfWidth} ${sourceControlX},${sourceY + sourceHalfWidth} ${sourceX},${sourceY + sourceHalfWidth}`,\n 'Z',\n ].join(' ');\n const sourceName = String(payload.source.name ?? '');\n const targetName = String(payload.target.name ?? '');\n const gradientId = `sankey-grad-${index}`;\n const handleKeyDown = (event: KeyboardEvent<SVGPathElement>) => {\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n onSelect();\n };\n\n return (\n <g>\n <defs>\n <linearGradient id={gradientId} gradientUnits=\"userSpaceOnUse\" x1={sourceX} x2={targetX}>\n <stop offset=\"0%\" stopColor={sourceColor ?? colorMap[sourceName] ?? 'var(--chart-blue)'} />\n <stop offset=\"100%\" stopColor={targetColor ?? colorMap[targetName] ?? 'var(--chart-blue)'} />\n </linearGradient>\n </defs>\n <path\n d={path}\n fill={color ?? `url(#${gradientId})`}\n fillOpacity={highlighted ? 0.75 : 0.32}\n stroke=\"none\"\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n aria-label={clickable ? 'Select Sankey curve' : undefined}\n onClick={clickable ? onSelect : undefined}\n onKeyDown={clickable ? handleKeyDown : undefined}\n onMouseEnter={() => onHoverChange(sourceName)}\n onMouseLeave={() => onHoverChange(undefined)}\n style={{ cursor: clickable ? 'pointer' : undefined, transition: 'fill-opacity 0.18s ease' }}\n />\n </g>\n );\n}\n"],"names":["RechartsSankey"],"mappings":"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"}
@@ -239,7 +239,7 @@ const sankeySeriesColors = [
239
239
  "var(--chart-purple)",
240
240
  "var(--chart-pink)",
241
241
  "var(--chart-red)",
242
- "var(--chart-yellow)",
242
+ "var(--chart-amber)",
243
243
  "var(--chart-blue-deep)"
244
244
  ];
245
245
  function buildSankeyColorMap(names) {
@@ -947,4 +947,4 @@ exports.getSankeyChartValue = getSankeyChartValue;
947
947
  exports.reorderSankeyChartColumns = reorderSankeyChartColumns;
948
948
  exports.sankeySeriesColors = sankeySeriesColors;
949
949
  exports.useSankey = useSankey;
950
- //# sourceMappingURL=sankey-chart-S7iF7d0E.cjs.map
950
+ //# sourceMappingURL=sankey-chart-DfVMZpz5.cjs.map