@mastra/playground-ui 66.1.0-alpha.2 → 67.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1052) hide show
  1. package/dist/AgentIndicator-Bs2S8AWJ.js +847 -0
  2. package/dist/AgentIndicator-Bs2S8AWJ.js.map +1 -0
  3. package/dist/AgentIndicator-to30W73z.cjs +864 -0
  4. package/dist/AgentIndicator-to30W73z.cjs.map +1 -0
  5. package/dist/AgentIndicator.css +28 -0
  6. package/dist/{Arrival-NpBOyV52.js → Arrival-CJFEOXr5.js} +33 -3
  7. package/dist/Arrival-CJFEOXr5.js.map +1 -0
  8. package/dist/{Arrival-Dm6Vgn78.cjs → Arrival-Cs1oWjo4.cjs} +43 -1
  9. package/dist/Arrival-Cs1oWjo4.cjs.map +1 -0
  10. package/dist/{Comment-CUQvfikb.cjs → Comment-KYUQzeSu.cjs} +2 -2
  11. package/dist/{Comment-CUQvfikb.cjs.map → Comment-KYUQzeSu.cjs.map} +1 -1
  12. package/dist/{Comment-CPA3IyPS.js → Comment-VFJq2wRp.js} +2 -2
  13. package/dist/{Comment-CPA3IyPS.js.map → Comment-VFJq2wRp.js.map} +1 -1
  14. package/dist/{DataList-Ve3omCXT.js → DataList-2tIlQsLc.js} +95 -3
  15. package/dist/DataList-2tIlQsLc.js.map +1 -0
  16. package/dist/{DataList-Cmk08jUV.cjs → DataList-Czwmwyvp.cjs} +93 -1
  17. package/dist/DataList-Czwmwyvp.cjs.map +1 -0
  18. package/dist/{DateTimeRangePicker-ByMbLdom.js → DateTimeRangePicker-C_Lie_2P.js} +23 -2
  19. package/dist/DateTimeRangePicker-C_Lie_2P.js.map +1 -0
  20. package/dist/{DateTimeRangePicker-DGbH5WOn.cjs → DateTimeRangePicker-HmPOHwAQ.cjs} +23 -2
  21. package/dist/DateTimeRangePicker-HmPOHwAQ.cjs.map +1 -0
  22. package/dist/{FilterBar-Dk3QEuT6.js → FilterBar--4oguuVe.js} +4 -4
  23. package/dist/FilterBar--4oguuVe.js.map +1 -0
  24. package/dist/{FilterBar-gEvoWDXA.cjs → FilterBar-BUd4f7oi.cjs} +7 -7
  25. package/dist/FilterBar-BUd4f7oi.cjs.map +1 -0
  26. package/dist/GrainFill.css +2 -0
  27. package/dist/{MarkdownRenderer-BgqKfmRm.cjs → MarkdownRenderer-CS6u5drO.cjs} +2 -2
  28. package/dist/{MarkdownRenderer-BgqKfmRm.cjs.map → MarkdownRenderer-CS6u5drO.cjs.map} +1 -1
  29. package/dist/{MarkdownRenderer-DKCDXaLy.js → MarkdownRenderer-DME2xKTk.js} +2 -2
  30. package/dist/{MarkdownRenderer-DKCDXaLy.js.map → MarkdownRenderer-DME2xKTk.js.map} +1 -1
  31. package/dist/{Message-BF9cpYaw.cjs → Message-DsCNQpou.cjs} +2 -2
  32. package/dist/{Message-BF9cpYaw.cjs.map → Message-DsCNQpou.cjs.map} +1 -1
  33. package/dist/{Message-Bkf6Ro9H.js → Message-nVI6tMS3.js} +2 -2
  34. package/dist/{Message-Bkf6Ro9H.js.map → Message-nVI6tMS3.js.map} +1 -1
  35. package/dist/{MetricsCard-Dly_H3oX.cjs → MetricsCard-CEB-f2sv.cjs} +91 -109
  36. package/dist/MetricsCard-CEB-f2sv.cjs.map +1 -0
  37. package/dist/{MetricsCard-C9GWgT58.js → MetricsCard-M8awJ2B_.js} +91 -109
  38. package/dist/MetricsCard-M8awJ2B_.js.map +1 -0
  39. package/dist/{MetricsKpiCard-Uw0nyMgW.cjs → MetricsKpiCard-By_-sagx.cjs} +3 -2
  40. package/dist/{MetricsKpiCard-Uw0nyMgW.cjs.map → MetricsKpiCard-By_-sagx.cjs.map} +1 -1
  41. package/dist/{MetricsKpiCard-Idxjl-dn.js → MetricsKpiCard-OHbAElTl.js} +3 -2
  42. package/dist/{MetricsKpiCard-Idxjl-dn.js.map → MetricsKpiCard-OHbAElTl.js.map} +1 -1
  43. package/dist/{MetricsLineChart-DKzuRU2q.js → MetricsLineChart-BhHoduO0.js} +21 -39
  44. package/dist/MetricsLineChart-BhHoduO0.js.map +1 -0
  45. package/dist/{MetricsLineChart-2m4LVL1N.cjs → MetricsLineChart-CjBm4IXu.cjs} +21 -39
  46. package/dist/MetricsLineChart-CjBm4IXu.cjs.map +1 -0
  47. package/dist/{MetricsStackedBarChart-DJB4aByt.js → MetricsStackedBarChart-BRuA6MTE.js} +2 -3
  48. package/dist/MetricsStackedBarChart-BRuA6MTE.js.map +1 -0
  49. package/dist/{MetricsStackedBarChart-NATtwA_W.cjs → MetricsStackedBarChart-BdMlKv6G.cjs} +2 -3
  50. package/dist/MetricsStackedBarChart-BdMlKv6G.cjs.map +1 -0
  51. package/dist/Notice.css +2 -0
  52. package/dist/Shimmer.css +7 -0
  53. package/dist/{activity-ihrl0JtH.js → activity-CM34JyW-.js} +98 -33
  54. package/dist/activity-CM34JyW-.js.map +1 -0
  55. package/dist/{activity-QyLJcBKc.cjs → activity-DAK8tj7r.cjs} +108 -31
  56. package/dist/activity-DAK8tj7r.cjs.map +1 -0
  57. package/dist/chart-plot.css +15 -0
  58. package/dist/combobox-8kNAJFlj.cjs +309 -0
  59. package/dist/combobox-8kNAJFlj.cjs.map +1 -0
  60. package/dist/{combobox-C-E7_q4j.cjs → combobox-parts-BZVXwbG7.cjs} +7 -300
  61. package/dist/combobox-parts-BZVXwbG7.cjs.map +1 -0
  62. package/dist/{combobox-CDS2pBqz.js → combobox-parts-W7KRQUsV.js} +10 -297
  63. package/dist/combobox-parts-W7KRQUsV.js.map +1 -0
  64. package/dist/combobox-wFudhN8F.js +302 -0
  65. package/dist/combobox-wFudhN8F.js.map +1 -0
  66. package/dist/components/AgentIndicator.cjs.js +5 -0
  67. package/dist/components/AgentIndicator.d.ts +1 -0
  68. package/dist/components/AgentIndicator.es.js +1 -0
  69. package/dist/components/Arrival.cjs.js +3 -1
  70. package/dist/components/Arrival.es.js +1 -1
  71. package/dist/components/Combobox.cjs.js +24 -23
  72. package/dist/components/Combobox.es.js +2 -1
  73. package/dist/components/Comment.cjs.js +1 -1
  74. package/dist/components/Comment.es.js +1 -1
  75. package/dist/components/DataList.cjs.js +2 -2
  76. package/dist/components/DataList.es.js +2 -2
  77. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  78. package/dist/components/DateTimeRangePicker.es.js +1 -1
  79. package/dist/components/DiffStat.cjs.js +1 -1
  80. package/dist/components/DiffStat.es.js +1 -1
  81. package/dist/components/FilterBar.cjs.js +2 -2
  82. package/dist/components/FilterBar.es.js +2 -2
  83. package/dist/components/LogsDataList.cjs.js +1 -1
  84. package/dist/components/LogsDataList.es.js +1 -1
  85. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  86. package/dist/components/MarkdownRenderer.es.js +1 -1
  87. package/dist/components/Message.cjs.js +1 -1
  88. package/dist/components/Message.es.js +1 -1
  89. package/dist/components/MetricsCard.cjs.js +1 -1
  90. package/dist/components/MetricsCard.es.js +1 -1
  91. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  92. package/dist/components/MetricsKpiCard.es.js +1 -1
  93. package/dist/components/MetricsLineChart.cjs.js +1 -1
  94. package/dist/components/MetricsLineChart.es.js +1 -1
  95. package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
  96. package/dist/components/MetricsStackedBarChart.es.js +1 -1
  97. package/dist/components/PropertyFilter.cjs.js +1 -1
  98. package/dist/components/PropertyFilter.es.js +1 -1
  99. package/dist/components/SavedViews.cjs.js +27 -69
  100. package/dist/components/SavedViews.cjs.js.map +1 -1
  101. package/dist/components/SavedViews.es.js +26 -68
  102. package/dist/components/SavedViews.es.js.map +1 -1
  103. package/dist/components/ai/activity.cjs.js +3 -1
  104. package/dist/components/ai/activity.es.js +1 -1
  105. package/dist/components/ai/message-reveal.cjs.js +2 -1
  106. package/dist/components/ai/message-reveal.cjs.js.map +1 -1
  107. package/dist/components/ai/message-reveal.es.js +2 -1
  108. package/dist/components/ai/message-reveal.es.js.map +1 -1
  109. package/dist/components/ai/plan.cjs.js +1 -1
  110. package/dist/components/ai/plan.es.js +1 -1
  111. package/dist/components/ai/tool-approval.cjs.js +1 -1
  112. package/dist/components/ai/tool-approval.es.js +1 -1
  113. package/dist/components/ai/tool-call.cjs.js +2 -2
  114. package/dist/components/ai/tool-call.es.js +2 -2
  115. package/dist/domains/chat/activity/activity-stretch-line.cjs.js +6 -4
  116. package/dist/domains/chat/activity/activity-stretch-line.cjs.js.map +1 -1
  117. package/dist/domains/chat/activity/activity-stretch-line.es.js +6 -4
  118. package/dist/domains/chat/activity/activity-stretch-line.es.js.map +1 -1
  119. package/dist/domains/chat/activity/components/activity-fold.cjs.js +81 -28
  120. package/dist/domains/chat/activity/components/activity-fold.cjs.js.map +1 -1
  121. package/dist/domains/chat/activity/components/activity-fold.es.js +82 -29
  122. package/dist/domains/chat/activity/components/activity-fold.es.js.map +1 -1
  123. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
  124. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
  125. package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
  126. package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
  127. package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
  128. package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
  129. package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
  130. package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
  131. package/dist/domains/chat/activity/components/use-fading-edge.cjs.js +26 -0
  132. package/dist/domains/chat/activity/components/use-fading-edge.cjs.js.map +1 -0
  133. package/dist/domains/chat/activity/components/use-fading-edge.d.ts +1 -0
  134. package/dist/domains/chat/activity/components/use-fading-edge.es.js +25 -0
  135. package/dist/domains/chat/activity/components/use-fading-edge.es.js.map +1 -0
  136. package/dist/domains/chat/activity/components/use-rolling-words.cjs.js +123 -0
  137. package/dist/domains/chat/activity/components/use-rolling-words.cjs.js.map +1 -0
  138. package/dist/domains/chat/activity/components/use-rolling-words.d.ts +1 -0
  139. package/dist/domains/chat/activity/components/use-rolling-words.es.js +122 -0
  140. package/dist/domains/chat/activity/components/use-rolling-words.es.js.map +1 -0
  141. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  142. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  143. package/dist/domains/chat/activity/model/activity-words.cjs.js +16 -6
  144. package/dist/domains/chat/activity/model/activity-words.cjs.js.map +1 -1
  145. package/dist/domains/chat/activity/model/activity-words.es.js +15 -7
  146. package/dist/domains/chat/activity/model/activity-words.es.js.map +1 -1
  147. package/dist/domains/chat/activity.cjs.js +3 -0
  148. package/dist/domains/chat/activity.es.js +2 -1
  149. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  150. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  151. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +1 -1
  152. package/dist/domains/chat/messages/assistant-message-actions.es.js +1 -1
  153. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  154. package/dist/domains/chat/messages/message-row.es.js +4 -4
  155. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  156. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  157. package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
  158. package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
  159. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  160. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  161. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  162. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  163. package/dist/domains/chat/messages/renderers/tool-part.cjs.js +18 -0
  164. package/dist/domains/chat/messages/renderers/tool-part.cjs.js.map +1 -1
  165. package/dist/domains/chat/messages/renderers/tool-part.es.js +18 -0
  166. package/dist/domains/chat/messages/renderers/tool-part.es.js.map +1 -1
  167. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  168. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  169. package/dist/domains/chat/messages/skill-message.cjs.js +10 -7
  170. package/dist/domains/chat/messages/skill-message.cjs.js.map +1 -1
  171. package/dist/domains/chat/messages/skill-message.es.js +10 -7
  172. package/dist/domains/chat/messages/skill-message.es.js.map +1 -1
  173. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  174. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  175. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  176. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  177. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  178. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  179. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  180. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  181. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +111 -0
  182. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -0
  183. package/dist/domains/chat/tools/badges/mcp-task-chip.d.ts +1 -0
  184. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +109 -0
  185. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -0
  186. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +8 -6
  187. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js.map +1 -1
  188. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +9 -7
  189. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
  190. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -3
  191. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js.map +1 -1
  192. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -3
  193. package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
  194. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  195. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  196. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
  197. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
  198. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  199. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  200. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +10 -4
  201. package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
  202. package/dist/domains/chat/tools/badges/tool-badge.es.js +10 -4
  203. package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
  204. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js +51 -0
  205. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js.map +1 -0
  206. package/dist/domains/chat/tools/badges/use-mcp-task-progress.d.ts +1 -0
  207. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js +49 -0
  208. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js.map +1 -0
  209. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
  210. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
  211. package/dist/domains/chat/tools/tool-card-kind.cjs.js +1 -1
  212. package/dist/domains/chat/tools/tool-card-kind.es.js +1 -1
  213. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  214. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  215. package/dist/domains/chat/tools/tool-groups.cjs.js +1 -1
  216. package/dist/domains/chat/tools/tool-groups.es.js +1 -1
  217. package/dist/domains/dashboards/components/dashboard-grid.cjs.js +44 -0
  218. package/dist/domains/dashboards/components/dashboard-grid.cjs.js.map +1 -0
  219. package/dist/domains/dashboards/components/dashboard-grid.d.ts +1 -0
  220. package/dist/domains/dashboards/components/dashboard-grid.es.js +41 -0
  221. package/dist/domains/dashboards/components/dashboard-grid.es.js.map +1 -0
  222. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +72 -0
  223. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -0
  224. package/dist/domains/dashboards/components/dashboard-renderer.d.ts +1 -0
  225. package/dist/domains/dashboards/components/dashboard-renderer.es.js +71 -0
  226. package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -0
  227. package/dist/domains/dashboards/components/view-gate.cjs.js +55 -0
  228. package/dist/domains/dashboards/components/view-gate.cjs.js.map +1 -0
  229. package/dist/domains/dashboards/components/view-gate.d.ts +1 -0
  230. package/dist/domains/dashboards/components/view-gate.es.js +54 -0
  231. package/dist/domains/dashboards/components/view-gate.es.js.map +1 -0
  232. package/dist/domains/dashboards/components/widget-chrome.cjs.js +16 -0
  233. package/dist/domains/dashboards/components/widget-chrome.cjs.js.map +1 -0
  234. package/dist/domains/dashboards/components/widget-chrome.d.ts +1 -0
  235. package/dist/domains/dashboards/components/widget-chrome.es.js +15 -0
  236. package/dist/domains/dashboards/components/widget-chrome.es.js.map +1 -0
  237. package/dist/domains/dashboards/components/widget-controls.cjs.js +21 -0
  238. package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -0
  239. package/dist/domains/dashboards/components/widget-controls.d.ts +1 -0
  240. package/dist/domains/dashboards/components/widget-controls.es.js +20 -0
  241. package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -0
  242. package/dist/domains/dashboards/components/widget-error.cjs.js +18 -0
  243. package/dist/domains/dashboards/components/widget-error.cjs.js.map +1 -0
  244. package/dist/domains/dashboards/components/widget-error.d.ts +1 -0
  245. package/dist/domains/dashboards/components/widget-error.es.js +17 -0
  246. package/dist/domains/dashboards/components/widget-error.es.js.map +1 -0
  247. package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js +47 -0
  248. package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js.map +1 -0
  249. package/dist/domains/dashboards/hooks/use-dashboard-requests.d.ts +1 -0
  250. package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js +46 -0
  251. package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js.map +1 -0
  252. package/dist/domains/dashboards/hooks/use-scorers.cjs.js +41 -0
  253. package/dist/domains/dashboards/hooks/use-scorers.cjs.js.map +1 -0
  254. package/dist/domains/dashboards/hooks/use-scorers.d.ts +1 -0
  255. package/dist/domains/dashboards/hooks/use-scorers.es.js +40 -0
  256. package/dist/domains/dashboards/hooks/use-scorers.es.js.map +1 -0
  257. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js +35 -0
  258. package/dist/domains/dashboards/hooks/use-widget-views.cjs.js.map +1 -0
  259. package/dist/domains/dashboards/hooks/use-widget-views.d.ts +1 -0
  260. package/dist/domains/dashboards/hooks/use-widget-views.es.js +32 -0
  261. package/dist/domains/dashboards/hooks/use-widget-views.es.js.map +1 -0
  262. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +63 -0
  263. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -0
  264. package/dist/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -0
  265. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +62 -0
  266. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -0
  267. package/dist/domains/dashboards/kinds/kpis/options.cjs.js +72 -0
  268. package/dist/domains/dashboards/kinds/kpis/options.cjs.js.map +1 -0
  269. package/dist/domains/dashboards/kinds/kpis/options.d.ts +1 -0
  270. package/dist/domains/dashboards/kinds/kpis/options.es.js +69 -0
  271. package/dist/domains/dashboards/kinds/kpis/options.es.js.map +1 -0
  272. package/dist/domains/dashboards/kinds/kpis.cjs.js +17 -0
  273. package/dist/domains/dashboards/kinds/kpis.cjs.js.map +1 -0
  274. package/dist/domains/dashboards/kinds/kpis.d.ts +1 -0
  275. package/dist/domains/dashboards/kinds/kpis.es.js +14 -0
  276. package/dist/domains/dashboards/kinds/kpis.es.js.map +1 -0
  277. package/dist/domains/dashboards/kinds/scores/options.cjs.js +30 -0
  278. package/dist/domains/dashboards/kinds/scores/options.cjs.js.map +1 -0
  279. package/dist/domains/dashboards/kinds/scores/options.d.ts +1 -0
  280. package/dist/domains/dashboards/kinds/scores/options.es.js +28 -0
  281. package/dist/domains/dashboards/kinds/scores/options.es.js.map +1 -0
  282. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +91 -0
  283. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -0
  284. package/dist/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -0
  285. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +90 -0
  286. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -0
  287. package/dist/domains/dashboards/kinds/scores.cjs.js +16 -0
  288. package/dist/domains/dashboards/kinds/scores.cjs.js.map +1 -0
  289. package/dist/domains/dashboards/kinds/scores.d.ts +1 -0
  290. package/dist/domains/dashboards/kinds/scores.es.js +14 -0
  291. package/dist/domains/dashboards/kinds/scores.es.js.map +1 -0
  292. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +67 -0
  293. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js.map +1 -0
  294. package/dist/domains/dashboards/kinds/table/table-cells.d.ts +1 -0
  295. package/dist/domains/dashboards/kinds/table/table-cells.es.js +63 -0
  296. package/dist/domains/dashboards/kinds/table/table-cells.es.js.map +1 -0
  297. package/dist/domains/dashboards/kinds/table/table-columns.cjs.js +72 -0
  298. package/dist/domains/dashboards/kinds/table/table-columns.cjs.js.map +1 -0
  299. package/dist/domains/dashboards/kinds/table/table-columns.d.ts +1 -0
  300. package/dist/domains/dashboards/kinds/table/table-columns.es.js +71 -0
  301. package/dist/domains/dashboards/kinds/table/table-columns.es.js.map +1 -0
  302. package/dist/domains/dashboards/kinds/table/table-frame.cjs.js +16 -0
  303. package/dist/domains/dashboards/kinds/table/table-frame.cjs.js.map +1 -0
  304. package/dist/domains/dashboards/kinds/table/table-frame.d.ts +1 -0
  305. package/dist/domains/dashboards/kinds/table/table-frame.es.js +15 -0
  306. package/dist/domains/dashboards/kinds/table/table-frame.es.js.map +1 -0
  307. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +55 -0
  308. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -0
  309. package/dist/domains/dashboards/kinds/table/table-tabs.d.ts +1 -0
  310. package/dist/domains/dashboards/kinds/table/table-tabs.es.js +54 -0
  311. package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -0
  312. package/dist/domains/dashboards/kinds/table/table-view.cjs.js +80 -0
  313. package/dist/domains/dashboards/kinds/table/table-view.cjs.js.map +1 -0
  314. package/dist/domains/dashboards/kinds/table/table-view.d.ts +1 -0
  315. package/dist/domains/dashboards/kinds/table/table-view.es.js +79 -0
  316. package/dist/domains/dashboards/kinds/table/table-view.es.js.map +1 -0
  317. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +30 -0
  318. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -0
  319. package/dist/domains/dashboards/kinds/table/table-widget.d.ts +1 -0
  320. package/dist/domains/dashboards/kinds/table/table-widget.es.js +29 -0
  321. package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -0
  322. package/dist/domains/dashboards/kinds/table.cjs.js +17 -0
  323. package/dist/domains/dashboards/kinds/table.cjs.js.map +1 -0
  324. package/dist/domains/dashboards/kinds/table.d.ts +1 -0
  325. package/dist/domains/dashboards/kinds/table.es.js +14 -0
  326. package/dist/domains/dashboards/kinds/table.es.js.map +1 -0
  327. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +115 -0
  328. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -0
  329. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +1 -0
  330. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +114 -0
  331. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -0
  332. package/dist/domains/dashboards/kinds/timeseries.cjs.js +15 -0
  333. package/dist/domains/dashboards/kinds/timeseries.cjs.js.map +1 -0
  334. package/dist/domains/dashboards/kinds/timeseries.d.ts +1 -0
  335. package/dist/domains/dashboards/kinds/timeseries.es.js +14 -0
  336. package/dist/domains/dashboards/kinds/timeseries.es.js.map +1 -0
  337. package/dist/domains/dashboards/kinds.cjs.js +20 -0
  338. package/dist/domains/dashboards/kinds.cjs.js.map +1 -0
  339. package/dist/domains/dashboards/kinds.d.ts +1 -0
  340. package/dist/domains/dashboards/kinds.es.js +15 -0
  341. package/dist/domains/dashboards/kinds.es.js.map +1 -0
  342. package/dist/domains/dashboards/lib/answers.cjs.js +42 -0
  343. package/dist/domains/dashboards/lib/answers.cjs.js.map +1 -0
  344. package/dist/domains/dashboards/lib/answers.d.ts +1 -0
  345. package/dist/domains/dashboards/lib/answers.es.js +37 -0
  346. package/dist/domains/dashboards/lib/answers.es.js.map +1 -0
  347. package/dist/domains/dashboards/lib/chrome.cjs.js +41 -0
  348. package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -0
  349. package/dist/domains/dashboards/lib/chrome.d.ts +1 -0
  350. package/dist/domains/dashboards/lib/chrome.es.js +37 -0
  351. package/dist/domains/dashboards/lib/chrome.es.js.map +1 -0
  352. package/dist/domains/dashboards/lib/definition.cjs.js +59 -0
  353. package/dist/domains/dashboards/lib/definition.cjs.js.map +1 -0
  354. package/dist/domains/dashboards/lib/definition.d.ts +1 -0
  355. package/dist/domains/dashboards/lib/definition.es.js +55 -0
  356. package/dist/domains/dashboards/lib/definition.es.js.map +1 -0
  357. package/dist/domains/dashboards/lib/filters.cjs.js +44 -0
  358. package/dist/domains/dashboards/lib/filters.cjs.js.map +1 -0
  359. package/dist/domains/dashboards/lib/filters.d.ts +1 -0
  360. package/dist/domains/dashboards/lib/filters.es.js +43 -0
  361. package/dist/domains/dashboards/lib/filters.es.js.map +1 -0
  362. package/dist/domains/dashboards/lib/format.cjs.js +32 -0
  363. package/dist/domains/dashboards/lib/format.cjs.js.map +1 -0
  364. package/dist/domains/dashboards/lib/format.d.ts +1 -0
  365. package/dist/domains/dashboards/lib/format.es.js +30 -0
  366. package/dist/domains/dashboards/lib/format.es.js.map +1 -0
  367. package/dist/domains/dashboards/lib/prepare-widget.cjs.js +77 -0
  368. package/dist/domains/dashboards/lib/prepare-widget.cjs.js.map +1 -0
  369. package/dist/domains/dashboards/lib/prepare-widget.d.ts +1 -0
  370. package/dist/domains/dashboards/lib/prepare-widget.es.js +75 -0
  371. package/dist/domains/dashboards/lib/prepare-widget.es.js.map +1 -0
  372. package/dist/domains/dashboards/lib/requests.cjs.js +279 -0
  373. package/dist/domains/dashboards/lib/requests.cjs.js.map +1 -0
  374. package/dist/domains/dashboards/lib/requests.d.ts +1 -0
  375. package/dist/domains/dashboards/lib/requests.es.js +273 -0
  376. package/dist/domains/dashboards/lib/requests.es.js.map +1 -0
  377. package/dist/domains/dashboards/lib/scores.cjs.js +58 -0
  378. package/dist/domains/dashboards/lib/scores.cjs.js.map +1 -0
  379. package/dist/domains/dashboards/lib/scores.d.ts +1 -0
  380. package/dist/domains/dashboards/lib/scores.es.js +53 -0
  381. package/dist/domains/dashboards/lib/scores.es.js.map +1 -0
  382. package/dist/domains/dashboards/lib/table.cjs.js +408 -0
  383. package/dist/domains/dashboards/lib/table.cjs.js.map +1 -0
  384. package/dist/domains/dashboards/lib/table.d.ts +1 -0
  385. package/dist/domains/dashboards/lib/table.es.js +388 -0
  386. package/dist/domains/dashboards/lib/table.es.js.map +1 -0
  387. package/dist/domains/dashboards/lib/timeseries.cjs.js +192 -0
  388. package/dist/domains/dashboards/lib/timeseries.cjs.js.map +1 -0
  389. package/dist/domains/dashboards/lib/timeseries.d.ts +1 -0
  390. package/dist/domains/dashboards/lib/timeseries.es.js +188 -0
  391. package/dist/domains/dashboards/lib/timeseries.es.js.map +1 -0
  392. package/dist/domains/dashboards/lib/values.cjs.js +155 -0
  393. package/dist/domains/dashboards/lib/values.cjs.js.map +1 -0
  394. package/dist/domains/dashboards/lib/values.d.ts +1 -0
  395. package/dist/domains/dashboards/lib/values.es.js +142 -0
  396. package/dist/domains/dashboards/lib/values.es.js.map +1 -0
  397. package/dist/domains/dashboards/metrics-dashboard.cjs.js +737 -0
  398. package/dist/domains/dashboards/metrics-dashboard.cjs.js.map +1 -0
  399. package/dist/domains/dashboards/metrics-dashboard.d.ts +1 -0
  400. package/dist/domains/dashboards/metrics-dashboard.es.js +736 -0
  401. package/dist/domains/dashboards/metrics-dashboard.es.js.map +1 -0
  402. package/dist/domains/dashboards/widget-kind.cjs.js +7 -0
  403. package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -0
  404. package/dist/domains/dashboards/widget-kind.d.ts +1 -0
  405. package/dist/domains/dashboards/widget-kind.es.js +6 -0
  406. package/dist/domains/dashboards/widget-kind.es.js.map +1 -0
  407. package/dist/domains/dashboards.cjs.js +39 -0
  408. package/dist/domains/dashboards.d.ts +1 -0
  409. package/dist/domains/dashboards.es.js +18 -0
  410. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  411. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  412. package/dist/domains/logs/components/logs-saved-views.cjs.js +14 -0
  413. package/dist/domains/logs/components/logs-saved-views.cjs.js.map +1 -0
  414. package/dist/domains/logs/components/logs-saved-views.d.ts +1 -0
  415. package/dist/domains/logs/components/logs-saved-views.es.js +13 -0
  416. package/dist/domains/logs/components/logs-saved-views.es.js.map +1 -0
  417. package/dist/domains/logs/components.cjs.js +2 -0
  418. package/dist/domains/logs/components.es.js +2 -1
  419. package/dist/domains/logs/hooks/use-logs-url-state.cjs.js +1 -1
  420. package/dist/domains/logs/hooks/use-logs-url-state.cjs.js.map +1 -1
  421. package/dist/domains/logs/hooks/use-logs-url-state.es.js +2 -2
  422. package/dist/domains/logs/hooks/use-logs-url-state.es.js.map +1 -1
  423. package/dist/domains/logs/log-filters.cjs.js +11 -0
  424. package/dist/domains/logs/log-filters.cjs.js.map +1 -1
  425. package/dist/domains/logs/log-filters.es.js +9 -1
  426. package/dist/domains/logs/log-filters.es.js.map +1 -1
  427. package/dist/domains/logs.cjs.js +6 -1
  428. package/dist/domains/logs.es.js +3 -2
  429. package/dist/domains/metrics/components/agent-runs-card.cjs.js +38 -15
  430. package/dist/domains/metrics/components/agent-runs-card.cjs.js.map +1 -1
  431. package/dist/domains/metrics/components/agent-runs-card.es.js +38 -15
  432. package/dist/domains/metrics/components/agent-runs-card.es.js.map +1 -1
  433. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js +4 -11
  434. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js.map +1 -1
  435. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js +4 -11
  436. package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js.map +1 -1
  437. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js +2 -4
  438. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js.map +1 -1
  439. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js +2 -4
  440. package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js.map +1 -1
  441. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.cjs.js +1 -1
  442. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.es.js +1 -1
  443. package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js +16 -27
  444. package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js.map +1 -1
  445. package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js +16 -27
  446. package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js.map +1 -1
  447. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.cjs.js +1 -1
  448. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.es.js +1 -1
  449. package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js +22 -0
  450. package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js.map +1 -0
  451. package/dist/domains/metrics/components/breakdown/breakdown-name.d.ts +1 -0
  452. package/dist/domains/metrics/components/breakdown/breakdown-name.es.js +21 -0
  453. package/dist/domains/metrics/components/breakdown/breakdown-name.es.js.map +1 -0
  454. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js +13 -0
  455. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js.map +1 -0
  456. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +1 -0
  457. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js +12 -0
  458. package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js.map +1 -0
  459. package/dist/domains/metrics/components/breakdown/breakdown-projects-first.cjs.js +1 -1
  460. package/dist/domains/metrics/components/breakdown/breakdown-projects-first.es.js +1 -1
  461. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js +26 -13
  462. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js.map +1 -1
  463. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js +25 -14
  464. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js.map +1 -1
  465. package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js +10 -13
  466. package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js.map +1 -1
  467. package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js +11 -14
  468. package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js.map +1 -1
  469. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +1 -1
  470. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +1 -1
  471. package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +5 -5
  472. package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +5 -5
  473. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.cjs.js +1 -1
  474. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.es.js +1 -1
  475. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js +25 -0
  476. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js.map +1 -0
  477. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +1 -0
  478. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js +24 -0
  479. package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js.map +1 -0
  480. package/dist/domains/metrics/components/breakdown-card.cjs.js +3 -3
  481. package/dist/domains/metrics/components/breakdown-card.es.js +3 -3
  482. package/dist/domains/metrics/components/card-action-buttons.cjs.js +43 -3
  483. package/dist/domains/metrics/components/card-action-buttons.cjs.js.map +1 -1
  484. package/dist/domains/metrics/components/card-action-buttons.es.js +42 -5
  485. package/dist/domains/metrics/components/card-action-buttons.es.js.map +1 -1
  486. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  487. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  488. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  489. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  490. package/dist/domains/metrics/components/chart-card.cjs.js +39 -38
  491. package/dist/domains/metrics/components/chart-card.cjs.js.map +1 -1
  492. package/dist/domains/metrics/components/chart-card.es.js +39 -38
  493. package/dist/domains/metrics/components/chart-card.es.js.map +1 -1
  494. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  495. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  496. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +15 -16
  497. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js.map +1 -1
  498. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +16 -16
  499. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js.map +1 -1
  500. package/dist/domains/metrics/components/distinct-ids-card.cjs.js +0 -1
  501. package/dist/domains/metrics/components/distinct-ids-card.cjs.js.map +1 -1
  502. package/dist/domains/metrics/components/distinct-ids-card.es.js +1 -2
  503. package/dist/domains/metrics/components/distinct-ids-card.es.js.map +1 -1
  504. package/dist/domains/metrics/components/failure-rate-card.cjs.js +11 -14
  505. package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
  506. package/dist/domains/metrics/components/failure-rate-card.es.js +11 -14
  507. package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
  508. package/dist/domains/metrics/components/kpi-card.cjs.js +8 -5
  509. package/dist/domains/metrics/components/kpi-card.cjs.js.map +1 -1
  510. package/dist/domains/metrics/components/kpi-card.es.js +8 -5
  511. package/dist/domains/metrics/components/kpi-card.es.js.map +1 -1
  512. package/dist/domains/metrics/components/latency-card.cjs.js +33 -30
  513. package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
  514. package/dist/domains/metrics/components/latency-card.es.js +34 -31
  515. package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
  516. package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js +5 -2
  517. package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js.map +1 -1
  518. package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js +5 -2
  519. package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js.map +1 -1
  520. package/dist/domains/metrics/components/scores-card.cjs.js +7 -17
  521. package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
  522. package/dist/domains/metrics/components/scores-card.es.js +7 -17
  523. package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
  524. package/dist/domains/metrics/components/token-usage-card.cjs.js +29 -26
  525. package/dist/domains/metrics/components/token-usage-card.cjs.js.map +1 -1
  526. package/dist/domains/metrics/components/token-usage-card.es.js +30 -27
  527. package/dist/domains/metrics/components/token-usage-card.es.js.map +1 -1
  528. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +3 -2
  529. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js.map +1 -1
  530. package/dist/domains/metrics/components/trace-aggregate-card.es.js +3 -2
  531. package/dist/domains/metrics/components/trace-aggregate-card.es.js.map +1 -1
  532. package/dist/domains/metrics/components/trace-volume-card.cjs.js +31 -35
  533. package/dist/domains/metrics/components/trace-volume-card.cjs.js.map +1 -1
  534. package/dist/domains/metrics/components/trace-volume-card.es.js +31 -35
  535. package/dist/domains/metrics/components/trace-volume-card.es.js.map +1 -1
  536. package/dist/domains/metrics/components/usage-card.cjs.js +29 -28
  537. package/dist/domains/metrics/components/usage-card.cjs.js.map +1 -1
  538. package/dist/domains/metrics/components/usage-card.es.js +30 -29
  539. package/dist/domains/metrics/components/usage-card.es.js.map +1 -1
  540. package/dist/domains/metrics/components.cjs.js +6 -5
  541. package/dist/domains/metrics/components.es.js +4 -5
  542. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  543. package/dist/domains/metrics/drilldown.es.js +1 -1
  544. package/dist/domains/metrics/hooks/use-metrics-activity.cjs.js +1 -1
  545. package/dist/domains/metrics/hooks/use-metrics-activity.es.js +1 -1
  546. package/dist/domains/metrics/hooks/use-metrics-latency.cjs.js +1 -1
  547. package/dist/domains/metrics/hooks/use-metrics-latency.es.js +1 -1
  548. package/dist/domains/metrics/hooks/use-metrics-scores.cjs.js +1 -1
  549. package/dist/domains/metrics/hooks/use-metrics-scores.es.js +1 -1
  550. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.cjs.js +1 -1
  551. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.es.js +1 -1
  552. package/dist/domains/metrics/hooks.cjs.js +1 -1
  553. package/dist/domains/metrics/hooks.es.js +1 -1
  554. package/dist/domains/metrics/lib/breakdown-table.cjs.js +2 -2
  555. package/dist/domains/metrics/lib/breakdown-table.es.js +2 -2
  556. package/dist/domains/metrics/lib.cjs.js +2 -2
  557. package/dist/domains/metrics/lib.es.js +2 -2
  558. package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
  559. package/dist/domains/metrics/metrics-filters.es.js +1 -1
  560. package/dist/domains/metrics.cjs.js +14 -13
  561. package/dist/domains/metrics.es.js +12 -13
  562. package/dist/domains/observability/components/observability-header-slot.cjs.js +13 -0
  563. package/dist/domains/observability/components/observability-header-slot.cjs.js.map +1 -0
  564. package/dist/domains/observability/components/observability-header-slot.d.ts +1 -0
  565. package/dist/domains/observability/components/observability-header-slot.es.js +11 -0
  566. package/dist/domains/observability/components/observability-header-slot.es.js.map +1 -0
  567. package/dist/domains/observability/components/observability-histogram.cjs.js +6 -2
  568. package/dist/domains/observability/components/observability-histogram.cjs.js.map +1 -1
  569. package/dist/domains/observability/components/observability-histogram.es.js +6 -2
  570. package/dist/domains/observability/components/observability-histogram.es.js.map +1 -1
  571. package/dist/domains/observability/components/observability-page-layout.cjs.js +19 -5
  572. package/dist/domains/observability/components/observability-page-layout.cjs.js.map +1 -1
  573. package/dist/domains/observability/components/observability-page-layout.es.js +20 -6
  574. package/dist/domains/observability/components/observability-page-layout.es.js.map +1 -1
  575. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +75 -18
  576. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js.map +1 -1
  577. package/dist/domains/observability/hooks/use-observability-list-filters.es.js +76 -19
  578. package/dist/domains/observability/hooks/use-observability-list-filters.es.js.map +1 -1
  579. package/dist/domains/observability/lib/zoom-memory.cjs.js +24 -0
  580. package/dist/domains/observability/lib/zoom-memory.cjs.js.map +1 -0
  581. package/dist/domains/observability/lib/zoom-memory.d.ts +1 -0
  582. package/dist/domains/observability/lib/zoom-memory.es.js +22 -0
  583. package/dist/domains/observability/lib/zoom-memory.es.js.map +1 -0
  584. package/dist/domains/observability/observability-list-url-state.cjs.js +122 -0
  585. package/dist/domains/observability/observability-list-url-state.cjs.js.map +1 -0
  586. package/dist/domains/observability/observability-list-url-state.d.ts +1 -0
  587. package/dist/domains/observability/observability-list-url-state.es.js +111 -0
  588. package/dist/domains/observability/observability-list-url-state.es.js.map +1 -0
  589. package/dist/domains/observability/saved-view-state.cjs.js +292 -0
  590. package/dist/domains/observability/saved-view-state.cjs.js.map +1 -0
  591. package/dist/domains/observability/saved-view-state.d.ts +1 -0
  592. package/dist/domains/observability/saved-view-state.es.js +286 -0
  593. package/dist/domains/observability/saved-view-state.es.js.map +1 -0
  594. package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +3 -0
  595. package/dist/domains/observability/saved-views/observability-saved-views.d.ts +1 -0
  596. package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -0
  597. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js +18 -0
  598. package/dist/domains/observability/saved-views/saved-views-provider.cjs.js.map +1 -0
  599. package/dist/domains/observability/saved-views/saved-views-provider.d.ts +1 -0
  600. package/dist/domains/observability/saved-views/saved-views-provider.es.js +17 -0
  601. package/dist/domains/observability/saved-views/saved-views-provider.es.js.map +1 -0
  602. package/dist/domains/observability/saved-views/saved-views-source.cjs.js +23 -0
  603. package/dist/domains/observability/saved-views/saved-views-source.cjs.js.map +1 -0
  604. package/dist/domains/observability/saved-views/saved-views-source.d.ts +1 -0
  605. package/dist/domains/observability/saved-views/saved-views-source.es.js +19 -0
  606. package/dist/domains/observability/saved-views/saved-views-source.es.js.map +1 -0
  607. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +235 -0
  608. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js.map +1 -0
  609. package/dist/domains/observability/saved-views/use-hosted-saved-views.d.ts +1 -0
  610. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +232 -0
  611. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js.map +1 -0
  612. package/dist/domains/observability/saved-views.cjs.js +7 -0
  613. package/dist/domains/observability/saved-views.d.ts +1 -0
  614. package/dist/domains/observability/saved-views.es.js +4 -0
  615. package/dist/domains/observability.cjs.js +6 -0
  616. package/dist/domains/observability.es.js +4 -1
  617. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  618. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  619. package/dist/domains/scores/components/trace-scores-list.cjs.js +1 -1
  620. package/dist/domains/scores/components/trace-scores-list.es.js +1 -1
  621. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
  622. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  623. package/dist/domains/skills/skill-simple-form.cjs.js +1 -1
  624. package/dist/domains/skills/skill-simple-form.es.js +1 -1
  625. package/dist/domains/spans/components/spans-explorer-body.cjs.js +64 -18
  626. package/dist/domains/spans/components/spans-explorer-body.cjs.js.map +1 -1
  627. package/dist/domains/spans/components/spans-explorer-body.es.js +64 -18
  628. package/dist/domains/spans/components/spans-explorer-body.es.js.map +1 -1
  629. package/dist/domains/spans/components/spans-filter-bar.cjs.js +6 -5
  630. package/dist/domains/spans/components/spans-filter-bar.cjs.js.map +1 -1
  631. package/dist/domains/spans/components/spans-filter-bar.es.js +6 -5
  632. package/dist/domains/spans/components/spans-filter-bar.es.js.map +1 -1
  633. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +15 -3
  634. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js.map +1 -1
  635. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +15 -3
  636. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js.map +1 -1
  637. package/dist/domains/spans/span-filters.cjs.js +53 -14
  638. package/dist/domains/spans/span-filters.cjs.js.map +1 -1
  639. package/dist/domains/spans/span-filters.es.js +52 -15
  640. package/dist/domains/spans/span-filters.es.js.map +1 -1
  641. package/dist/domains/spans/span-list-row.cjs.js +6 -1
  642. package/dist/domains/spans/span-list-row.cjs.js.map +1 -1
  643. package/dist/domains/spans/span-list-row.es.js +6 -1
  644. package/dist/domains/spans/span-list-row.es.js.map +1 -1
  645. package/dist/domains/threads/components/threads-explorer-body.cjs.js +45 -12
  646. package/dist/domains/threads/components/threads-explorer-body.cjs.js.map +1 -1
  647. package/dist/domains/threads/components/threads-explorer-body.es.js +46 -12
  648. package/dist/domains/threads/components/threads-explorer-body.es.js.map +1 -1
  649. package/dist/domains/threads/components/threads-filter-bar.cjs.js +3 -3
  650. package/dist/domains/threads/components/threads-filter-bar.es.js +3 -3
  651. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +14 -3
  652. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js.map +1 -1
  653. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +14 -3
  654. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js.map +1 -1
  655. package/dist/domains/threads/thread-filters.cjs.js +26 -13
  656. package/dist/domains/threads/thread-filters.cjs.js.map +1 -1
  657. package/dist/domains/threads/thread-filters.es.js +26 -13
  658. package/dist/domains/threads/thread-filters.es.js.map +1 -1
  659. package/dist/domains/threads/thread-list-row.cjs.js +2 -0
  660. package/dist/domains/threads/thread-list-row.cjs.js.map +1 -1
  661. package/dist/domains/threads/thread-list-row.es.js +2 -0
  662. package/dist/domains/threads/thread-list-row.es.js.map +1 -1
  663. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +24 -19
  664. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js.map +1 -1
  665. package/dist/domains/traces/components/columns-menu/columns-menu.es.js +25 -20
  666. package/dist/domains/traces/components/columns-menu/columns-menu.es.js.map +1 -1
  667. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  668. package/dist/domains/traces/components/feedback-thread.es.js +1 -1
  669. package/dist/domains/traces/components/span-data-panel-view.cjs.js +12 -2
  670. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  671. package/dist/domains/traces/components/span-data-panel-view.es.js +12 -2
  672. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  673. package/dist/domains/traces/components/span-outcome.utils.cjs.js +1 -1
  674. package/dist/domains/traces/components/span-outcome.utils.es.js +1 -1
  675. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  676. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  677. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  678. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  679. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  680. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  681. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
  682. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
  683. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  684. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  685. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  686. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  687. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  688. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  689. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +2 -2
  690. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +2 -2
  691. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
  692. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
  693. package/dist/domains/traces/components/span-prompt-changes.cjs.js +1 -1
  694. package/dist/domains/traces/components/span-prompt-changes.es.js +1 -1
  695. package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -1
  696. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  697. package/dist/domains/traces/components/trace-columns-menu.es.js +2 -1
  698. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  699. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +9 -2
  700. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  701. package/dist/domains/traces/components/trace-data-panel-view.es.js +9 -2
  702. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  703. package/dist/domains/traces/components/trace-span-panel.cjs.js +2 -1
  704. package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
  705. package/dist/domains/traces/components/trace-span-panel.es.js +2 -1
  706. package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
  707. package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js +120 -0
  708. package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js.map +1 -0
  709. package/dist/domains/traces/components/trace-span-timeline-markers.d.ts +1 -0
  710. package/dist/domains/traces/components/trace-span-timeline-markers.es.js +119 -0
  711. package/dist/domains/traces/components/trace-span-timeline-markers.es.js.map +1 -0
  712. package/dist/domains/traces/components/trace-span-timeline.cjs.js +8 -5
  713. package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
  714. package/dist/domains/traces/components/trace-span-timeline.es.js +8 -5
  715. package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
  716. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +5 -5
  717. package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +1 -1
  718. package/dist/domains/traces/components/trace-time-range-chip.es.js +5 -5
  719. package/dist/domains/traces/components/trace-time-range-chip.es.js.map +1 -1
  720. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +15 -11
  721. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js.map +1 -1
  722. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +15 -12
  723. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js.map +1 -1
  724. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js +4 -3
  725. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -1
  726. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js +4 -3
  727. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -1
  728. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +5 -4
  729. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -1
  730. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +5 -4
  731. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -1
  732. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js +13 -5
  733. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js.map +1 -1
  734. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js +13 -5
  735. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js.map +1 -1
  736. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +5 -2
  737. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -1
  738. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +5 -2
  739. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -1
  740. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +7 -11
  741. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js.map +1 -1
  742. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +7 -11
  743. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js.map +1 -1
  744. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +3 -1
  745. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -1
  746. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +3 -1
  747. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -1
  748. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +51 -5
  749. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -1
  750. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +51 -5
  751. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -1
  752. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +20 -0
  753. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js.map +1 -0
  754. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +1 -0
  755. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +19 -0
  756. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js.map +1 -0
  757. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +10 -4
  758. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -1
  759. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +10 -4
  760. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -1
  761. package/dist/domains/traces/components/traces-explorer.cjs.js +4 -1
  762. package/dist/domains/traces/components/traces-explorer.cjs.js.map +1 -1
  763. package/dist/domains/traces/components/traces-explorer.es.js +5 -3
  764. package/dist/domains/traces/components/traces-explorer.es.js.map +1 -1
  765. package/dist/domains/traces/components/traces-list-view-adapter.cjs.js +5 -1
  766. package/dist/domains/traces/components/traces-list-view-adapter.cjs.js.map +1 -1
  767. package/dist/domains/traces/components/traces-list-view-adapter.es.js +5 -1
  768. package/dist/domains/traces/components/traces-list-view-adapter.es.js.map +1 -1
  769. package/dist/domains/traces/components/traces-list-view.cjs.js +53 -18
  770. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  771. package/dist/domains/traces/components/traces-list-view.es.js +53 -18
  772. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  773. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
  774. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
  775. package/dist/domains/traces/trace-filters.cjs.js +5 -1
  776. package/dist/domains/traces/trace-filters.es.js +1 -1
  777. package/dist/domains/traces/trace-list-columns.cjs.js +48 -9
  778. package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
  779. package/dist/domains/traces/trace-list-columns.es.js +48 -9
  780. package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
  781. package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
  782. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  783. package/dist/domains/traces/utils/timeline-markers.cjs.js +34 -0
  784. package/dist/domains/traces/utils/timeline-markers.cjs.js.map +1 -0
  785. package/dist/domains/traces/utils/timeline-markers.d.ts +1 -0
  786. package/dist/domains/traces/utils/timeline-markers.es.js +33 -0
  787. package/dist/domains/traces/utils/timeline-markers.es.js.map +1 -0
  788. package/dist/domains/traces.cjs.js +5 -1
  789. package/dist/domains/traces.es.js +2 -2
  790. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  791. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  792. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +1 -1
  793. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +1 -1
  794. package/dist/domains/workflows/workflow/workflow-graph.cjs.js +1 -1
  795. package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
  796. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  797. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  798. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
  799. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
  800. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +1 -1
  801. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +1 -1
  802. package/dist/{filter-bar-chip-B3pgpngW.js → filter-bar-chip-7O02P9Vk.js} +27 -9
  803. package/dist/filter-bar-chip-7O02P9Vk.js.map +1 -0
  804. package/dist/{filter-bar-chip-CyTAmjt6.cjs → filter-bar-chip-BUyMf8XQ.cjs} +40 -22
  805. package/dist/filter-bar-chip-BUyMf8XQ.cjs.map +1 -0
  806. package/dist/layout/tabbed-container.cjs.js +1 -1
  807. package/dist/layout/tabbed-container.es.js +1 -1
  808. package/dist/lib/form/json-schema-to-zod-runtime.cjs.js +4 -4
  809. package/dist/lib/form/json-schema-to-zod-runtime.cjs.js.map +1 -1
  810. package/dist/lib/form/json-schema-to-zod-runtime.es.js +4 -4
  811. package/dist/lib/form/json-schema-to-zod-runtime.es.js.map +1 -1
  812. package/dist/lib/form/zod-provider.cjs.js +5 -1
  813. package/dist/lib/form/zod-provider.cjs.js.map +1 -1
  814. package/dist/lib/form/zod-provider.es.js +5 -1
  815. package/dist/lib/form/zod-provider.es.js.map +1 -1
  816. package/dist/observability-saved-views-Bo5kLN20.js +297 -0
  817. package/dist/observability-saved-views-Bo5kLN20.js.map +1 -0
  818. package/dist/observability-saved-views-CwCii7hh.cjs +302 -0
  819. package/dist/observability-saved-views-CwCii7hh.cjs.map +1 -0
  820. package/dist/primitives/chart-axes.cjs.js +44 -0
  821. package/dist/primitives/chart-axes.cjs.js.map +1 -1
  822. package/dist/primitives/chart-axes.es.js +43 -1
  823. package/dist/primitives/chart-axes.es.js.map +1 -1
  824. package/dist/primitives/chart-frame.cjs.js +5 -3
  825. package/dist/primitives/chart-frame.cjs.js.map +1 -1
  826. package/dist/primitives/chart-frame.es.js +6 -4
  827. package/dist/primitives/chart-frame.es.js.map +1 -1
  828. package/dist/primitives/chart-time-tick.cjs.js +15 -11
  829. package/dist/primitives/chart-time-tick.cjs.js.map +1 -1
  830. package/dist/primitives/chart-time-tick.es.js +16 -12
  831. package/dist/primitives/chart-time-tick.es.js.map +1 -1
  832. package/dist/saved-view-schema-DRJYELfK.cjs +71 -0
  833. package/dist/saved-view-schema-DRJYELfK.cjs.map +1 -0
  834. package/dist/saved-view-schema-eJXlRRel.js +54 -0
  835. package/dist/saved-view-schema-eJXlRRel.js.map +1 -0
  836. package/dist/{span-payload-primitives-D3OO0u6u.cjs → span-payload-primitives-B10Xxmx7.cjs} +4 -4
  837. package/dist/{span-payload-primitives-D3OO0u6u.cjs.map → span-payload-primitives-B10Xxmx7.cjs.map} +1 -1
  838. package/dist/{span-payload-primitives-DTV7eUY-.js → span-payload-primitives-Dyhbqaa7.js} +4 -4
  839. package/dist/{span-payload-primitives-DTV7eUY-.js.map → span-payload-primitives-Dyhbqaa7.js.map} +1 -1
  840. package/dist/src/domains/chat/activity/activity-stretch-line.d.ts +4 -2
  841. package/dist/src/domains/chat/activity/components/activity-fold.d.ts +5 -4
  842. package/dist/src/domains/chat/activity/components/use-fading-edge.d.ts +6 -0
  843. package/dist/src/domains/chat/activity/components/use-rolling-words.d.ts +7 -0
  844. package/dist/src/domains/chat/activity/index.d.ts +2 -1
  845. package/dist/src/domains/chat/activity/model/activity-members.d.ts +1 -0
  846. package/dist/src/domains/chat/activity/model/activity-words.d.ts +3 -0
  847. package/dist/src/domains/chat/messages/renderers/tool-part.d.ts +4 -0
  848. package/dist/src/domains/chat/messages/skill-message.d.ts +3 -1
  849. package/dist/src/domains/chat/tools/badges/mcp-task-chip.d.ts +14 -0
  850. package/dist/src/domains/chat/tools/badges/tool-badge.d.ts +5 -1
  851. package/dist/src/domains/chat/tools/badges/use-mcp-task-progress.d.ts +27 -0
  852. package/dist/src/domains/chat/tools/tool-card.d.ts +5 -1
  853. package/dist/src/domains/dashboards/components/dashboard-grid.d.ts +18 -0
  854. package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +19 -0
  855. package/dist/src/domains/dashboards/components/view-gate.d.ts +30 -0
  856. package/dist/src/domains/dashboards/components/widget-chrome.d.ts +7 -0
  857. package/dist/src/domains/dashboards/components/widget-controls.d.ts +8 -0
  858. package/dist/src/domains/dashboards/components/widget-error.d.ts +6 -0
  859. package/dist/src/domains/dashboards/hooks/use-dashboard-requests.d.ts +10 -0
  860. package/dist/src/domains/dashboards/hooks/use-scorers.d.ts +66 -0
  861. package/dist/src/domains/dashboards/hooks/use-widget-views.d.ts +18 -0
  862. package/dist/src/domains/dashboards/index.d.ts +19 -0
  863. package/dist/src/domains/dashboards/kinds/index.d.ts +7 -0
  864. package/dist/src/domains/dashboards/kinds/kpis/index.d.ts +13 -0
  865. package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +3 -0
  866. package/dist/src/domains/dashboards/kinds/kpis/options.d.ts +35 -0
  867. package/dist/src/domains/dashboards/kinds/scores/index.d.ts +8 -0
  868. package/dist/src/domains/dashboards/kinds/scores/options.d.ts +13 -0
  869. package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +3 -0
  870. package/dist/src/domains/dashboards/kinds/table/index.d.ts +23 -0
  871. package/dist/src/domains/dashboards/kinds/table/table-cells.d.ts +26 -0
  872. package/dist/src/domains/dashboards/kinds/table/table-columns.d.ts +7 -0
  873. package/dist/src/domains/dashboards/kinds/table/table-frame.d.ts +13 -0
  874. package/dist/src/domains/dashboards/kinds/table/table-tabs.d.ts +10 -0
  875. package/dist/src/domains/dashboards/kinds/table/table-view.d.ts +5 -0
  876. package/dist/src/domains/dashboards/kinds/table/table-widget.d.ts +7 -0
  877. package/dist/src/domains/dashboards/kinds/timeseries/index.d.ts +30 -0
  878. package/dist/src/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +5 -0
  879. package/dist/src/domains/dashboards/lib/answers.d.ts +43 -0
  880. package/dist/src/domains/dashboards/lib/chrome.d.ts +14 -0
  881. package/dist/src/domains/dashboards/lib/definition.d.ts +27 -0
  882. package/dist/src/domains/dashboards/lib/filters.d.ts +6 -0
  883. package/dist/src/domains/dashboards/lib/format.d.ts +7 -0
  884. package/dist/src/domains/dashboards/lib/prepare-widget.d.ts +26 -0
  885. package/dist/src/domains/dashboards/lib/requests.d.ts +95 -0
  886. package/dist/src/domains/dashboards/lib/scores.d.ts +35 -0
  887. package/dist/src/domains/dashboards/lib/table.d.ts +188 -0
  888. package/dist/src/domains/dashboards/lib/timeseries.d.ts +119 -0
  889. package/dist/src/domains/dashboards/lib/values.d.ts +86 -0
  890. package/dist/src/domains/dashboards/metrics-dashboard.d.ts +7 -0
  891. package/dist/src/domains/dashboards/widget-kind.d.ts +31 -0
  892. package/dist/src/domains/logs/components/index.d.ts +1 -0
  893. package/dist/src/domains/logs/components/logs-saved-views.d.ts +4 -0
  894. package/dist/src/domains/logs/log-filters.d.ts +8 -0
  895. package/dist/src/domains/metrics/components/agent-runs-card.d.ts +10 -3
  896. package/dist/src/domains/metrics/components/breakdown/breakdown-name.d.ts +13 -0
  897. package/dist/src/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +2 -0
  898. package/dist/src/domains/metrics/components/breakdown/breakdown-row-mark.d.ts +17 -4
  899. package/dist/src/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +9 -0
  900. package/dist/src/domains/metrics/components/card-action-buttons.d.ts +9 -0
  901. package/dist/src/domains/metrics/components/chart-card.d.ts +33 -21
  902. package/dist/src/domains/metrics/components/distinct-ids/distinct-ids-chart.d.ts +0 -1
  903. package/dist/src/domains/metrics/components/failure-rate-card.d.ts +5 -2
  904. package/dist/src/domains/metrics/components/index.d.ts +1 -2
  905. package/dist/src/domains/metrics/components/metrics-grid/metrics-grid.d.ts +4 -1
  906. package/dist/src/domains/metrics/components/trace-aggregate-card.d.ts +1 -1
  907. package/dist/src/domains/observability/components/observability-header-slot.d.ts +6 -0
  908. package/dist/src/domains/observability/components/observability-histogram.d.ts +1 -1
  909. package/dist/src/domains/observability/hooks/use-observability-list-filters.d.ts +21 -5
  910. package/dist/src/domains/observability/index.d.ts +2 -0
  911. package/dist/src/domains/observability/lib/zoom-memory.d.ts +19 -0
  912. package/dist/src/domains/observability/observability-list-url-state.d.ts +39 -0
  913. package/dist/src/domains/observability/saved-view-state.d.ts +46 -0
  914. package/dist/src/domains/observability/saved-views/index.d.ts +7 -0
  915. package/dist/src/domains/observability/saved-views/observability-saved-views.d.ts +22 -0
  916. package/dist/src/domains/observability/saved-views/saved-views-provider.d.ts +15 -0
  917. package/dist/src/domains/observability/saved-views/saved-views-source.d.ts +41 -0
  918. package/dist/src/domains/observability/saved-views/use-hosted-saved-views.d.ts +34 -0
  919. package/dist/src/domains/spans/components/spans-explorer-body.d.ts +4 -1
  920. package/dist/src/domains/spans/components/spans-filter-bar.d.ts +3 -1
  921. package/dist/src/domains/spans/hooks/use-spans-filter-bar.d.ts +1 -1
  922. package/dist/src/domains/spans/hooks/use-spans-list-source.d.ts +3 -0
  923. package/dist/src/domains/spans/span-filters.d.ts +16 -5
  924. package/dist/src/domains/threads/components/threads-explorer-body.d.ts +4 -1
  925. package/dist/src/domains/threads/thread-filters.d.ts +6 -5
  926. package/dist/src/domains/traces/components/columns-menu/columns-menu.d.ts +3 -3
  927. package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +7 -1
  928. package/dist/src/domains/traces/components/trace-span-panel.d.ts +2 -1
  929. package/dist/src/domains/traces/components/trace-span-timeline-markers.d.ts +5 -0
  930. package/dist/src/domains/traces/components/trace-span-timeline.d.ts +6 -1
  931. package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +3 -1
  932. package/dist/src/domains/traces/components/traces-explorer/index.d.ts +4 -1
  933. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +5 -5
  934. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +11 -1
  935. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +7 -0
  936. package/dist/src/domains/traces/components/traces-list-view.d.ts +20 -7
  937. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +5 -0
  938. package/dist/src/domains/traces/trace-filters.d.ts +27 -3
  939. package/dist/src/domains/traces/trace-list-columns.d.ts +16 -6
  940. package/dist/src/domains/traces/utils/timeline-markers.d.ts +25 -0
  941. package/dist/src/domains/workflows/context/use-persisted-workflow-run.d.ts +2 -0
  942. package/dist/src/domains/workflows/workflow/input/processor-input.d.ts +5 -535
  943. package/dist/src/domains/workflows/workflow/use-workflow-trigger.d.ts +1 -1
  944. package/dist/src/ds/components/AgentIndicator/agent-glyph.d.ts +4 -0
  945. package/dist/src/ds/components/AgentIndicator/agent-indicator.d.ts +8 -0
  946. package/dist/src/ds/components/AgentIndicator/animate.d.ts +5 -0
  947. package/dist/src/ds/components/AgentIndicator/index.d.ts +4 -0
  948. package/dist/src/ds/components/AgentIndicator/paint.d.ts +21 -0
  949. package/dist/src/ds/components/AgentIndicator/poses.d.ts +7 -0
  950. package/dist/src/ds/components/AgentIndicator/shapes.d.ts +41 -0
  951. package/dist/src/ds/components/Arrival/arrival.d.ts +11 -0
  952. package/dist/src/ds/components/Arrival/index.d.ts +1 -1
  953. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list-cells.d.ts +12 -0
  954. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +3 -1
  955. package/dist/src/ds/components/FilterBar/types.d.ts +2 -0
  956. package/dist/src/ds/components/MetricsCard/index.d.ts +1 -1
  957. package/dist/src/ds/components/MetricsCard/metrics-card-actions.d.ts +2 -1
  958. package/dist/src/ds/components/MetricsCard/metrics-card-headline.d.ts +13 -0
  959. package/dist/src/ds/components/MetricsCard/metrics-card-title-menu.d.ts +2 -0
  960. package/dist/src/ds/components/MetricsCard/metrics-card-title.d.ts +1 -3
  961. package/dist/src/ds/components/MetricsCard/metrics-card-toolbar.d.ts +3 -3
  962. package/dist/src/ds/components/MetricsCard/metrics-card-total.d.ts +11 -3
  963. package/dist/src/ds/components/MetricsCard/metrics-card.d.ts +2 -9
  964. package/dist/src/ds/components/MetricsCard/metrics-story-data.d.ts +0 -26
  965. package/dist/src/ds/components/MetricsKpiCard/metrics-kpi-card-root.d.ts +5 -2
  966. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart-legend.d.ts +3 -4
  967. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +2 -6
  968. package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +3 -1
  969. package/dist/src/ds/components/SavedViews/saved-view-picker.d.ts +21 -0
  970. package/dist/src/ds/components/SavedViews/use-saved-views.d.ts +6 -2
  971. package/dist/src/ds/components/ai/activity/activity.d.ts +12 -7
  972. package/dist/src/ds/components/ai/activity/index.d.ts +1 -0
  973. package/dist/src/ds/components/ai/activity/presets/signal-activity.d.ts +4 -1
  974. package/dist/src/ds/components/ai/activity/use-relative-paths.d.ts +3 -0
  975. package/dist/src/ds/components/ai/message-reveal/message-reveal.d.ts +2 -1
  976. package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +4 -0
  977. package/dist/src/ds/primitives/chart-axes.d.ts +24 -0
  978. package/dist/src/ds/primitives/chart-frame.d.ts +2 -1
  979. package/dist/src/ds/primitives/chart-time-tick.d.ts +7 -4
  980. package/dist/src/lib/string.d.ts +1 -0
  981. package/dist/{string-OAgeMRQ5.js → string-CNKDIc_4.js} +6 -2
  982. package/dist/string-CNKDIc_4.js.map +1 -0
  983. package/dist/{string-CymY0aJ9.cjs → string-DdJJdCv2.cjs} +11 -1
  984. package/dist/string-DdJJdCv2.cjs.map +1 -0
  985. package/dist/style.css +67 -4
  986. package/dist/{tabbed-container-x2mfK07d.js → tabbed-container-BKUqfEKy.js} +2 -2
  987. package/dist/{tabbed-container-x2mfK07d.js.map → tabbed-container-BKUqfEKy.js.map} +1 -1
  988. package/dist/{tabbed-container-CBTb0LgE.cjs → tabbed-container-CFEImJOK.cjs} +2 -2
  989. package/dist/{tabbed-container-CBTb0LgE.cjs.map → tabbed-container-CFEImJOK.cjs.map} +1 -1
  990. package/dist/{tool-approval-6E73C0r6.cjs → tool-approval-BfjoSNOC.cjs} +4 -4
  991. package/dist/{tool-approval-6E73C0r6.cjs.map → tool-approval-BfjoSNOC.cjs.map} +1 -1
  992. package/dist/{tool-approval-BXlro6fV.js → tool-approval-FeuyUUcL.js} +4 -4
  993. package/dist/{tool-approval-BXlro6fV.js.map → tool-approval-FeuyUUcL.js.map} +1 -1
  994. package/dist/{tool-call-CItJ8KLA.js → tool-call-BxYXs9w0.js} +9 -7
  995. package/dist/{tool-call-CItJ8KLA.js.map → tool-call-BxYXs9w0.js.map} +1 -1
  996. package/dist/{tool-call-Dq9xF3WD.cjs → tool-call-CvilN9ti.cjs} +9 -7
  997. package/dist/{tool-call-Dq9xF3WD.cjs.map → tool-call-CvilN9ti.cjs.map} +1 -1
  998. package/dist/{tool-card-o5u4YCR0.cjs → tool-card-B7O8AsRl.cjs} +9 -5
  999. package/dist/tool-card-B7O8AsRl.cjs.map +1 -0
  1000. package/dist/{tool-card-Bd8weXze.js → tool-card-ELW898uw.js} +9 -5
  1001. package/dist/tool-card-ELW898uw.js.map +1 -0
  1002. package/dist/{tool-presentation-D2uUj1AB.cjs → tool-presentation-BLErsb7c.cjs} +38 -40
  1003. package/dist/tool-presentation-BLErsb7c.cjs.map +1 -0
  1004. package/dist/{tool-presentation-DKfIKLQy.js → tool-presentation-BSZYIWx2.js} +38 -40
  1005. package/dist/tool-presentation-BSZYIWx2.js.map +1 -0
  1006. package/dist/{trace-filters-C27yWcan.js → trace-filters-BJaebsxJ.js} +78 -11
  1007. package/dist/trace-filters-BJaebsxJ.js.map +1 -0
  1008. package/dist/{trace-filters-BpeBUjCb.cjs → trace-filters-BNEZ31HX.cjs} +100 -9
  1009. package/dist/trace-filters-BNEZ31HX.cjs.map +1 -0
  1010. package/dist/types-CP7wbYua.cjs.map +1 -1
  1011. package/dist/types-DiiL5mTO.js.map +1 -1
  1012. package/dist/utils/string.cjs.js +2 -1
  1013. package/dist/utils/string.es.js +1 -1
  1014. package/package.json +14 -14
  1015. package/dist/Arrival-Dm6Vgn78.cjs.map +0 -1
  1016. package/dist/Arrival-NpBOyV52.js.map +0 -1
  1017. package/dist/DataList-Cmk08jUV.cjs.map +0 -1
  1018. package/dist/DataList-Ve3omCXT.js.map +0 -1
  1019. package/dist/DateTimeRangePicker-ByMbLdom.js.map +0 -1
  1020. package/dist/DateTimeRangePicker-DGbH5WOn.cjs.map +0 -1
  1021. package/dist/FilterBar-Dk3QEuT6.js.map +0 -1
  1022. package/dist/FilterBar-gEvoWDXA.cjs.map +0 -1
  1023. package/dist/MetricsCard-C9GWgT58.js.map +0 -1
  1024. package/dist/MetricsCard-Dly_H3oX.cjs.map +0 -1
  1025. package/dist/MetricsLineChart-2m4LVL1N.cjs.map +0 -1
  1026. package/dist/MetricsLineChart-DKzuRU2q.js.map +0 -1
  1027. package/dist/MetricsStackedBarChart-DJB4aByt.js.map +0 -1
  1028. package/dist/MetricsStackedBarChart-NATtwA_W.cjs.map +0 -1
  1029. package/dist/activity-QyLJcBKc.cjs.map +0 -1
  1030. package/dist/activity-ihrl0JtH.js.map +0 -1
  1031. package/dist/combobox-C-E7_q4j.cjs.map +0 -1
  1032. package/dist/combobox-CDS2pBqz.js.map +0 -1
  1033. package/dist/domains/metrics/components/metrics-kpis.cjs.js +0 -106
  1034. package/dist/domains/metrics/components/metrics-kpis.cjs.js.map +0 -1
  1035. package/dist/domains/metrics/components/metrics-kpis.d.ts +0 -1
  1036. package/dist/domains/metrics/components/metrics-kpis.es.js +0 -105
  1037. package/dist/domains/metrics/components/metrics-kpis.es.js.map +0 -1
  1038. package/dist/filter-bar-chip-B3pgpngW.js.map +0 -1
  1039. package/dist/filter-bar-chip-CyTAmjt6.cjs.map +0 -1
  1040. package/dist/src/domains/metrics/components/metrics-kpis.d.ts +0 -2
  1041. package/dist/src/ds/components/MetricsCard/metrics-card-description.d.ts +0 -4
  1042. package/dist/src/ds/components/MetricsCard/metrics-card-summary.d.ts +0 -8
  1043. package/dist/src/ds/components/MetricsCard/metrics-card-tabs.d.ts +0 -16
  1044. package/dist/src/ds/components/MetricsCard/metrics-card-title-and-description.d.ts +0 -16
  1045. package/dist/string-CymY0aJ9.cjs.map +0 -1
  1046. package/dist/string-OAgeMRQ5.js.map +0 -1
  1047. package/dist/tool-card-Bd8weXze.js.map +0 -1
  1048. package/dist/tool-card-o5u4YCR0.cjs.map +0 -1
  1049. package/dist/tool-presentation-D2uUj1AB.cjs.map +0 -1
  1050. package/dist/tool-presentation-DKfIKLQy.js.map +0 -1
  1051. package/dist/trace-filters-BpeBUjCb.cjs.map +0 -1
  1052. package/dist/trace-filters-C27yWcan.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"chart-frame.cjs.js","names":["CHART_LABEL_COLOR","pickTimeTicks","XAxis","ChartTimeTick","chartYTickCount","niceYTicks","YAxis"],"sources":["../../src/ds/primitives/chart-frame.tsx"],"sourcesContent":["import { XAxis, YAxis } from 'recharts';\nimport { chartYTickCount, niceYTicks, pickTimeTicks } from './chart-axes';\nimport type { ChartSize, ChartXLabels } from './chart-axes';\nimport { CHART_AXIS_FONT_SIZE, X_AXIS_HEIGHT } from './chart-layout';\nimport { ChartTimeTick } from './chart-time-tick';\nimport type { ChartTimeTickProps } from './chart-time-tick';\nimport { CHART_LABEL_COLOR } from '@/ds/tokens';\n\n/** A chart's height: pixels, or `fill` to grow with its parent (a flex column, e.g. a card). */\nexport type ChartHeight = number | 'fill';\n\nexport const compactNumber = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\nexport const CHART_TICK = { fontSize: CHART_AXIS_FONT_SIZE, fill: CHART_LABEL_COLOR };\n\n/** The x-axis of a time series: labels from `xKey`, placed on clock times from `timestampKey`. */\nexport function timeXAxis({\n data,\n xKey,\n timestampKey,\n xLabels,\n plotWidth,\n}: {\n data: Record<string, unknown>[];\n xKey: string;\n timestampKey: string;\n xLabels: ChartXLabels;\n plotWidth: number;\n}) {\n const labels = data.map(row => String(row[xKey] ?? ''));\n const timestamps = data.map(row => {\n const t = row[timestampKey];\n return typeof t === 'number' ? t : undefined;\n });\n const picked = pickTimeTicks(timestamps, labels, plotWidth, xLabels);\n return (\n <XAxis\n dataKey={xKey}\n height={X_AXIS_HEIGHT}\n tick={(props: Omit<ChartTimeTickProps, 'picked' | 'count' | 'plotWidth'>) => (\n <ChartTimeTick {...props} picked={picked} count={data.length} plotWidth={plotWidth} />\n )}\n tickLine={false}\n axisLine={false}\n tickMargin={6}\n // Render every tick slot; ChartTimeTick decides which ones print a label.\n interval={0}\n />\n );\n}\n\n/**\n * Room the y-axis labels take at most. The axis itself is as wide as its longest label, so the\n * labels line up with the card's content; this only sizes the plot for spacing the x labels.\n */\nexport const Y_AXIS_WIDTH = 44;\n\nexport function valueYAxis({\n id = 0,\n show,\n size,\n formatter,\n domain,\n max,\n integer = false,\n right = false,\n}: {\n id?: string | number;\n show: boolean;\n size: ChartSize;\n formatter: (value: number) => string;\n /** Fixed range; Recharts spaces the ticks in it. */\n domain?: [number, number];\n /** Largest value plotted on this axis (a stack's total for stacked bars); the ticks round up from it. */\n max?: number;\n /** Whole-number data (counts): ticks on whole numbers. */\n integer?: boolean;\n right?: boolean;\n}) {\n const tickCount = chartYTickCount(size.height);\n // Recharts rounds its step up to fit the tick count, so a $4.40 peak got an $8 axis.\n const ticks = domain || max === undefined ? undefined : niceYTicks(max, tickCount, integer);\n // A fixed `domain` gets Recharts' own in-between ticks, which only it knows; it measures those.\n const labels = ticks?.map(formatter);\n return (\n <YAxis\n yAxisId={id}\n hide={!show}\n orientation={right ? 'right' : 'left'}\n tick={CHART_TICK}\n tickLine={false}\n axisLine={false}\n width={yAxisWidth(show, labels)}\n tickMargin={4}\n tickFormatter={formatter}\n domain={ticks ? [0, ticks.at(-1) ?? 0] : domain}\n ticks={ticks}\n tickCount={tickCount}\n />\n );\n}\n\n/**\n * The y-axis width for its tick labels, from canvas text metrics. Recharts' `width=\"auto\"` reads\n * each label's box from the DOM on every redraw, which forces a page layout per chart. A hidden\n * axis takes no room; with no known labels, Recharts measures.\n */\nfunction yAxisWidth(show: boolean, labels: string[] | undefined) {\n if (!show) return 0;\n if (!labels) return 'auto';\n const widest = Math.max(0, ...labels.map(textWidth));\n // Plus the tick margin (4) and Recharts' default tick size (6), which it counts with hidden tick lines.\n return Math.ceil(widest + 4 + 6);\n}\n\nlet measureContext: CanvasRenderingContext2D | undefined;\nlet measureContextTried = false;\n\nfunction textWidth(text: string) {\n if (!measureContextTried) {\n measureContextTried = true;\n measureContext = createMeasureContext();\n }\n return measureContext ? measureContext.measureText(text).width : text.length * CHART_AXIS_FONT_SIZE * 0.6;\n}\n\nfunction createMeasureContext() {\n if (typeof document === 'undefined') return undefined;\n const context = document.createElement('canvas').getContext('2d') ?? undefined;\n if (context) context.font = `${CHART_AXIS_FONT_SIZE}px ${getComputedStyle(document.body).fontFamily}`;\n return context;\n}\n\n/** The largest number under `keys` in any row; with `stacked`, the largest row total. */\nexport function dataMax(data: Record<string, unknown>[], keys: string[], stacked = false) {\n let max = 0;\n for (const row of data) {\n let total = 0;\n for (const key of keys) {\n const v = row[key];\n if (typeof v !== 'number' || !Number.isFinite(v)) continue;\n if (stacked) total += v;\n else max = Math.max(max, v);\n }\n if (stacked) max = Math.max(max, total);\n }\n return max;\n}\n\n/** Whether every number under `keys` is whole (counts), so the axis keeps to whole ticks. */\nexport function isWholeData(data: Record<string, unknown>[], keys: string[]) {\n return data.every(row =>\n keys.every(key => {\n const v = row[key];\n return typeof v !== 'number' || Number.isInteger(v);\n }),\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"chart-frame.cjs.js","names":["CHART_LABEL_COLOR","pickTimeTicks","edgeDateLabels","XAxis","ChartTimeTick","chartYTickCount","niceYTicks","YAxis"],"sources":["../../src/ds/primitives/chart-frame.tsx"],"sourcesContent":["import { XAxis, YAxis } from 'recharts';\nimport { chartYTickCount, edgeDateLabels, niceYTicks, pickTimeTicks } from './chart-axes';\nimport type { ChartSize, ChartXLabels } from './chart-axes';\nimport { CHART_AXIS_FONT_SIZE, X_AXIS_HEIGHT } from './chart-layout';\nimport { ChartTimeTick } from './chart-time-tick';\nimport type { ChartTimeTickProps } from './chart-time-tick';\nimport { CHART_LABEL_COLOR } from '@/ds/tokens';\n\n/** A chart's height: pixels, or `fill` to grow with its parent (a flex column, e.g. a card). */\nexport type ChartHeight = number | 'fill';\n\nexport const compactNumber = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\nexport const CHART_TICK = { fontSize: CHART_AXIS_FONT_SIZE, fill: CHART_LABEL_COLOR };\n\n/** The x-axis of a time series: labels from `xKey`, placed on clock times from `timestampKey`. */\nexport function timeXAxis({\n data,\n xKey,\n timestampKey,\n xLabels,\n plotWidth,\n}: {\n data: Record<string, unknown>[];\n xKey: string;\n timestampKey: string;\n xLabels: ChartXLabels;\n plotWidth: number;\n}) {\n const labels = data.map(row => String(row[xKey] ?? ''));\n const timestamps = data.map(row => {\n const t = row[timestampKey];\n return typeof t === 'number' ? t : undefined;\n });\n const picked = pickTimeTicks(timestamps, labels, plotWidth, xLabels);\n const edgeLabels = edgeDateLabels(timestamps, xLabels);\n return (\n <XAxis\n dataKey={xKey}\n height={X_AXIS_HEIGHT}\n tick={(props: Omit<ChartTimeTickProps, 'picked' | 'labels' | 'count'>) => (\n <ChartTimeTick {...props} picked={picked} labels={edgeLabels} count={data.length} />\n )}\n tickLine={false}\n axisLine={false}\n tickMargin={6}\n // Render every tick slot; ChartTimeTick decides which ones print a label.\n interval={0}\n />\n );\n}\n\n/**\n * Room the y-axis labels take at most. The axis itself is as wide as its longest label, so the\n * labels line up with the card's content; this only estimates the plot width for how many x\n * labels fit. The labels themselves pin to the plot's real edges (Recharts' axis width).\n */\nexport const Y_AXIS_WIDTH = 44;\n\nexport function valueYAxis({\n id = 0,\n show,\n size,\n formatter,\n domain,\n max,\n integer = false,\n right = false,\n}: {\n id?: string | number;\n show: boolean;\n size: ChartSize;\n formatter: (value: number) => string;\n /** Fixed range; Recharts spaces the ticks in it. */\n domain?: [number, number];\n /** Largest value plotted on this axis (a stack's total for stacked bars); the ticks round up from it. */\n max?: number;\n /** Whole-number data (counts): ticks on whole numbers. */\n integer?: boolean;\n right?: boolean;\n}) {\n const tickCount = chartYTickCount(size.height);\n // Recharts rounds its step up to fit the tick count, so a $4.40 peak got an $8 axis.\n const ticks = domain || max === undefined ? undefined : niceYTicks(max, tickCount, integer);\n // A fixed `domain` gets Recharts' own in-between ticks, which only it knows; it measures those.\n const labels = ticks?.map(formatter);\n return (\n <YAxis\n yAxisId={id}\n hide={!show}\n orientation={right ? 'right' : 'left'}\n tick={CHART_TICK}\n tickLine={false}\n axisLine={false}\n width={yAxisWidth(show, labels)}\n tickMargin={4}\n tickFormatter={formatter}\n domain={ticks ? [0, ticks.at(-1) ?? 0] : domain}\n ticks={ticks}\n tickCount={tickCount}\n />\n );\n}\n\n/**\n * The y-axis width for its tick labels, from canvas text metrics. Recharts' `width=\"auto\"` reads\n * each label's box from the DOM on every redraw, which forces a page layout per chart. A hidden\n * axis takes no room; with no known labels, Recharts measures.\n */\nfunction yAxisWidth(show: boolean, labels: string[] | undefined) {\n if (!show) return 0;\n if (!labels) return 'auto';\n const widest = Math.max(0, ...labels.map(textWidth));\n // Plus the tick margin (4) and Recharts' default tick size (6), which it counts with hidden tick lines.\n return Math.ceil(widest + 4 + 6);\n}\n\nlet measureContext: CanvasRenderingContext2D | undefined;\nlet measureContextTried = false;\n\nfunction textWidth(text: string) {\n if (!measureContextTried) {\n measureContextTried = true;\n measureContext = createMeasureContext();\n }\n return measureContext ? measureContext.measureText(text).width : text.length * CHART_AXIS_FONT_SIZE * 0.6;\n}\n\nfunction createMeasureContext() {\n if (typeof document === 'undefined') return undefined;\n const context = document.createElement('canvas').getContext('2d') ?? undefined;\n if (context) context.font = `${CHART_AXIS_FONT_SIZE}px ${getComputedStyle(document.body).fontFamily}`;\n return context;\n}\n\n/** The largest number under `keys` in any row; with `stacked`, the largest row total. */\nexport function dataMax(data: Record<string, unknown>[], keys: string[], stacked = false) {\n let max = 0;\n for (const row of data) {\n let total = 0;\n for (const key of keys) {\n const v = row[key];\n if (typeof v !== 'number' || !Number.isFinite(v)) continue;\n if (stacked) total += v;\n else max = Math.max(max, v);\n }\n if (stacked) max = Math.max(max, total);\n }\n return max;\n}\n\n/** Whether every number under `keys` is whole (counts), so the axis keeps to whole ticks. */\nexport function isWholeData(data: Record<string, unknown>[], keys: string[]) {\n return data.every(row =>\n keys.every(key => {\n const v = row[key];\n return typeof v !== 'number' || Number.isInteger(v);\n }),\n );\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { CHART_LABEL_COLOR } from "../tokens.es.js";
2
2
  import "./chart-layout.es.js";
3
- import { chartYTickCount, niceYTicks, pickTimeTicks } from "./chart-axes.es.js";
3
+ import { chartYTickCount, edgeDateLabels, niceYTicks, pickTimeTicks } from "./chart-axes.es.js";
4
4
  import { ChartTimeTick } from "./chart-time-tick.es.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { XAxis, YAxis } from "recharts";
@@ -21,14 +21,15 @@ function timeXAxis({ data, xKey, timestampKey, xLabels, plotWidth }) {
21
21
  return typeof t === "number" ? t : void 0;
22
22
  });
23
23
  const picked = pickTimeTicks(timestamps, labels, plotWidth, xLabels);
24
+ const edgeLabels = edgeDateLabels(timestamps, xLabels);
24
25
  return /* @__PURE__ */ jsx(XAxis, {
25
26
  dataKey: xKey,
26
27
  height: 22,
27
28
  tick: (props) => /* @__PURE__ */ jsx(ChartTimeTick, {
28
29
  ...props,
29
30
  picked,
30
- count: data.length,
31
- plotWidth
31
+ labels: edgeLabels,
32
+ count: data.length
32
33
  }),
33
34
  tickLine: false,
34
35
  axisLine: false,
@@ -38,7 +39,8 @@ function timeXAxis({ data, xKey, timestampKey, xLabels, plotWidth }) {
38
39
  }
39
40
  /**
40
41
  * Room the y-axis labels take at most. The axis itself is as wide as its longest label, so the
41
- * labels line up with the card's content; this only sizes the plot for spacing the x labels.
42
+ * labels line up with the card's content; this only estimates the plot width for how many x
43
+ * labels fit. The labels themselves pin to the plot's real edges (Recharts' axis width).
42
44
  */
43
45
  var Y_AXIS_WIDTH = 44;
44
46
  function valueYAxis({ id = 0, show, size, formatter, domain, max, integer = false, right = false }) {
@@ -1 +1 @@
1
- {"version":3,"file":"chart-frame.es.js","names":[],"sources":["../../src/ds/primitives/chart-frame.tsx"],"sourcesContent":["import { XAxis, YAxis } from 'recharts';\nimport { chartYTickCount, niceYTicks, pickTimeTicks } from './chart-axes';\nimport type { ChartSize, ChartXLabels } from './chart-axes';\nimport { CHART_AXIS_FONT_SIZE, X_AXIS_HEIGHT } from './chart-layout';\nimport { ChartTimeTick } from './chart-time-tick';\nimport type { ChartTimeTickProps } from './chart-time-tick';\nimport { CHART_LABEL_COLOR } from '@/ds/tokens';\n\n/** A chart's height: pixels, or `fill` to grow with its parent (a flex column, e.g. a card). */\nexport type ChartHeight = number | 'fill';\n\nexport const compactNumber = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\nexport const CHART_TICK = { fontSize: CHART_AXIS_FONT_SIZE, fill: CHART_LABEL_COLOR };\n\n/** The x-axis of a time series: labels from `xKey`, placed on clock times from `timestampKey`. */\nexport function timeXAxis({\n data,\n xKey,\n timestampKey,\n xLabels,\n plotWidth,\n}: {\n data: Record<string, unknown>[];\n xKey: string;\n timestampKey: string;\n xLabels: ChartXLabels;\n plotWidth: number;\n}) {\n const labels = data.map(row => String(row[xKey] ?? ''));\n const timestamps = data.map(row => {\n const t = row[timestampKey];\n return typeof t === 'number' ? t : undefined;\n });\n const picked = pickTimeTicks(timestamps, labels, plotWidth, xLabels);\n return (\n <XAxis\n dataKey={xKey}\n height={X_AXIS_HEIGHT}\n tick={(props: Omit<ChartTimeTickProps, 'picked' | 'count' | 'plotWidth'>) => (\n <ChartTimeTick {...props} picked={picked} count={data.length} plotWidth={plotWidth} />\n )}\n tickLine={false}\n axisLine={false}\n tickMargin={6}\n // Render every tick slot; ChartTimeTick decides which ones print a label.\n interval={0}\n />\n );\n}\n\n/**\n * Room the y-axis labels take at most. The axis itself is as wide as its longest label, so the\n * labels line up with the card's content; this only sizes the plot for spacing the x labels.\n */\nexport const Y_AXIS_WIDTH = 44;\n\nexport function valueYAxis({\n id = 0,\n show,\n size,\n formatter,\n domain,\n max,\n integer = false,\n right = false,\n}: {\n id?: string | number;\n show: boolean;\n size: ChartSize;\n formatter: (value: number) => string;\n /** Fixed range; Recharts spaces the ticks in it. */\n domain?: [number, number];\n /** Largest value plotted on this axis (a stack's total for stacked bars); the ticks round up from it. */\n max?: number;\n /** Whole-number data (counts): ticks on whole numbers. */\n integer?: boolean;\n right?: boolean;\n}) {\n const tickCount = chartYTickCount(size.height);\n // Recharts rounds its step up to fit the tick count, so a $4.40 peak got an $8 axis.\n const ticks = domain || max === undefined ? undefined : niceYTicks(max, tickCount, integer);\n // A fixed `domain` gets Recharts' own in-between ticks, which only it knows; it measures those.\n const labels = ticks?.map(formatter);\n return (\n <YAxis\n yAxisId={id}\n hide={!show}\n orientation={right ? 'right' : 'left'}\n tick={CHART_TICK}\n tickLine={false}\n axisLine={false}\n width={yAxisWidth(show, labels)}\n tickMargin={4}\n tickFormatter={formatter}\n domain={ticks ? [0, ticks.at(-1) ?? 0] : domain}\n ticks={ticks}\n tickCount={tickCount}\n />\n );\n}\n\n/**\n * The y-axis width for its tick labels, from canvas text metrics. Recharts' `width=\"auto\"` reads\n * each label's box from the DOM on every redraw, which forces a page layout per chart. A hidden\n * axis takes no room; with no known labels, Recharts measures.\n */\nfunction yAxisWidth(show: boolean, labels: string[] | undefined) {\n if (!show) return 0;\n if (!labels) return 'auto';\n const widest = Math.max(0, ...labels.map(textWidth));\n // Plus the tick margin (4) and Recharts' default tick size (6), which it counts with hidden tick lines.\n return Math.ceil(widest + 4 + 6);\n}\n\nlet measureContext: CanvasRenderingContext2D | undefined;\nlet measureContextTried = false;\n\nfunction textWidth(text: string) {\n if (!measureContextTried) {\n measureContextTried = true;\n measureContext = createMeasureContext();\n }\n return measureContext ? measureContext.measureText(text).width : text.length * CHART_AXIS_FONT_SIZE * 0.6;\n}\n\nfunction createMeasureContext() {\n if (typeof document === 'undefined') return undefined;\n const context = document.createElement('canvas').getContext('2d') ?? undefined;\n if (context) context.font = `${CHART_AXIS_FONT_SIZE}px ${getComputedStyle(document.body).fontFamily}`;\n return context;\n}\n\n/** The largest number under `keys` in any row; with `stacked`, the largest row total. */\nexport function dataMax(data: Record<string, unknown>[], keys: string[], stacked = false) {\n let max = 0;\n for (const row of data) {\n let total = 0;\n for (const key of keys) {\n const v = row[key];\n if (typeof v !== 'number' || !Number.isFinite(v)) continue;\n if (stacked) total += v;\n else max = Math.max(max, v);\n }\n if (stacked) max = Math.max(max, total);\n }\n return max;\n}\n\n/** Whether every number under `keys` is whole (counts), so the axis keeps to whole ticks. */\nexport function isWholeData(data: Record<string, unknown>[], keys: string[]) {\n return data.every(row =>\n keys.every(key => {\n const v = row[key];\n return typeof v !== 'number' || Number.isInteger(v);\n }),\n );\n}\n"],"mappings":";;;;;;;AAWA,IAAa,gBAAgB,IAAI,KAAK,aAAa,MAAM;CAAE,UAAU;CAAW,uBAAuB;AAAE,CAAC;AAE1G,IAAa,aAAa;CAAE,UAAA;CAAgC,MAAM;AAAkB;;AAGpF,SAAgB,UAAU,EACxB,MACA,MACA,cACA,SACA,aAOC;CACD,MAAM,SAAS,KAAK,KAAI,QAAO,OAAO,IAAI,SAAS,EAAE,CAAC;CACtD,MAAM,aAAa,KAAK,KAAI,QAAO;EACjC,MAAM,IAAI,IAAI;EACd,OAAO,OAAO,MAAM,WAAW,IAAI,KAAA;CACrC,CAAC;CACD,MAAM,SAAS,cAAc,YAAY,QAAQ,WAAW,OAAO;CACnE,OACE,oBAAC,OAAD;EACE,SAAS;EACT,QAAA;EACA,OAAO,UACL,oBAAC,eAAD;GAAe,GAAI;GAAe;GAAQ,OAAO,KAAK;GAAmB;EAAY,CAAA;EAEvF,UAAU;EACV,UAAU;EACV,YAAY;EAEZ,UAAU;CACX,CAAA;AAEL;;;;;AAMA,IAAa,eAAe;AAE5B,SAAgB,WAAW,EACzB,KAAK,GACL,MACA,MACA,WACA,QACA,KACA,UAAU,OACV,QAAQ,SAaP;CACD,MAAM,YAAY,gBAAgB,KAAK,MAAM;CAE7C,MAAM,QAAQ,UAAU,QAAQ,KAAA,IAAY,KAAA,IAAY,WAAW,KAAK,WAAW,OAAO;CAE1F,MAAM,SAAS,OAAO,IAAI,SAAS;CACnC,OACE,oBAAC,OAAD;EACE,SAAS;EACT,MAAM,CAAC;EACP,aAAa,QAAQ,UAAU;EAC/B,MAAM;EACN,UAAU;EACV,UAAU;EACV,OAAO,WAAW,MAAM,MAAM;EAC9B,YAAY;EACZ,eAAe;EACf,QAAQ,QAAQ,CAAC,GAAG,MAAM,GAAG,EAAE,KAAK,CAAC,IAAI;EAClC;EACI;CACZ,CAAA;AAEL;;;;;;AAOA,SAAS,WAAW,MAAe,QAA8B;CAC/D,IAAI,CAAC,MAAM,OAAO;CAClB,IAAI,CAAC,QAAQ,OAAO;CACpB,MAAM,SAAS,KAAK,IAAI,GAAG,GAAG,OAAO,IAAI,SAAS,CAAC;CAEnD,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC;AACjC;AAEA,IAAI;AACJ,IAAI,sBAAsB;AAE1B,SAAS,UAAU,MAAc;CAC/B,IAAI,CAAC,qBAAqB;EACxB,sBAAsB;EACtB,iBAAiB,qBAAqB;CACxC;CACA,OAAO,iBAAiB,eAAe,YAAY,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAA,KAAgC;AACxG;AAEA,SAAS,uBAAuB;CAC9B,IAAI,OAAO,aAAa,aAAa,OAAO,KAAA;CAC5C,MAAM,UAAU,SAAS,cAAc,QAAQ,CAAC,CAAC,WAAW,IAAI,KAAK,KAAA;CACrE,IAAI,SAAS,QAAQ,OAAO,QAA6B,iBAAiB,SAAS,IAAI,CAAC,CAAC;CACzF,OAAO;AACT;;AAGA,SAAgB,QAAQ,MAAiC,MAAgB,UAAU,OAAO;CACxF,IAAI,MAAM;CACV,KAAK,MAAM,OAAO,MAAM;EACtB,IAAI,QAAQ;EACZ,KAAK,MAAM,OAAO,MAAM;GACtB,MAAM,IAAI,IAAI;GACd,IAAI,OAAO,MAAM,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG;GAClD,IAAI,SAAS,SAAS;QACjB,MAAM,KAAK,IAAI,KAAK,CAAC;EAC5B;EACA,IAAI,SAAS,MAAM,KAAK,IAAI,KAAK,KAAK;CACxC;CACA,OAAO;AACT;;AAGA,SAAgB,YAAY,MAAiC,MAAgB;CAC3E,OAAO,KAAK,OAAM,QAChB,KAAK,OAAM,QAAO;EAChB,MAAM,IAAI,IAAI;EACd,OAAO,OAAO,MAAM,YAAY,OAAO,UAAU,CAAC;CACpD,CAAC,CACH;AACF"}
1
+ {"version":3,"file":"chart-frame.es.js","names":[],"sources":["../../src/ds/primitives/chart-frame.tsx"],"sourcesContent":["import { XAxis, YAxis } from 'recharts';\nimport { chartYTickCount, edgeDateLabels, niceYTicks, pickTimeTicks } from './chart-axes';\nimport type { ChartSize, ChartXLabels } from './chart-axes';\nimport { CHART_AXIS_FONT_SIZE, X_AXIS_HEIGHT } from './chart-layout';\nimport { ChartTimeTick } from './chart-time-tick';\nimport type { ChartTimeTickProps } from './chart-time-tick';\nimport { CHART_LABEL_COLOR } from '@/ds/tokens';\n\n/** A chart's height: pixels, or `fill` to grow with its parent (a flex column, e.g. a card). */\nexport type ChartHeight = number | 'fill';\n\nexport const compactNumber = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\nexport const CHART_TICK = { fontSize: CHART_AXIS_FONT_SIZE, fill: CHART_LABEL_COLOR };\n\n/** The x-axis of a time series: labels from `xKey`, placed on clock times from `timestampKey`. */\nexport function timeXAxis({\n data,\n xKey,\n timestampKey,\n xLabels,\n plotWidth,\n}: {\n data: Record<string, unknown>[];\n xKey: string;\n timestampKey: string;\n xLabels: ChartXLabels;\n plotWidth: number;\n}) {\n const labels = data.map(row => String(row[xKey] ?? ''));\n const timestamps = data.map(row => {\n const t = row[timestampKey];\n return typeof t === 'number' ? t : undefined;\n });\n const picked = pickTimeTicks(timestamps, labels, plotWidth, xLabels);\n const edgeLabels = edgeDateLabels(timestamps, xLabels);\n return (\n <XAxis\n dataKey={xKey}\n height={X_AXIS_HEIGHT}\n tick={(props: Omit<ChartTimeTickProps, 'picked' | 'labels' | 'count'>) => (\n <ChartTimeTick {...props} picked={picked} labels={edgeLabels} count={data.length} />\n )}\n tickLine={false}\n axisLine={false}\n tickMargin={6}\n // Render every tick slot; ChartTimeTick decides which ones print a label.\n interval={0}\n />\n );\n}\n\n/**\n * Room the y-axis labels take at most. The axis itself is as wide as its longest label, so the\n * labels line up with the card's content; this only estimates the plot width for how many x\n * labels fit. The labels themselves pin to the plot's real edges (Recharts' axis width).\n */\nexport const Y_AXIS_WIDTH = 44;\n\nexport function valueYAxis({\n id = 0,\n show,\n size,\n formatter,\n domain,\n max,\n integer = false,\n right = false,\n}: {\n id?: string | number;\n show: boolean;\n size: ChartSize;\n formatter: (value: number) => string;\n /** Fixed range; Recharts spaces the ticks in it. */\n domain?: [number, number];\n /** Largest value plotted on this axis (a stack's total for stacked bars); the ticks round up from it. */\n max?: number;\n /** Whole-number data (counts): ticks on whole numbers. */\n integer?: boolean;\n right?: boolean;\n}) {\n const tickCount = chartYTickCount(size.height);\n // Recharts rounds its step up to fit the tick count, so a $4.40 peak got an $8 axis.\n const ticks = domain || max === undefined ? undefined : niceYTicks(max, tickCount, integer);\n // A fixed `domain` gets Recharts' own in-between ticks, which only it knows; it measures those.\n const labels = ticks?.map(formatter);\n return (\n <YAxis\n yAxisId={id}\n hide={!show}\n orientation={right ? 'right' : 'left'}\n tick={CHART_TICK}\n tickLine={false}\n axisLine={false}\n width={yAxisWidth(show, labels)}\n tickMargin={4}\n tickFormatter={formatter}\n domain={ticks ? [0, ticks.at(-1) ?? 0] : domain}\n ticks={ticks}\n tickCount={tickCount}\n />\n );\n}\n\n/**\n * The y-axis width for its tick labels, from canvas text metrics. Recharts' `width=\"auto\"` reads\n * each label's box from the DOM on every redraw, which forces a page layout per chart. A hidden\n * axis takes no room; with no known labels, Recharts measures.\n */\nfunction yAxisWidth(show: boolean, labels: string[] | undefined) {\n if (!show) return 0;\n if (!labels) return 'auto';\n const widest = Math.max(0, ...labels.map(textWidth));\n // Plus the tick margin (4) and Recharts' default tick size (6), which it counts with hidden tick lines.\n return Math.ceil(widest + 4 + 6);\n}\n\nlet measureContext: CanvasRenderingContext2D | undefined;\nlet measureContextTried = false;\n\nfunction textWidth(text: string) {\n if (!measureContextTried) {\n measureContextTried = true;\n measureContext = createMeasureContext();\n }\n return measureContext ? measureContext.measureText(text).width : text.length * CHART_AXIS_FONT_SIZE * 0.6;\n}\n\nfunction createMeasureContext() {\n if (typeof document === 'undefined') return undefined;\n const context = document.createElement('canvas').getContext('2d') ?? undefined;\n if (context) context.font = `${CHART_AXIS_FONT_SIZE}px ${getComputedStyle(document.body).fontFamily}`;\n return context;\n}\n\n/** The largest number under `keys` in any row; with `stacked`, the largest row total. */\nexport function dataMax(data: Record<string, unknown>[], keys: string[], stacked = false) {\n let max = 0;\n for (const row of data) {\n let total = 0;\n for (const key of keys) {\n const v = row[key];\n if (typeof v !== 'number' || !Number.isFinite(v)) continue;\n if (stacked) total += v;\n else max = Math.max(max, v);\n }\n if (stacked) max = Math.max(max, total);\n }\n return max;\n}\n\n/** Whether every number under `keys` is whole (counts), so the axis keeps to whole ticks. */\nexport function isWholeData(data: Record<string, unknown>[], keys: string[]) {\n return data.every(row =>\n keys.every(key => {\n const v = row[key];\n return typeof v !== 'number' || Number.isInteger(v);\n }),\n );\n}\n"],"mappings":"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"}
@@ -5,21 +5,25 @@ const require_primitives_chart_axes = require("./chart-axes.cjs.js");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
6
  // src/ds/primitives/chart-time-tick.tsx
7
7
  /**
8
- * An x label on picked buckets only, centred on its bucket and nudged inward only as far as it
9
- * takes to stay inside the plot, so the chart needs no side margin.
8
+ * An x label on picked buckets only, centred on its bucket and pinned inside the plot at its
9
+ * edges, so the chart needs no side margin.
10
10
  */
11
- function ChartTimeTick({ x = 0, y = 0, payload, picked, count, plotWidth }) {
12
- if (!payload || !plotWidth || !picked.has(payload.index)) return null;
13
- const text = String(payload.value);
14
- const half = payload.offset ?? 0;
15
- const left = half > 0 ? x - half * (2 * payload.index + 1) : x - payload.index * plotWidth / Math.max(count - 1, 1);
16
- const w = require_primitives_chart_axes.labelWidth(text) / 2;
17
- const tx = Math.min(Math.max(x, left + w), left + plotWidth - w);
11
+ function ChartTimeTick({ x = 0, y = 0, width, payload, picked, labels, count }) {
12
+ if (!payload || !width || !picked.has(payload.index)) return null;
13
+ const text = labels?.get(payload.index) ?? String(payload.value);
14
+ const placed = require_primitives_chart_axes.placeTimeTick({
15
+ x,
16
+ index: payload.index,
17
+ offset: payload.offset,
18
+ count,
19
+ plotWidth: width,
20
+ textWidth: require_primitives_chart_axes.labelWidth(text)
21
+ });
18
22
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("text", {
19
- x: tx,
23
+ x: placed.x,
20
24
  y,
21
25
  dy: "0.71em",
22
- textAnchor: "middle",
26
+ textAnchor: placed.anchor,
23
27
  fontSize: 11,
24
28
  fill: require_tokens.CHART_LABEL_COLOR,
25
29
  children: text
@@ -1 +1 @@
1
- {"version":3,"file":"chart-time-tick.cjs.js","names":["labelWidth","CHART_LABEL_COLOR"],"sources":["../../src/ds/primitives/chart-time-tick.tsx"],"sourcesContent":["import { labelWidth } from './chart-axes';\nimport { CHART_AXIS_FONT_SIZE } from './chart-layout';\nimport { CHART_LABEL_COLOR } from '@/ds/tokens';\n\nexport type ChartTimeTickProps = {\n x?: number;\n y?: number;\n index?: number;\n payload?: { value: string; index: number; offset?: number };\n /** Buckets that print a label (from `pickTimeTicks`). */\n picked: Set<number>;\n count: number;\n plotWidth: number;\n};\n\n/**\n * An x label on picked buckets only, centred on its bucket and nudged inward only as far as it\n * takes to stay inside the plot, so the chart needs no side margin.\n */\nexport function ChartTimeTick({ x = 0, y = 0, payload, picked, count, plotWidth }: ChartTimeTickProps) {\n if (!payload || !plotWidth || !picked.has(payload.index)) return null;\n const text = String(payload.value);\n const half = payload.offset ?? 0;\n // Bars sit in bands (label at the band's centre); lines sit on points (first at the edge).\n const left = half > 0 ? x - half * (2 * payload.index + 1) : x - (payload.index * plotWidth) / Math.max(count - 1, 1);\n const w = labelWidth(text) / 2;\n const tx = Math.min(Math.max(x, left + w), left + plotWidth - w);\n return (\n <text x={tx} y={y} dy=\"0.71em\" textAnchor=\"middle\" fontSize={CHART_AXIS_FONT_SIZE} fill={CHART_LABEL_COLOR}>\n {text}\n </text>\n );\n}\n"],"mappings":";;;;;;;;;;AAmBA,SAAgB,cAAc,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,QAAQ,OAAO,aAAiC;CACrG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,IAAI,QAAQ,KAAK,GAAG,OAAO;CACjE,MAAM,OAAO,OAAO,QAAQ,KAAK;CACjC,MAAM,OAAO,QAAQ,UAAU;CAE/B,MAAM,OAAO,OAAO,IAAI,IAAI,QAAQ,IAAI,QAAQ,QAAQ,KAAK,IAAK,QAAQ,QAAQ,YAAa,KAAK,IAAI,QAAQ,GAAG,CAAC;CACpH,MAAM,IAAIA,8BAAAA,WAAW,IAAI,IAAI;CAC7B,MAAM,KAAK,KAAK,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,GAAG,OAAO,YAAY,CAAC;CAC/D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;EAAM,GAAG;EAAO;EAAG,IAAG;EAAS,YAAW;EAAS,UAAA;EAAgC,MAAMC,eAAAA;EACtF,UAAA;CACG,CAAA;AAEV"}
1
+ {"version":3,"file":"chart-time-tick.cjs.js","names":["placeTimeTick","labelWidth","CHART_LABEL_COLOR"],"sources":["../../src/ds/primitives/chart-time-tick.tsx"],"sourcesContent":["import { labelWidth, placeTimeTick } from './chart-axes';\nimport { CHART_AXIS_FONT_SIZE } from './chart-layout';\nimport { CHART_LABEL_COLOR } from '@/ds/tokens';\n\nexport type ChartTimeTickProps = {\n x?: number;\n y?: number;\n /** The axis' drawn width, which Recharts passes to every tick: the plot's real width. */\n width?: number;\n index?: number;\n payload?: { value: string; index: number; offset?: number };\n /** Buckets that print a label (from `pickTimeTicks`). */\n picked: Set<number>;\n /** Labels that replace the bucket's own text, by index (e.g. date-only ends). */\n labels?: Map<number, string>;\n count: number;\n};\n\n/**\n * An x label on picked buckets only, centred on its bucket and pinned inside the plot at its\n * edges, so the chart needs no side margin.\n */\nexport function ChartTimeTick({ x = 0, y = 0, width, payload, picked, labels, count }: ChartTimeTickProps) {\n if (!payload || !width || !picked.has(payload.index)) return null;\n const text = labels?.get(payload.index) ?? String(payload.value);\n const placed = placeTimeTick({\n x,\n index: payload.index,\n offset: payload.offset,\n count,\n plotWidth: width,\n textWidth: labelWidth(text),\n });\n return (\n <text\n x={placed.x}\n y={y}\n dy=\"0.71em\"\n textAnchor={placed.anchor}\n fontSize={CHART_AXIS_FONT_SIZE}\n fill={CHART_LABEL_COLOR}\n >\n {text}\n </text>\n );\n}\n"],"mappings":";;;;;;;;;;AAsBA,SAAgB,cAAc,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,SAAS,QAAQ,QAAQ,SAA6B;CACzG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,IAAI,QAAQ,KAAK,GAAG,OAAO;CAC7D,MAAM,OAAO,QAAQ,IAAI,QAAQ,KAAK,KAAK,OAAO,QAAQ,KAAK;CAC/D,MAAM,SAASA,8BAAAA,cAAc;EAC3B;EACA,OAAO,QAAQ;EACf,QAAQ,QAAQ;EAChB;EACA,WAAW;EACX,WAAWC,8BAAAA,WAAW,IAAI;CAC5B,CAAC;CACD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;EACE,GAAG,OAAO;EACP;EACH,IAAG;EACH,YAAY,OAAO;EACnB,UAAA;EACA,MAAMC,eAAAA;EAEL,UAAA;CACG,CAAA;AAEV"}
@@ -1,24 +1,28 @@
1
1
  import { CHART_LABEL_COLOR } from "../tokens.es.js";
2
2
  import "./chart-layout.es.js";
3
- import { labelWidth } from "./chart-axes.es.js";
3
+ import { labelWidth, placeTimeTick } from "./chart-axes.es.js";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  // src/ds/primitives/chart-time-tick.tsx
6
6
  /**
7
- * An x label on picked buckets only, centred on its bucket and nudged inward only as far as it
8
- * takes to stay inside the plot, so the chart needs no side margin.
7
+ * An x label on picked buckets only, centred on its bucket and pinned inside the plot at its
8
+ * edges, so the chart needs no side margin.
9
9
  */
10
- function ChartTimeTick({ x = 0, y = 0, payload, picked, count, plotWidth }) {
11
- if (!payload || !plotWidth || !picked.has(payload.index)) return null;
12
- const text = String(payload.value);
13
- const half = payload.offset ?? 0;
14
- const left = half > 0 ? x - half * (2 * payload.index + 1) : x - payload.index * plotWidth / Math.max(count - 1, 1);
15
- const w = labelWidth(text) / 2;
16
- const tx = Math.min(Math.max(x, left + w), left + plotWidth - w);
10
+ function ChartTimeTick({ x = 0, y = 0, width, payload, picked, labels, count }) {
11
+ if (!payload || !width || !picked.has(payload.index)) return null;
12
+ const text = labels?.get(payload.index) ?? String(payload.value);
13
+ const placed = placeTimeTick({
14
+ x,
15
+ index: payload.index,
16
+ offset: payload.offset,
17
+ count,
18
+ plotWidth: width,
19
+ textWidth: labelWidth(text)
20
+ });
17
21
  return /* @__PURE__ */ jsx("text", {
18
- x: tx,
22
+ x: placed.x,
19
23
  y,
20
24
  dy: "0.71em",
21
- textAnchor: "middle",
25
+ textAnchor: placed.anchor,
22
26
  fontSize: 11,
23
27
  fill: CHART_LABEL_COLOR,
24
28
  children: text
@@ -1 +1 @@
1
- {"version":3,"file":"chart-time-tick.es.js","names":[],"sources":["../../src/ds/primitives/chart-time-tick.tsx"],"sourcesContent":["import { labelWidth } from './chart-axes';\nimport { CHART_AXIS_FONT_SIZE } from './chart-layout';\nimport { CHART_LABEL_COLOR } from '@/ds/tokens';\n\nexport type ChartTimeTickProps = {\n x?: number;\n y?: number;\n index?: number;\n payload?: { value: string; index: number; offset?: number };\n /** Buckets that print a label (from `pickTimeTicks`). */\n picked: Set<number>;\n count: number;\n plotWidth: number;\n};\n\n/**\n * An x label on picked buckets only, centred on its bucket and nudged inward only as far as it\n * takes to stay inside the plot, so the chart needs no side margin.\n */\nexport function ChartTimeTick({ x = 0, y = 0, payload, picked, count, plotWidth }: ChartTimeTickProps) {\n if (!payload || !plotWidth || !picked.has(payload.index)) return null;\n const text = String(payload.value);\n const half = payload.offset ?? 0;\n // Bars sit in bands (label at the band's centre); lines sit on points (first at the edge).\n const left = half > 0 ? x - half * (2 * payload.index + 1) : x - (payload.index * plotWidth) / Math.max(count - 1, 1);\n const w = labelWidth(text) / 2;\n const tx = Math.min(Math.max(x, left + w), left + plotWidth - w);\n return (\n <text x={tx} y={y} dy=\"0.71em\" textAnchor=\"middle\" fontSize={CHART_AXIS_FONT_SIZE} fill={CHART_LABEL_COLOR}>\n {text}\n </text>\n );\n}\n"],"mappings":";;;;;;;;;AAmBA,SAAgB,cAAc,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,QAAQ,OAAO,aAAiC;CACrG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,IAAI,QAAQ,KAAK,GAAG,OAAO;CACjE,MAAM,OAAO,OAAO,QAAQ,KAAK;CACjC,MAAM,OAAO,QAAQ,UAAU;CAE/B,MAAM,OAAO,OAAO,IAAI,IAAI,QAAQ,IAAI,QAAQ,QAAQ,KAAK,IAAK,QAAQ,QAAQ,YAAa,KAAK,IAAI,QAAQ,GAAG,CAAC;CACpH,MAAM,IAAI,WAAW,IAAI,IAAI;CAC7B,MAAM,KAAK,KAAK,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,GAAG,OAAO,YAAY,CAAC;CAC/D,OACE,oBAAC,QAAD;EAAM,GAAG;EAAO;EAAG,IAAG;EAAS,YAAW;EAAS,UAAA;EAAgC,MAAM;EACtF,UAAA;CACG,CAAA;AAEV"}
1
+ {"version":3,"file":"chart-time-tick.es.js","names":[],"sources":["../../src/ds/primitives/chart-time-tick.tsx"],"sourcesContent":["import { labelWidth, placeTimeTick } from './chart-axes';\nimport { CHART_AXIS_FONT_SIZE } from './chart-layout';\nimport { CHART_LABEL_COLOR } from '@/ds/tokens';\n\nexport type ChartTimeTickProps = {\n x?: number;\n y?: number;\n /** The axis' drawn width, which Recharts passes to every tick: the plot's real width. */\n width?: number;\n index?: number;\n payload?: { value: string; index: number; offset?: number };\n /** Buckets that print a label (from `pickTimeTicks`). */\n picked: Set<number>;\n /** Labels that replace the bucket's own text, by index (e.g. date-only ends). */\n labels?: Map<number, string>;\n count: number;\n};\n\n/**\n * An x label on picked buckets only, centred on its bucket and pinned inside the plot at its\n * edges, so the chart needs no side margin.\n */\nexport function ChartTimeTick({ x = 0, y = 0, width, payload, picked, labels, count }: ChartTimeTickProps) {\n if (!payload || !width || !picked.has(payload.index)) return null;\n const text = labels?.get(payload.index) ?? String(payload.value);\n const placed = placeTimeTick({\n x,\n index: payload.index,\n offset: payload.offset,\n count,\n plotWidth: width,\n textWidth: labelWidth(text),\n });\n return (\n <text\n x={placed.x}\n y={y}\n dy=\"0.71em\"\n textAnchor={placed.anchor}\n fontSize={CHART_AXIS_FONT_SIZE}\n fill={CHART_LABEL_COLOR}\n >\n {text}\n </text>\n );\n}\n"],"mappings":";;;;;;;;;AAsBA,SAAgB,cAAc,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,SAAS,QAAQ,QAAQ,SAA6B;CACzG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,IAAI,QAAQ,KAAK,GAAG,OAAO;CAC7D,MAAM,OAAO,QAAQ,IAAI,QAAQ,KAAK,KAAK,OAAO,QAAQ,KAAK;CAC/D,MAAM,SAAS,cAAc;EAC3B;EACA,OAAO,QAAQ;EACf,QAAQ,QAAQ;EAChB;EACA,WAAW;EACX,WAAW,WAAW,IAAI;CAC5B,CAAC;CACD,OACE,oBAAC,QAAD;EACE,GAAG,OAAO;EACP;EACH,IAAG;EACH,YAAY,OAAO;EACnB,UAAA;EACA,MAAM;EAEL,UAAA;CACG,CAAA;AAEV"}
@@ -0,0 +1,71 @@
1
+ let zod_v4 = require("zod/v4");
2
+ var SAVED_VIEWS_STORAGE_VERSION = 1;
3
+ var filterBarScalarSchema = zod_v4.z.union([
4
+ zod_v4.z.string(),
5
+ zod_v4.z.number(),
6
+ zod_v4.z.boolean()
7
+ ]);
8
+ var savedViewFilterSchema = zod_v4.z.object({
9
+ id: zod_v4.z.string().min(1),
10
+ fieldId: zod_v4.z.string().min(1),
11
+ operatorId: zod_v4.z.string().min(1),
12
+ value: zod_v4.z.union([filterBarScalarSchema, zod_v4.z.array(filterBarScalarSchema)])
13
+ });
14
+ var savedViewNameSchema = zod_v4.z.string().trim().min(1).max(80);
15
+ var storedSavedViewSchema = zod_v4.z.object({
16
+ id: zod_v4.z.string().min(1),
17
+ name: savedViewNameSchema,
18
+ filters: zod_v4.z.array(savedViewFilterSchema),
19
+ settings: zod_v4.z.unknown()
20
+ });
21
+ var savedViewsDocumentSchema = zod_v4.z.object({
22
+ version: zod_v4.z.literal(SAVED_VIEWS_STORAGE_VERSION),
23
+ views: zod_v4.z.array(zod_v4.z.unknown())
24
+ });
25
+ function parseSavedViews(raw, settingsSchema) {
26
+ if (!raw) return [];
27
+ let json;
28
+ try {
29
+ json = JSON.parse(raw);
30
+ } catch {
31
+ return [];
32
+ }
33
+ const document = savedViewsDocumentSchema.safeParse(json);
34
+ if (!document.success) return [];
35
+ return document.data.views.flatMap((candidate) => {
36
+ const view = storedSavedViewSchema.safeParse(candidate);
37
+ if (!view.success) return [];
38
+ const settings = settingsSchema.safeParse(view.data.settings);
39
+ if (!settings.success) return [];
40
+ return [{
41
+ ...view.data,
42
+ settings: settings.data
43
+ }];
44
+ });
45
+ }
46
+ function serializeSavedViews(views) {
47
+ return JSON.stringify({
48
+ version: SAVED_VIEWS_STORAGE_VERSION,
49
+ views
50
+ });
51
+ }
52
+ Object.defineProperty(exports, "parseSavedViews", {
53
+ enumerable: true,
54
+ get: function() {
55
+ return parseSavedViews;
56
+ }
57
+ });
58
+ Object.defineProperty(exports, "savedViewNameSchema", {
59
+ enumerable: true,
60
+ get: function() {
61
+ return savedViewNameSchema;
62
+ }
63
+ });
64
+ Object.defineProperty(exports, "serializeSavedViews", {
65
+ enumerable: true,
66
+ get: function() {
67
+ return serializeSavedViews;
68
+ }
69
+ });
70
+
71
+ //# sourceMappingURL=saved-view-schema-DRJYELfK.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved-view-schema-DRJYELfK.cjs","names":["z"],"sources":["../src/ds/components/SavedViews/saved-view-schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nexport const MAX_SAVED_VIEW_NAME_CHARS = 80;\n\nconst SAVED_VIEWS_STORAGE_VERSION = 1;\n\nconst filterBarScalarSchema = z.union([z.string(), z.number(), z.boolean()]);\n\nconst savedViewFilterSchema = z.object({\n id: z.string().min(1),\n fieldId: z.string().min(1),\n operatorId: z.string().min(1),\n value: z.union([filterBarScalarSchema, z.array(filterBarScalarSchema)]),\n}) satisfies z.ZodType<FilterBarItem>;\n\nexport const savedViewNameSchema = z.string().trim().min(1).max(MAX_SAVED_VIEW_NAME_CHARS);\n\nconst storedSavedViewSchema = z.object({\n id: z.string().min(1),\n name: savedViewNameSchema,\n filters: z.array(savedViewFilterSchema),\n settings: z.unknown(),\n});\n\n// Views stay `unknown` so one malformed view is dropped on its own, not the whole list.\nconst savedViewsDocumentSchema = z.object({\n version: z.literal(SAVED_VIEWS_STORAGE_VERSION),\n views: z.array(z.unknown()),\n});\n\n// Only `safeParse` is used, so the consumer's Zod version never has to match this package's.\nexport type SavedViewSettingsSchema<TSettings> = {\n safeParse: (value: unknown) => { success: true; data: TSettings } | { success: false };\n};\n\nexport type SavedView<TSettings> = {\n id: string;\n name: string;\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport function parseSavedViews<TSettings>(\n raw: string | null,\n settingsSchema: SavedViewSettingsSchema<TSettings>,\n): SavedView<TSettings>[] {\n if (!raw) return [];\n let json: unknown;\n try {\n json = JSON.parse(raw);\n } catch {\n return [];\n }\n const document = savedViewsDocumentSchema.safeParse(json);\n if (!document.success) return [];\n return document.data.views.flatMap(candidate => {\n const view = storedSavedViewSchema.safeParse(candidate);\n if (!view.success) return [];\n const settings = settingsSchema.safeParse(view.data.settings);\n if (!settings.success) return [];\n return [{ ...view.data, settings: settings.data }];\n });\n}\n\nexport function serializeSavedViews<TSettings>(views: readonly SavedView<TSettings>[]): string {\n return JSON.stringify({ version: SAVED_VIEWS_STORAGE_VERSION, views });\n}\n"],"mappings":";AAKA,IAAM,8BAA8B;AAEpC,IAAM,wBAAwBA,OAAAA,EAAE,MAAM;CAACA,OAAAA,EAAE,OAAO;CAAGA,OAAAA,EAAE,OAAO;CAAGA,OAAAA,EAAE,QAAQ;AAAC,CAAC;AAE3E,IAAM,wBAAwBA,OAAAA,EAAE,OAAO;CACrC,IAAIA,OAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACpB,SAASA,OAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACzB,YAAYA,OAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CAC5B,OAAOA,OAAAA,EAAE,MAAM,CAAC,uBAAuBA,OAAAA,EAAE,MAAM,qBAAqB,CAAC,CAAC;AACxE,CAAC;AAED,IAAa,sBAAsBA,OAAAA,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,EAA6B;AAEzF,IAAM,wBAAwBA,OAAAA,EAAE,OAAO;CACrC,IAAIA,OAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACpB,MAAM;CACN,SAASA,OAAAA,EAAE,MAAM,qBAAqB;CACtC,UAAUA,OAAAA,EAAE,QAAQ;AACtB,CAAC;AAGD,IAAM,2BAA2BA,OAAAA,EAAE,OAAO;CACxC,SAASA,OAAAA,EAAE,QAAQ,2BAA2B;CAC9C,OAAOA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,QAAQ,CAAC;AAC5B,CAAC;AAcD,SAAgB,gBACd,KACA,gBACwB;CACxB,IAAI,CAAC,KAAK,OAAO,CAAC;CAClB,IAAI;CACJ,IAAI;EACF,OAAO,KAAK,MAAM,GAAG;CACvB,QAAQ;EACN,OAAO,CAAC;CACV;CACA,MAAM,WAAW,yBAAyB,UAAU,IAAI;CACxD,IAAI,CAAC,SAAS,SAAS,OAAO,CAAC;CAC/B,OAAO,SAAS,KAAK,MAAM,SAAQ,cAAa;EAC9C,MAAM,OAAO,sBAAsB,UAAU,SAAS;EACtD,IAAI,CAAC,KAAK,SAAS,OAAO,CAAC;EAC3B,MAAM,WAAW,eAAe,UAAU,KAAK,KAAK,QAAQ;EAC5D,IAAI,CAAC,SAAS,SAAS,OAAO,CAAC;EAC/B,OAAO,CAAC;GAAE,GAAG,KAAK;GAAM,UAAU,SAAS;EAAK,CAAC;CACnD,CAAC;AACH;AAEA,SAAgB,oBAA+B,OAAgD;CAC7F,OAAO,KAAK,UAAU;EAAE,SAAS;EAA6B;CAAM,CAAC;AACvE"}
@@ -0,0 +1,54 @@
1
+ import { z } from "zod/v4";
2
+ var SAVED_VIEWS_STORAGE_VERSION = 1;
3
+ var filterBarScalarSchema = z.union([
4
+ z.string(),
5
+ z.number(),
6
+ z.boolean()
7
+ ]);
8
+ var savedViewFilterSchema = z.object({
9
+ id: z.string().min(1),
10
+ fieldId: z.string().min(1),
11
+ operatorId: z.string().min(1),
12
+ value: z.union([filterBarScalarSchema, z.array(filterBarScalarSchema)])
13
+ });
14
+ var savedViewNameSchema = z.string().trim().min(1).max(80);
15
+ var storedSavedViewSchema = z.object({
16
+ id: z.string().min(1),
17
+ name: savedViewNameSchema,
18
+ filters: z.array(savedViewFilterSchema),
19
+ settings: z.unknown()
20
+ });
21
+ var savedViewsDocumentSchema = z.object({
22
+ version: z.literal(SAVED_VIEWS_STORAGE_VERSION),
23
+ views: z.array(z.unknown())
24
+ });
25
+ function parseSavedViews(raw, settingsSchema) {
26
+ if (!raw) return [];
27
+ let json;
28
+ try {
29
+ json = JSON.parse(raw);
30
+ } catch {
31
+ return [];
32
+ }
33
+ const document = savedViewsDocumentSchema.safeParse(json);
34
+ if (!document.success) return [];
35
+ return document.data.views.flatMap((candidate) => {
36
+ const view = storedSavedViewSchema.safeParse(candidate);
37
+ if (!view.success) return [];
38
+ const settings = settingsSchema.safeParse(view.data.settings);
39
+ if (!settings.success) return [];
40
+ return [{
41
+ ...view.data,
42
+ settings: settings.data
43
+ }];
44
+ });
45
+ }
46
+ function serializeSavedViews(views) {
47
+ return JSON.stringify({
48
+ version: SAVED_VIEWS_STORAGE_VERSION,
49
+ views
50
+ });
51
+ }
52
+ export { savedViewNameSchema as n, serializeSavedViews as r, parseSavedViews as t };
53
+
54
+ //# sourceMappingURL=saved-view-schema-eJXlRRel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"saved-view-schema-eJXlRRel.js","names":[],"sources":["../src/ds/components/SavedViews/saved-view-schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nexport const MAX_SAVED_VIEW_NAME_CHARS = 80;\n\nconst SAVED_VIEWS_STORAGE_VERSION = 1;\n\nconst filterBarScalarSchema = z.union([z.string(), z.number(), z.boolean()]);\n\nconst savedViewFilterSchema = z.object({\n id: z.string().min(1),\n fieldId: z.string().min(1),\n operatorId: z.string().min(1),\n value: z.union([filterBarScalarSchema, z.array(filterBarScalarSchema)]),\n}) satisfies z.ZodType<FilterBarItem>;\n\nexport const savedViewNameSchema = z.string().trim().min(1).max(MAX_SAVED_VIEW_NAME_CHARS);\n\nconst storedSavedViewSchema = z.object({\n id: z.string().min(1),\n name: savedViewNameSchema,\n filters: z.array(savedViewFilterSchema),\n settings: z.unknown(),\n});\n\n// Views stay `unknown` so one malformed view is dropped on its own, not the whole list.\nconst savedViewsDocumentSchema = z.object({\n version: z.literal(SAVED_VIEWS_STORAGE_VERSION),\n views: z.array(z.unknown()),\n});\n\n// Only `safeParse` is used, so the consumer's Zod version never has to match this package's.\nexport type SavedViewSettingsSchema<TSettings> = {\n safeParse: (value: unknown) => { success: true; data: TSettings } | { success: false };\n};\n\nexport type SavedView<TSettings> = {\n id: string;\n name: string;\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport function parseSavedViews<TSettings>(\n raw: string | null,\n settingsSchema: SavedViewSettingsSchema<TSettings>,\n): SavedView<TSettings>[] {\n if (!raw) return [];\n let json: unknown;\n try {\n json = JSON.parse(raw);\n } catch {\n return [];\n }\n const document = savedViewsDocumentSchema.safeParse(json);\n if (!document.success) return [];\n return document.data.views.flatMap(candidate => {\n const view = storedSavedViewSchema.safeParse(candidate);\n if (!view.success) return [];\n const settings = settingsSchema.safeParse(view.data.settings);\n if (!settings.success) return [];\n return [{ ...view.data, settings: settings.data }];\n });\n}\n\nexport function serializeSavedViews<TSettings>(views: readonly SavedView<TSettings>[]): string {\n return JSON.stringify({ version: SAVED_VIEWS_STORAGE_VERSION, views });\n}\n"],"mappings":";AAKA,IAAM,8BAA8B;AAEpC,IAAM,wBAAwB,EAAE,MAAM;CAAC,EAAE,OAAO;CAAG,EAAE,OAAO;CAAG,EAAE,QAAQ;AAAC,CAAC;AAE3E,IAAM,wBAAwB,EAAE,OAAO;CACrC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACpB,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACzB,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CAC5B,OAAO,EAAE,MAAM,CAAC,uBAAuB,EAAE,MAAM,qBAAqB,CAAC,CAAC;AACxE,CAAC;AAED,IAAa,sBAAsB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,EAA6B;AAEzF,IAAM,wBAAwB,EAAE,OAAO;CACrC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;CACpB,MAAM;CACN,SAAS,EAAE,MAAM,qBAAqB;CACtC,UAAU,EAAE,QAAQ;AACtB,CAAC;AAGD,IAAM,2BAA2B,EAAE,OAAO;CACxC,SAAS,EAAE,QAAQ,2BAA2B;CAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC5B,CAAC;AAcD,SAAgB,gBACd,KACA,gBACwB;CACxB,IAAI,CAAC,KAAK,OAAO,CAAC;CAClB,IAAI;CACJ,IAAI;EACF,OAAO,KAAK,MAAM,GAAG;CACvB,QAAQ;EACN,OAAO,CAAC;CACV;CACA,MAAM,WAAW,yBAAyB,UAAU,IAAI;CACxD,IAAI,CAAC,SAAS,SAAS,OAAO,CAAC;CAC/B,OAAO,SAAS,KAAK,MAAM,SAAQ,cAAa;EAC9C,MAAM,OAAO,sBAAsB,UAAU,SAAS;EACtD,IAAI,CAAC,KAAK,SAAS,OAAO,CAAC;EAC3B,MAAM,WAAW,eAAe,UAAU,KAAK,KAAK,QAAQ;EAC5D,IAAI,CAAC,SAAS,SAAS,OAAO,CAAC;EAC/B,OAAO,CAAC;GAAE,GAAG,KAAK;GAAM,UAAU,SAAS;EAAK,CAAC;CACnD,CAAC;AACH;AAEA,SAAgB,oBAA+B,OAAgD;CAC7F,OAAO,KAAK,UAAU;EAAE,SAAS;EAA6B;CAAM,CAAC;AACvE"}
@@ -3,11 +3,11 @@ const require_utils = require("./utils-uDc1ofX1.cjs");
3
3
  require("./primitives/raised-surface.cjs.js");
4
4
  const require_scroll_area = require("./scroll-area-BP4gPZ4G.cjs");
5
5
  const require_Txt = require("./Txt-BnoSqxKE.cjs");
6
- const require_tool_presentation = require("./tool-presentation-D2uUj1AB.cjs");
6
+ const require_tool_presentation = require("./tool-presentation-BLErsb7c.cjs");
7
+ const require_activity = require("./activity-DAK8tj7r.cjs");
7
8
  const require_components_Collapsible = require("./components/Collapsible.cjs.js");
8
9
  const require_components_DisclosureChevron = require("./components/DisclosureChevron.cjs.js");
9
- const require_activity = require("./activity-QyLJcBKc.cjs");
10
- const require_MarkdownRenderer = require("./MarkdownRenderer-BgqKfmRm.cjs");
10
+ const require_MarkdownRenderer = require("./MarkdownRenderer-CS6u5drO.cjs");
11
11
  const require_domains_chat_components_badge_wrapper = require("./domains/chat/components/badge-wrapper.cjs.js");
12
12
  const require_DataKeysAndValues = require("./DataKeysAndValues-DsH6AbAo.cjs");
13
13
  const require_domains_traces_components_span_payload_span_payload_registry = require("./domains/traces/components/span-payload/span-payload-registry.cjs.js");
@@ -214,4 +214,4 @@ Object.defineProperty(exports, "SpanToolNameValue", {
214
214
  }
215
215
  });
216
216
 
217
- //# sourceMappingURL=span-payload-primitives-D3OO0u6u.cjs.map
217
+ //# sourceMappingURL=span-payload-primitives-B10Xxmx7.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"span-payload-primitives-D3OO0u6u.cjs","names":["useLinkComponent","getDelegatedToolHref","DataKeysAndValues","SpanPayloadJson","presentTool","getDelegatedTool","BadgeWrapper","ActivityHeadline","Txt","MarkdownRenderer","Collapsible","CollapsibleTrigger","DisclosureChevron","CollapsibleContent","ScrollArea","cn"],"sources":["../src/domains/traces/components/span-payload/span-payload-tool.tsx","../src/domains/traces/components/span-payload/span-payload-primitives.tsx"],"sourcesContent":["import { SpanPayloadJson } from './span-payload-json';\nimport { SpanPayloadField } from './span-payload-primitives';\nimport { getDelegatedTool, getDelegatedToolHref } from './span-payload-registry';\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { ActivityHeadline } from '@/ds/components/ai/activity';\nimport { presentTool } from '@/ds/components/ai/tool-call/tool-presentation';\nimport { DataKeysAndValues } from '@/ds/components/DataKeysAndValues';\nimport { useLinkComponent } from '@/lib/framework';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\n/** A tool name in a key/value list, linked to its page when the tool is a workflow or sub-agent. */\nexport function SpanToolNameValue({ toolName }: { toolName: string }) {\n const { Link, paths } = useLinkComponent();\n const href = getDelegatedToolHref(paths, toolName);\n if (!href) return <DataKeysAndValues.Value>{toolName}</DataKeysAndValues.Value>;\n return (\n <DataKeysAndValues.ValueLink href={href} as={Link}>\n {toolName}\n </DataKeysAndValues.ValueLink>\n );\n}\n\nexport function SpanPayloadTool({ value }: { value: unknown }) {\n const { Link, paths } = useLinkComponent();\n if (!isRecord(value)) return <SpanPayloadJson value={value} />;\n const call = value.type === 'tool-invocation' ? value.toolInvocation : value;\n if (!isRecord(call) || typeof call.toolName !== 'string' || !call.toolName) {\n return <SpanPayloadJson value={value} />;\n }\n const input = 'args' in call ? call.args : call.input;\n const output = 'result' in call ? call.result : call.output;\n const error = call.isError === true || call.state === 'output-error';\n const errorText = typeof call.errorText === 'string' ? call.errorText : undefined;\n const { icon: ToolIcon, label, detail, description } = presentTool(call.toolName, input);\n const delegated = getDelegatedTool(call.toolName);\n // The header toggles the body, so the workflow or agent link sits in the body rather than in it.\n const delegatedHref = getDelegatedToolHref(paths, call.toolName);\n const hasBody = Boolean(delegatedHref) || input !== undefined || output !== undefined || errorText !== undefined;\n return (\n <div data-slot=\"span-payload-tool\" className=\"flex flex-col gap-2\">\n <BadgeWrapper\n status={error ? 'error' : 'idle'}\n header={\n <ActivityHeadline icon={<ToolIcon aria-hidden />} label={label} detail={detail} description={description} />\n }\n >\n {hasBody && (\n <div className=\"flex flex-col gap-3\">\n {delegated && delegatedHref && (\n <DataKeysAndValues>\n <DataKeysAndValues.Key>{delegated.kind === 'workflow' ? 'Workflow' : 'Agent'}</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueLink href={delegatedHref} as={Link}>\n {delegated.key}\n </DataKeysAndValues.ValueLink>\n </DataKeysAndValues>\n )}\n {input !== undefined && (\n <SpanPayloadField label=\"Arguments\">\n <SpanPayloadJson value={input} />\n </SpanPayloadField>\n )}\n {output !== undefined && (\n <SpanPayloadField label=\"Result\">\n <SpanPayloadJson value={output} />\n </SpanPayloadField>\n )}\n {errorText !== undefined && (\n <SpanPayloadField label=\"Error\">\n <SpanPayloadJson value={errorText} />\n </SpanPayloadField>\n )}\n </div>\n )}\n </BadgeWrapper>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SpanPayloadTool } from './span-payload-tool';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\n/** Small-caps label above a field of a rich payload. */\nexport function SpanPayloadLabel({ children }: { children: ReactNode }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className=\"block uppercase\">\n {children}\n </Txt>\n );\n}\n\nexport function SpanPayloadField({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div data-slot=\"span-payload-field\" className=\"flex flex-col gap-1.5\">\n <SpanPayloadLabel>{label}</SpanPayloadLabel>\n {children}\n </div>\n );\n}\n\nexport function SpanPayloadMarkdown({ children }: { children: string }) {\n return (\n <div data-slot=\"span-payload-markdown\" className=\"text-foreground\">\n <MarkdownRenderer>{children}</MarkdownRenderer>\n </div>\n );\n}\n\n/** A collapsed block for secondary data (reasoning, steps, warnings…). */\nexport function SpanPayloadCollapsible({\n label,\n children,\n defaultOpen = false,\n}: {\n label: ReactNode;\n children: ReactNode;\n defaultOpen?: boolean;\n}) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <CollapsibleTrigger className=\"flex items-center gap-1 text-meta text-placeholder uppercase\">\n <DisclosureChevron direction=\"right\" className=\"size-3\" />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-1.5\">{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\nexport interface SpanPayloadListItem {\n key: string;\n /** The item name, a link when it has a page to open. */\n name: ReactNode;\n description?: string;\n}\n\n/**\n * A scrollable list of named items with an optional description (tools, skills…). The scrollbar\n * stays visible while the list overflows, so readers can tell there are more items below.\n * `card` frames it on its own surface, for a list that stands alone in a section.\n */\nexport function SpanPayloadList({ items, slot, card }: { items: SpanPayloadListItem[]; slot: string; card?: boolean }) {\n return (\n <ScrollArea\n maxHeight=\"12rem\"\n alwaysShowScrollbar\n className={cn(card && cn(raisedSurfaceStyle, 'rounded-lg [--scroll-area-scrollbar-inset:0.5rem]'))}\n >\n <ul data-slot={slot} className={cn('flex flex-col gap-2', card ? 'p-3 pr-4' : 'pr-3')}>\n {items.map(item => (\n <li key={item.key} className=\"flex min-w-0 flex-col\">\n {item.name}\n {item.description && (\n // Payload content reads in ink like the messages around it; grey is kept for the labels.\n <Txt as=\"span\" variant=\"body-sm\" className=\"line-clamp-2\" title={item.description}>\n {item.description}\n </Txt>\n )}\n </li>\n ))}\n </ul>\n </ScrollArea>\n );\n}\n\n/** A list item name rendered as plain text. */\nexport function SpanPayloadListName({ children }: { children: string }) {\n return (\n <Txt as=\"span\" variant=\"label\" tone=\"ink\" className=\"truncate\">\n {children}\n </Txt>\n );\n}\n\n/** Tool calls as core records them: `{ toolName, args | input }` when they have that shape, JSON otherwise. */\nexport function SpanPayloadToolCalls({ toolCalls }: { toolCalls: unknown[] }) {\n return (\n <ul data-slot=\"span-payload-tool-calls\" className=\"flex flex-col gap-2\">\n {toolCalls.map((call, index) => (\n <li key={index}>\n <SpanPayloadTool value={call} />\n </li>\n ))}\n </ul>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"span-payload-primitives-B10Xxmx7.cjs","names":["useLinkComponent","getDelegatedToolHref","DataKeysAndValues","SpanPayloadJson","presentTool","getDelegatedTool","BadgeWrapper","ActivityHeadline","Txt","MarkdownRenderer","Collapsible","CollapsibleTrigger","DisclosureChevron","CollapsibleContent","ScrollArea","cn"],"sources":["../src/domains/traces/components/span-payload/span-payload-tool.tsx","../src/domains/traces/components/span-payload/span-payload-primitives.tsx"],"sourcesContent":["import { SpanPayloadJson } from './span-payload-json';\nimport { SpanPayloadField } from './span-payload-primitives';\nimport { getDelegatedTool, getDelegatedToolHref } from './span-payload-registry';\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { ActivityHeadline } from '@/ds/components/ai/activity';\nimport { presentTool } from '@/ds/components/ai/tool-call/tool-presentation';\nimport { DataKeysAndValues } from '@/ds/components/DataKeysAndValues';\nimport { useLinkComponent } from '@/lib/framework';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\n/** A tool name in a key/value list, linked to its page when the tool is a workflow or sub-agent. */\nexport function SpanToolNameValue({ toolName }: { toolName: string }) {\n const { Link, paths } = useLinkComponent();\n const href = getDelegatedToolHref(paths, toolName);\n if (!href) return <DataKeysAndValues.Value>{toolName}</DataKeysAndValues.Value>;\n return (\n <DataKeysAndValues.ValueLink href={href} as={Link}>\n {toolName}\n </DataKeysAndValues.ValueLink>\n );\n}\n\nexport function SpanPayloadTool({ value }: { value: unknown }) {\n const { Link, paths } = useLinkComponent();\n if (!isRecord(value)) return <SpanPayloadJson value={value} />;\n const call = value.type === 'tool-invocation' ? value.toolInvocation : value;\n if (!isRecord(call) || typeof call.toolName !== 'string' || !call.toolName) {\n return <SpanPayloadJson value={value} />;\n }\n const input = 'args' in call ? call.args : call.input;\n const output = 'result' in call ? call.result : call.output;\n const error = call.isError === true || call.state === 'output-error';\n const errorText = typeof call.errorText === 'string' ? call.errorText : undefined;\n const { icon: ToolIcon, label, detail, description } = presentTool(call.toolName, input);\n const delegated = getDelegatedTool(call.toolName);\n // The header toggles the body, so the workflow or agent link sits in the body rather than in it.\n const delegatedHref = getDelegatedToolHref(paths, call.toolName);\n const hasBody = Boolean(delegatedHref) || input !== undefined || output !== undefined || errorText !== undefined;\n return (\n <div data-slot=\"span-payload-tool\" className=\"flex flex-col gap-2\">\n <BadgeWrapper\n status={error ? 'error' : 'idle'}\n header={\n <ActivityHeadline icon={<ToolIcon aria-hidden />} label={label} detail={detail} description={description} />\n }\n >\n {hasBody && (\n <div className=\"flex flex-col gap-3\">\n {delegated && delegatedHref && (\n <DataKeysAndValues>\n <DataKeysAndValues.Key>{delegated.kind === 'workflow' ? 'Workflow' : 'Agent'}</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueLink href={delegatedHref} as={Link}>\n {delegated.key}\n </DataKeysAndValues.ValueLink>\n </DataKeysAndValues>\n )}\n {input !== undefined && (\n <SpanPayloadField label=\"Arguments\">\n <SpanPayloadJson value={input} />\n </SpanPayloadField>\n )}\n {output !== undefined && (\n <SpanPayloadField label=\"Result\">\n <SpanPayloadJson value={output} />\n </SpanPayloadField>\n )}\n {errorText !== undefined && (\n <SpanPayloadField label=\"Error\">\n <SpanPayloadJson value={errorText} />\n </SpanPayloadField>\n )}\n </div>\n )}\n </BadgeWrapper>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SpanPayloadTool } from './span-payload-tool';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\n/** Small-caps label above a field of a rich payload. */\nexport function SpanPayloadLabel({ children }: { children: ReactNode }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className=\"block uppercase\">\n {children}\n </Txt>\n );\n}\n\nexport function SpanPayloadField({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div data-slot=\"span-payload-field\" className=\"flex flex-col gap-1.5\">\n <SpanPayloadLabel>{label}</SpanPayloadLabel>\n {children}\n </div>\n );\n}\n\nexport function SpanPayloadMarkdown({ children }: { children: string }) {\n return (\n <div data-slot=\"span-payload-markdown\" className=\"text-foreground\">\n <MarkdownRenderer>{children}</MarkdownRenderer>\n </div>\n );\n}\n\n/** A collapsed block for secondary data (reasoning, steps, warnings…). */\nexport function SpanPayloadCollapsible({\n label,\n children,\n defaultOpen = false,\n}: {\n label: ReactNode;\n children: ReactNode;\n defaultOpen?: boolean;\n}) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <CollapsibleTrigger className=\"flex items-center gap-1 text-meta text-placeholder uppercase\">\n <DisclosureChevron direction=\"right\" className=\"size-3\" />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-1.5\">{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\nexport interface SpanPayloadListItem {\n key: string;\n /** The item name, a link when it has a page to open. */\n name: ReactNode;\n description?: string;\n}\n\n/**\n * A scrollable list of named items with an optional description (tools, skills…). The scrollbar\n * stays visible while the list overflows, so readers can tell there are more items below.\n * `card` frames it on its own surface, for a list that stands alone in a section.\n */\nexport function SpanPayloadList({ items, slot, card }: { items: SpanPayloadListItem[]; slot: string; card?: boolean }) {\n return (\n <ScrollArea\n maxHeight=\"12rem\"\n alwaysShowScrollbar\n className={cn(card && cn(raisedSurfaceStyle, 'rounded-lg [--scroll-area-scrollbar-inset:0.5rem]'))}\n >\n <ul data-slot={slot} className={cn('flex flex-col gap-2', card ? 'p-3 pr-4' : 'pr-3')}>\n {items.map(item => (\n <li key={item.key} className=\"flex min-w-0 flex-col\">\n {item.name}\n {item.description && (\n // Payload content reads in ink like the messages around it; grey is kept for the labels.\n <Txt as=\"span\" variant=\"body-sm\" className=\"line-clamp-2\" title={item.description}>\n {item.description}\n </Txt>\n )}\n </li>\n ))}\n </ul>\n </ScrollArea>\n );\n}\n\n/** A list item name rendered as plain text. */\nexport function SpanPayloadListName({ children }: { children: string }) {\n return (\n <Txt as=\"span\" variant=\"label\" tone=\"ink\" className=\"truncate\">\n {children}\n </Txt>\n );\n}\n\n/** Tool calls as core records them: `{ toolName, args | input }` when they have that shape, JSON otherwise. */\nexport function SpanPayloadToolCalls({ toolCalls }: { toolCalls: unknown[] }) {\n return (\n <ul data-slot=\"span-payload-tool-calls\" className=\"flex flex-col gap-2\">\n {toolCalls.map((call, index) => (\n <li key={index}>\n <SpanPayloadTool value={call} />\n </li>\n ))}\n </ul>\n );\n}\n"],"mappings":"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"}
@@ -3,11 +3,11 @@ import { t as cn } from "./utils-DQx8TpNT.js";
3
3
  import "./primitives/raised-surface.es.js";
4
4
  import { t as ScrollArea } from "./scroll-area-C226l0v0.js";
5
5
  import { t as Txt } from "./Txt-BM6TVV_c.js";
6
- import { r as presentTool } from "./tool-presentation-DKfIKLQy.js";
6
+ import { r as presentTool } from "./tool-presentation-BSZYIWx2.js";
7
+ import { f as ActivityHeadline } from "./activity-CM34JyW-.js";
7
8
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./components/Collapsible.es.js";
8
9
  import { DisclosureChevron } from "./components/DisclosureChevron.es.js";
9
- import { f as ActivityHeadline } from "./activity-ihrl0JtH.js";
10
- import { t as MarkdownRenderer } from "./MarkdownRenderer-DKCDXaLy.js";
10
+ import { t as MarkdownRenderer } from "./MarkdownRenderer-DME2xKTk.js";
11
11
  import { BadgeWrapper } from "./domains/chat/components/badge-wrapper.es.js";
12
12
  import { t as DataKeysAndValues } from "./DataKeysAndValues-PwOmGxyp.js";
13
13
  import { getDelegatedTool, getDelegatedToolHref } from "./domains/traces/components/span-payload/span-payload-registry.es.js";
@@ -161,4 +161,4 @@ function SpanPayloadToolCalls({ toolCalls }) {
161
161
  }
162
162
  export { SpanPayloadListName as a, SpanPayloadTool as c, SpanPayloadList as i, SpanToolNameValue as l, SpanPayloadField as n, SpanPayloadMarkdown as o, SpanPayloadLabel as r, SpanPayloadToolCalls as s, SpanPayloadCollapsible as t };
163
163
 
164
- //# sourceMappingURL=span-payload-primitives-DTV7eUY-.js.map
164
+ //# sourceMappingURL=span-payload-primitives-Dyhbqaa7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"span-payload-primitives-DTV7eUY-.js","names":[],"sources":["../src/domains/traces/components/span-payload/span-payload-tool.tsx","../src/domains/traces/components/span-payload/span-payload-primitives.tsx"],"sourcesContent":["import { SpanPayloadJson } from './span-payload-json';\nimport { SpanPayloadField } from './span-payload-primitives';\nimport { getDelegatedTool, getDelegatedToolHref } from './span-payload-registry';\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { ActivityHeadline } from '@/ds/components/ai/activity';\nimport { presentTool } from '@/ds/components/ai/tool-call/tool-presentation';\nimport { DataKeysAndValues } from '@/ds/components/DataKeysAndValues';\nimport { useLinkComponent } from '@/lib/framework';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\n/** A tool name in a key/value list, linked to its page when the tool is a workflow or sub-agent. */\nexport function SpanToolNameValue({ toolName }: { toolName: string }) {\n const { Link, paths } = useLinkComponent();\n const href = getDelegatedToolHref(paths, toolName);\n if (!href) return <DataKeysAndValues.Value>{toolName}</DataKeysAndValues.Value>;\n return (\n <DataKeysAndValues.ValueLink href={href} as={Link}>\n {toolName}\n </DataKeysAndValues.ValueLink>\n );\n}\n\nexport function SpanPayloadTool({ value }: { value: unknown }) {\n const { Link, paths } = useLinkComponent();\n if (!isRecord(value)) return <SpanPayloadJson value={value} />;\n const call = value.type === 'tool-invocation' ? value.toolInvocation : value;\n if (!isRecord(call) || typeof call.toolName !== 'string' || !call.toolName) {\n return <SpanPayloadJson value={value} />;\n }\n const input = 'args' in call ? call.args : call.input;\n const output = 'result' in call ? call.result : call.output;\n const error = call.isError === true || call.state === 'output-error';\n const errorText = typeof call.errorText === 'string' ? call.errorText : undefined;\n const { icon: ToolIcon, label, detail, description } = presentTool(call.toolName, input);\n const delegated = getDelegatedTool(call.toolName);\n // The header toggles the body, so the workflow or agent link sits in the body rather than in it.\n const delegatedHref = getDelegatedToolHref(paths, call.toolName);\n const hasBody = Boolean(delegatedHref) || input !== undefined || output !== undefined || errorText !== undefined;\n return (\n <div data-slot=\"span-payload-tool\" className=\"flex flex-col gap-2\">\n <BadgeWrapper\n status={error ? 'error' : 'idle'}\n header={\n <ActivityHeadline icon={<ToolIcon aria-hidden />} label={label} detail={detail} description={description} />\n }\n >\n {hasBody && (\n <div className=\"flex flex-col gap-3\">\n {delegated && delegatedHref && (\n <DataKeysAndValues>\n <DataKeysAndValues.Key>{delegated.kind === 'workflow' ? 'Workflow' : 'Agent'}</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueLink href={delegatedHref} as={Link}>\n {delegated.key}\n </DataKeysAndValues.ValueLink>\n </DataKeysAndValues>\n )}\n {input !== undefined && (\n <SpanPayloadField label=\"Arguments\">\n <SpanPayloadJson value={input} />\n </SpanPayloadField>\n )}\n {output !== undefined && (\n <SpanPayloadField label=\"Result\">\n <SpanPayloadJson value={output} />\n </SpanPayloadField>\n )}\n {errorText !== undefined && (\n <SpanPayloadField label=\"Error\">\n <SpanPayloadJson value={errorText} />\n </SpanPayloadField>\n )}\n </div>\n )}\n </BadgeWrapper>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SpanPayloadTool } from './span-payload-tool';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\n/** Small-caps label above a field of a rich payload. */\nexport function SpanPayloadLabel({ children }: { children: ReactNode }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className=\"block uppercase\">\n {children}\n </Txt>\n );\n}\n\nexport function SpanPayloadField({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div data-slot=\"span-payload-field\" className=\"flex flex-col gap-1.5\">\n <SpanPayloadLabel>{label}</SpanPayloadLabel>\n {children}\n </div>\n );\n}\n\nexport function SpanPayloadMarkdown({ children }: { children: string }) {\n return (\n <div data-slot=\"span-payload-markdown\" className=\"text-foreground\">\n <MarkdownRenderer>{children}</MarkdownRenderer>\n </div>\n );\n}\n\n/** A collapsed block for secondary data (reasoning, steps, warnings…). */\nexport function SpanPayloadCollapsible({\n label,\n children,\n defaultOpen = false,\n}: {\n label: ReactNode;\n children: ReactNode;\n defaultOpen?: boolean;\n}) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <CollapsibleTrigger className=\"flex items-center gap-1 text-meta text-placeholder uppercase\">\n <DisclosureChevron direction=\"right\" className=\"size-3\" />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-1.5\">{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\nexport interface SpanPayloadListItem {\n key: string;\n /** The item name, a link when it has a page to open. */\n name: ReactNode;\n description?: string;\n}\n\n/**\n * A scrollable list of named items with an optional description (tools, skills…). The scrollbar\n * stays visible while the list overflows, so readers can tell there are more items below.\n * `card` frames it on its own surface, for a list that stands alone in a section.\n */\nexport function SpanPayloadList({ items, slot, card }: { items: SpanPayloadListItem[]; slot: string; card?: boolean }) {\n return (\n <ScrollArea\n maxHeight=\"12rem\"\n alwaysShowScrollbar\n className={cn(card && cn(raisedSurfaceStyle, 'rounded-lg [--scroll-area-scrollbar-inset:0.5rem]'))}\n >\n <ul data-slot={slot} className={cn('flex flex-col gap-2', card ? 'p-3 pr-4' : 'pr-3')}>\n {items.map(item => (\n <li key={item.key} className=\"flex min-w-0 flex-col\">\n {item.name}\n {item.description && (\n // Payload content reads in ink like the messages around it; grey is kept for the labels.\n <Txt as=\"span\" variant=\"body-sm\" className=\"line-clamp-2\" title={item.description}>\n {item.description}\n </Txt>\n )}\n </li>\n ))}\n </ul>\n </ScrollArea>\n );\n}\n\n/** A list item name rendered as plain text. */\nexport function SpanPayloadListName({ children }: { children: string }) {\n return (\n <Txt as=\"span\" variant=\"label\" tone=\"ink\" className=\"truncate\">\n {children}\n </Txt>\n );\n}\n\n/** Tool calls as core records them: `{ toolName, args | input }` when they have that shape, JSON otherwise. */\nexport function SpanPayloadToolCalls({ toolCalls }: { toolCalls: unknown[] }) {\n return (\n <ul data-slot=\"span-payload-tool-calls\" className=\"flex flex-col gap-2\">\n {toolCalls.map((call, index) => (\n <li key={index}>\n <SpanPayloadTool value={call} />\n </li>\n ))}\n </ul>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AASA,IAAM,YAAY,UAChB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;;AAGrE,SAAgB,kBAAkB,EAAE,YAAkC;CACpE,MAAM,EAAE,MAAM,UAAU,iBAAiB;CACzC,MAAM,OAAO,qBAAqB,OAAO,QAAQ;CACjD,IAAI,CAAC,MAAM,OAAO,oBAAC,kBAAkB,OAAnB,EAAA,UAA0B,SAAkC,CAAA;CAC9E,OACE,oBAAC,kBAAkB,WAAnB;EAAmC;EAAM,IAAI;EAC1C,UAAA;CAC0B,CAAA;AAEjC;AAEA,SAAgB,gBAAgB,EAAE,SAA6B;CAC7D,MAAM,EAAE,MAAM,UAAU,iBAAiB;CACzC,IAAI,CAAC,SAAS,KAAK,GAAG,OAAO,oBAAC,iBAAD,EAAwB,MAAQ,CAAA;CAC7D,MAAM,OAAO,MAAM,SAAS,oBAAoB,MAAM,iBAAiB;CACvE,IAAI,CAAC,SAAS,IAAI,KAAK,OAAO,KAAK,aAAa,YAAY,CAAC,KAAK,UAChE,OAAO,oBAAC,iBAAD,EAAwB,MAAQ,CAAA;CAEzC,MAAM,QAAQ,UAAU,OAAO,KAAK,OAAO,KAAK;CAChD,MAAM,SAAS,YAAY,OAAO,KAAK,SAAS,KAAK;CACrD,MAAM,QAAQ,KAAK,YAAY,QAAQ,KAAK,UAAU;CACtD,MAAM,YAAY,OAAO,KAAK,cAAc,WAAW,KAAK,YAAY,KAAA;CACxE,MAAM,EAAE,MAAM,UAAU,OAAO,QAAQ,gBAAgB,YAAY,KAAK,UAAU,KAAK;CACvF,MAAM,YAAY,iBAAiB,KAAK,QAAQ;CAEhD,MAAM,gBAAgB,qBAAqB,OAAO,KAAK,QAAQ;CAE/D,OACE,oBAAC,OAAD;EAAK,aAAU;EAAoB,WAAU;EAC3C,UAAA,oBAAC,cAAD;GACE,QAAQ,QAAQ,UAAU;GAC1B,QACE,oBAAC,kBAAD;IAAkB,MAAM,oBAAC,UAAD,EAAU,eAAA,KAAa,CAAA;IAAU;IAAe;IAAqB;GAAc,CAAA;GAG5G,WATS,QAAQ,aAAa,KAAK,UAAU,KAAA,KAAa,WAAW,KAAA,KAAa,cAAc,KAAA,MAU/F,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACG,aAAa,iBACZ,qBAAC,mBAAD,EAAA,UAAA,CACE,oBAAC,kBAAkB,KAAnB,EAAA,UAAwB,UAAU,SAAS,aAAa,aAAa,QAA+B,CAAA,GACpG,oBAAC,kBAAkB,WAAnB;MAA6B,MAAM;MAAe,IAAI;MACnD,UAAA,UAAU;KACgB,CAAA,CACZ,EAAA,CAAA;KAEpB,UAAU,KAAA,KACT,oBAAC,kBAAD;MAAkB,OAAM;MACtB,UAAA,oBAAC,iBAAD,EAAiB,OAAO,MAAQ,CAAA;KAChB,CAAA;KAEnB,WAAW,KAAA,KACV,oBAAC,kBAAD;MAAkB,OAAM;MACtB,UAAA,oBAAC,iBAAD,EAAiB,OAAO,OAAS,CAAA;KACjB,CAAA;KAEnB,cAAc,KAAA,KACb,oBAAC,kBAAD;MAAkB,OAAM;MACtB,UAAA,oBAAC,iBAAD,EAAiB,OAAO,UAAY,CAAA;KACpB,CAAA;IAEjB;;EAEK,CAAA;CACX,CAAA;AAET;;;ACnEA,SAAgB,iBAAiB,EAAE,YAAqC;CACtE,OACE,oBAAC,KAAD;EAAK,IAAG;EAAO,SAAQ;EAAO,MAAK;EAAQ,WAAU;EAClD;CACE,CAAA;AAET;AAEA,SAAgB,iBAAiB,EAAE,OAAO,YAAuD;CAC/F,OACE,qBAAC,OAAD;EAAK,aAAU;EAAqB,WAAU;EAA9C,UAAA,CACE,oBAAC,kBAAD,EAAA,UAAmB,MAAwB,CAAA,GAC1C,QACE;;AAET;AAEA,SAAgB,oBAAoB,EAAE,YAAkC;CACtE,OACE,oBAAC,OAAD;EAAK,aAAU;EAAwB,WAAU;EAC/C,UAAA,oBAAC,kBAAD,EAAmB,SAA2B,CAAA;CAC3C,CAAA;AAET;;AAGA,SAAgB,uBAAuB,EACrC,OACA,UACA,cAAc,SAKb;CACD,OACE,qBAAC,aAAD;EAA0B;EAA1B,UAAA,CACE,qBAAC,oBAAD;GAAoB,WAAU;GAA9B,UAAA,CACE,oBAAC,mBAAD;IAAmB,WAAU;IAAQ,WAAU;GAAU,CAAA,GACxD,KACiB;EACpB,CAAA,GAAA,oBAAC,oBAAD;GAAoB,WAAU;GAAU;EAA6B,CAAA,CAC1D;;AAEjB;;;;;;AAcA,SAAgB,gBAAgB,EAAE,OAAO,MAAM,QAAwE;CACrH,OACE,oBAAC,YAAD;EACE,WAAU;EACV,qBAAA;EACA,WAAW,GAAG,QAAQ,GAAA,6KAAuB,mDAAmD,CAAC;EAEjG,UAAA,oBAAC,MAAD;GAAI,aAAW;GAAM,WAAW,GAAG,uBAAuB,OAAO,aAAa,MAAM;GACjF,UAAA,MAAM,KAAI,SACT,qBAAC,MAAD;IAAmB,WAAU;IAA7B,UAAA,CACG,KAAK,MACL,KAAK,eAEJ,oBAAC,KAAD;KAAK,IAAG;KAAO,SAAQ;KAAU,WAAU;KAAe,OAAO,KAAK;KACnE,UAAA,KAAK;IACH,CAAA,CAEL;GARK,GAAA,KAAK,GAQV,CACL;EACC,CAAA;CACM,CAAA;AAEhB;;AAGA,SAAgB,oBAAoB,EAAE,YAAkC;CACtE,OACE,oBAAC,KAAD;EAAK,IAAG;EAAO,SAAQ;EAAQ,MAAK;EAAM,WAAU;EACjD;CACE,CAAA;AAET;;AAGA,SAAgB,qBAAqB,EAAE,aAAuC;CAC5E,OACE,oBAAC,MAAD;EAAI,aAAU;EAA0B,WAAU;EAC/C,UAAA,UAAU,KAAK,MAAM,UACpB,oBAAC,MAAD,EAAA,UACE,oBAAC,iBAAD,EAAiB,OAAO,KAAO,CAAA,EAC7B,GAFK,KAEL,CACL;CACC,CAAA;AAER"}
1
+ {"version":3,"file":"span-payload-primitives-Dyhbqaa7.js","names":[],"sources":["../src/domains/traces/components/span-payload/span-payload-tool.tsx","../src/domains/traces/components/span-payload/span-payload-primitives.tsx"],"sourcesContent":["import { SpanPayloadJson } from './span-payload-json';\nimport { SpanPayloadField } from './span-payload-primitives';\nimport { getDelegatedTool, getDelegatedToolHref } from './span-payload-registry';\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { ActivityHeadline } from '@/ds/components/ai/activity';\nimport { presentTool } from '@/ds/components/ai/tool-call/tool-presentation';\nimport { DataKeysAndValues } from '@/ds/components/DataKeysAndValues';\nimport { useLinkComponent } from '@/lib/framework';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\n/** A tool name in a key/value list, linked to its page when the tool is a workflow or sub-agent. */\nexport function SpanToolNameValue({ toolName }: { toolName: string }) {\n const { Link, paths } = useLinkComponent();\n const href = getDelegatedToolHref(paths, toolName);\n if (!href) return <DataKeysAndValues.Value>{toolName}</DataKeysAndValues.Value>;\n return (\n <DataKeysAndValues.ValueLink href={href} as={Link}>\n {toolName}\n </DataKeysAndValues.ValueLink>\n );\n}\n\nexport function SpanPayloadTool({ value }: { value: unknown }) {\n const { Link, paths } = useLinkComponent();\n if (!isRecord(value)) return <SpanPayloadJson value={value} />;\n const call = value.type === 'tool-invocation' ? value.toolInvocation : value;\n if (!isRecord(call) || typeof call.toolName !== 'string' || !call.toolName) {\n return <SpanPayloadJson value={value} />;\n }\n const input = 'args' in call ? call.args : call.input;\n const output = 'result' in call ? call.result : call.output;\n const error = call.isError === true || call.state === 'output-error';\n const errorText = typeof call.errorText === 'string' ? call.errorText : undefined;\n const { icon: ToolIcon, label, detail, description } = presentTool(call.toolName, input);\n const delegated = getDelegatedTool(call.toolName);\n // The header toggles the body, so the workflow or agent link sits in the body rather than in it.\n const delegatedHref = getDelegatedToolHref(paths, call.toolName);\n const hasBody = Boolean(delegatedHref) || input !== undefined || output !== undefined || errorText !== undefined;\n return (\n <div data-slot=\"span-payload-tool\" className=\"flex flex-col gap-2\">\n <BadgeWrapper\n status={error ? 'error' : 'idle'}\n header={\n <ActivityHeadline icon={<ToolIcon aria-hidden />} label={label} detail={detail} description={description} />\n }\n >\n {hasBody && (\n <div className=\"flex flex-col gap-3\">\n {delegated && delegatedHref && (\n <DataKeysAndValues>\n <DataKeysAndValues.Key>{delegated.kind === 'workflow' ? 'Workflow' : 'Agent'}</DataKeysAndValues.Key>\n <DataKeysAndValues.ValueLink href={delegatedHref} as={Link}>\n {delegated.key}\n </DataKeysAndValues.ValueLink>\n </DataKeysAndValues>\n )}\n {input !== undefined && (\n <SpanPayloadField label=\"Arguments\">\n <SpanPayloadJson value={input} />\n </SpanPayloadField>\n )}\n {output !== undefined && (\n <SpanPayloadField label=\"Result\">\n <SpanPayloadJson value={output} />\n </SpanPayloadField>\n )}\n {errorText !== undefined && (\n <SpanPayloadField label=\"Error\">\n <SpanPayloadJson value={errorText} />\n </SpanPayloadField>\n )}\n </div>\n )}\n </BadgeWrapper>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SpanPayloadTool } from './span-payload-tool';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\n/** Small-caps label above a field of a rich payload. */\nexport function SpanPayloadLabel({ children }: { children: ReactNode }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className=\"block uppercase\">\n {children}\n </Txt>\n );\n}\n\nexport function SpanPayloadField({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div data-slot=\"span-payload-field\" className=\"flex flex-col gap-1.5\">\n <SpanPayloadLabel>{label}</SpanPayloadLabel>\n {children}\n </div>\n );\n}\n\nexport function SpanPayloadMarkdown({ children }: { children: string }) {\n return (\n <div data-slot=\"span-payload-markdown\" className=\"text-foreground\">\n <MarkdownRenderer>{children}</MarkdownRenderer>\n </div>\n );\n}\n\n/** A collapsed block for secondary data (reasoning, steps, warnings…). */\nexport function SpanPayloadCollapsible({\n label,\n children,\n defaultOpen = false,\n}: {\n label: ReactNode;\n children: ReactNode;\n defaultOpen?: boolean;\n}) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <CollapsibleTrigger className=\"flex items-center gap-1 text-meta text-placeholder uppercase\">\n <DisclosureChevron direction=\"right\" className=\"size-3\" />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-1.5\">{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\nexport interface SpanPayloadListItem {\n key: string;\n /** The item name, a link when it has a page to open. */\n name: ReactNode;\n description?: string;\n}\n\n/**\n * A scrollable list of named items with an optional description (tools, skills…). The scrollbar\n * stays visible while the list overflows, so readers can tell there are more items below.\n * `card` frames it on its own surface, for a list that stands alone in a section.\n */\nexport function SpanPayloadList({ items, slot, card }: { items: SpanPayloadListItem[]; slot: string; card?: boolean }) {\n return (\n <ScrollArea\n maxHeight=\"12rem\"\n alwaysShowScrollbar\n className={cn(card && cn(raisedSurfaceStyle, 'rounded-lg [--scroll-area-scrollbar-inset:0.5rem]'))}\n >\n <ul data-slot={slot} className={cn('flex flex-col gap-2', card ? 'p-3 pr-4' : 'pr-3')}>\n {items.map(item => (\n <li key={item.key} className=\"flex min-w-0 flex-col\">\n {item.name}\n {item.description && (\n // Payload content reads in ink like the messages around it; grey is kept for the labels.\n <Txt as=\"span\" variant=\"body-sm\" className=\"line-clamp-2\" title={item.description}>\n {item.description}\n </Txt>\n )}\n </li>\n ))}\n </ul>\n </ScrollArea>\n );\n}\n\n/** A list item name rendered as plain text. */\nexport function SpanPayloadListName({ children }: { children: string }) {\n return (\n <Txt as=\"span\" variant=\"label\" tone=\"ink\" className=\"truncate\">\n {children}\n </Txt>\n );\n}\n\n/** Tool calls as core records them: `{ toolName, args | input }` when they have that shape, JSON otherwise. */\nexport function SpanPayloadToolCalls({ toolCalls }: { toolCalls: unknown[] }) {\n return (\n <ul data-slot=\"span-payload-tool-calls\" className=\"flex flex-col gap-2\">\n {toolCalls.map((call, index) => (\n <li key={index}>\n <SpanPayloadTool value={call} />\n </li>\n ))}\n </ul>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AASA,IAAM,YAAY,UAChB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;;AAGrE,SAAgB,kBAAkB,EAAE,YAAkC;CACpE,MAAM,EAAE,MAAM,UAAU,iBAAiB;CACzC,MAAM,OAAO,qBAAqB,OAAO,QAAQ;CACjD,IAAI,CAAC,MAAM,OAAO,oBAAC,kBAAkB,OAAnB,EAAA,UAA0B,SAAkC,CAAA;CAC9E,OACE,oBAAC,kBAAkB,WAAnB;EAAmC;EAAM,IAAI;EAC1C,UAAA;CAC0B,CAAA;AAEjC;AAEA,SAAgB,gBAAgB,EAAE,SAA6B;CAC7D,MAAM,EAAE,MAAM,UAAU,iBAAiB;CACzC,IAAI,CAAC,SAAS,KAAK,GAAG,OAAO,oBAAC,iBAAD,EAAwB,MAAQ,CAAA;CAC7D,MAAM,OAAO,MAAM,SAAS,oBAAoB,MAAM,iBAAiB;CACvE,IAAI,CAAC,SAAS,IAAI,KAAK,OAAO,KAAK,aAAa,YAAY,CAAC,KAAK,UAChE,OAAO,oBAAC,iBAAD,EAAwB,MAAQ,CAAA;CAEzC,MAAM,QAAQ,UAAU,OAAO,KAAK,OAAO,KAAK;CAChD,MAAM,SAAS,YAAY,OAAO,KAAK,SAAS,KAAK;CACrD,MAAM,QAAQ,KAAK,YAAY,QAAQ,KAAK,UAAU;CACtD,MAAM,YAAY,OAAO,KAAK,cAAc,WAAW,KAAK,YAAY,KAAA;CACxE,MAAM,EAAE,MAAM,UAAU,OAAO,QAAQ,gBAAgB,YAAY,KAAK,UAAU,KAAK;CACvF,MAAM,YAAY,iBAAiB,KAAK,QAAQ;CAEhD,MAAM,gBAAgB,qBAAqB,OAAO,KAAK,QAAQ;CAE/D,OACE,oBAAC,OAAD;EAAK,aAAU;EAAoB,WAAU;EAC3C,UAAA,oBAAC,cAAD;GACE,QAAQ,QAAQ,UAAU;GAC1B,QACE,oBAAC,kBAAD;IAAkB,MAAM,oBAAC,UAAD,EAAU,eAAA,KAAa,CAAA;IAAU;IAAe;IAAqB;GAAc,CAAA;GAG5G,WATS,QAAQ,aAAa,KAAK,UAAU,KAAA,KAAa,WAAW,KAAA,KAAa,cAAc,KAAA,MAU/F,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACG,aAAa,iBACZ,qBAAC,mBAAD,EAAA,UAAA,CACE,oBAAC,kBAAkB,KAAnB,EAAA,UAAwB,UAAU,SAAS,aAAa,aAAa,QAA+B,CAAA,GACpG,oBAAC,kBAAkB,WAAnB;MAA6B,MAAM;MAAe,IAAI;MACnD,UAAA,UAAU;KACgB,CAAA,CACZ,EAAA,CAAA;KAEpB,UAAU,KAAA,KACT,oBAAC,kBAAD;MAAkB,OAAM;MACtB,UAAA,oBAAC,iBAAD,EAAiB,OAAO,MAAQ,CAAA;KAChB,CAAA;KAEnB,WAAW,KAAA,KACV,oBAAC,kBAAD;MAAkB,OAAM;MACtB,UAAA,oBAAC,iBAAD,EAAiB,OAAO,OAAS,CAAA;KACjB,CAAA;KAEnB,cAAc,KAAA,KACb,oBAAC,kBAAD;MAAkB,OAAM;MACtB,UAAA,oBAAC,iBAAD,EAAiB,OAAO,UAAY,CAAA;KACpB,CAAA;IAEjB;;EAEK,CAAA;CACX,CAAA;AAET;;;ACnEA,SAAgB,iBAAiB,EAAE,YAAqC;CACtE,OACE,oBAAC,KAAD;EAAK,IAAG;EAAO,SAAQ;EAAO,MAAK;EAAQ,WAAU;EAClD;CACE,CAAA;AAET;AAEA,SAAgB,iBAAiB,EAAE,OAAO,YAAuD;CAC/F,OACE,qBAAC,OAAD;EAAK,aAAU;EAAqB,WAAU;EAA9C,UAAA,CACE,oBAAC,kBAAD,EAAA,UAAmB,MAAwB,CAAA,GAC1C,QACE;;AAET;AAEA,SAAgB,oBAAoB,EAAE,YAAkC;CACtE,OACE,oBAAC,OAAD;EAAK,aAAU;EAAwB,WAAU;EAC/C,UAAA,oBAAC,kBAAD,EAAmB,SAA2B,CAAA;CAC3C,CAAA;AAET;;AAGA,SAAgB,uBAAuB,EACrC,OACA,UACA,cAAc,SAKb;CACD,OACE,qBAAC,aAAD;EAA0B;EAA1B,UAAA,CACE,qBAAC,oBAAD;GAAoB,WAAU;GAA9B,UAAA,CACE,oBAAC,mBAAD;IAAmB,WAAU;IAAQ,WAAU;GAAU,CAAA,GACxD,KACiB;EACpB,CAAA,GAAA,oBAAC,oBAAD;GAAoB,WAAU;GAAU;EAA6B,CAAA,CAC1D;;AAEjB;;;;;;AAcA,SAAgB,gBAAgB,EAAE,OAAO,MAAM,QAAwE;CACrH,OACE,oBAAC,YAAD;EACE,WAAU;EACV,qBAAA;EACA,WAAW,GAAG,QAAQ,GAAA,6KAAuB,mDAAmD,CAAC;EAEjG,UAAA,oBAAC,MAAD;GAAI,aAAW;GAAM,WAAW,GAAG,uBAAuB,OAAO,aAAa,MAAM;GACjF,UAAA,MAAM,KAAI,SACT,qBAAC,MAAD;IAAmB,WAAU;IAA7B,UAAA,CACG,KAAK,MACL,KAAK,eAEJ,oBAAC,KAAD;KAAK,IAAG;KAAO,SAAQ;KAAU,WAAU;KAAe,OAAO,KAAK;KACnE,UAAA,KAAK;IACH,CAAA,CAEL;GARK,GAAA,KAAK,GAQV,CACL;EACC,CAAA;CACM,CAAA;AAEhB;;AAGA,SAAgB,oBAAoB,EAAE,YAAkC;CACtE,OACE,oBAAC,KAAD;EAAK,IAAG;EAAO,SAAQ;EAAQ,MAAK;EAAM,WAAU;EACjD;CACE,CAAA;AAET;;AAGA,SAAgB,qBAAqB,EAAE,aAAuC;CAC5E,OACE,oBAAC,MAAD;EAAI,aAAU;EAA0B,WAAU;EAC/C,UAAA,UAAU,KAAK,MAAM,UACpB,oBAAC,MAAD,EAAA,UACE,oBAAC,iBAAD,EAAiB,OAAO,KAAO,CAAA,EAC7B,GAFK,KAEL,CACL;CACC,CAAA;AAER"}
@@ -1,10 +1,12 @@
1
- import type { ActivityMember } from './model/activity-members';
1
+ import type { ActivityCallState, ActivityMember } from './model/activity-members';
2
2
  export interface ActivityStretchLineProps {
3
3
  members: readonly ActivityMember[];
4
4
  /** Still being written: reads what it is doing now, and its list follows the latest call. */
5
5
  live: boolean;
6
6
  /** From the first member to whatever ended the stretch. */
7
7
  elapsedMs?: number;
8
+ /** The calls as they stand now, when a reveal still holds `members` back: the line reads and wears these. */
9
+ current?: readonly ActivityCallState[];
8
10
  }
9
11
  /** One collapsed line for a stretch of tool work and thinking, opening onto what it did. */
10
- export declare function ActivityStretchLine({ members, live, elapsedMs }: ActivityStretchLineProps): import("react").JSX.Element | null;
12
+ export declare function ActivityStretchLine({ members, live, elapsedMs, current }: ActivityStretchLineProps): import("react").JSX.Element | null;
@@ -1,16 +1,17 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { ActivityCall } from '../model/activity-members';
2
+ import type { ActivityCallState } from '../model/activity-members';
3
3
  export interface ActivityFoldProps {
4
- calls: readonly ActivityCall[];
4
+ calls: readonly ActivityCallState[];
5
+ indicator?: boolean;
5
6
  live: boolean;
6
7
  elapsedMs?: number;
7
8
  open: boolean;
8
9
  onOpenChange: (open: boolean) => void;
9
10
  foldable: boolean;
10
- /** Reads at answer size, ruled off from what it folds. */
11
+ /** Reads at answer size. */
11
12
  prominent?: boolean;
12
13
  slot?: string;
13
14
  children: ReactNode;
14
15
  }
15
16
  /** A line that says what its calls are doing, or did, and folds what it summarises. */
16
- export declare function ActivityFold({ calls, live, elapsedMs, open, onOpenChange, foldable, prominent, slot, children, }: ActivityFoldProps): import("react").JSX.Element;
17
+ export declare function ActivityFold({ calls, indicator, live, elapsedMs, open, onOpenChange, foldable, prominent, slot, children, }: ActivityFoldProps): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import type { RefObject } from 'react';
2
+ /**
3
+ * Words wider than their line fade out at its edge instead of ending in an ellipsis. The fade is never wider than
4
+ * what it hides, so a line growing into its full width loses the fade as its last word comes into view.
5
+ */
6
+ export declare function useFadingEdge(line: RefObject<HTMLElement | null>, words: string): void;
@@ -0,0 +1,7 @@
1
+ import type { RefObject } from 'react';
2
+ /**
3
+ * What a line says, moved like a thought changing: new words rise into place while the old ones rise and blur
4
+ * away, and the box glides to the new width. Only a line the reader `watched` being written moves: it writes its
5
+ * first words in from the left, and rolls each time `words`, the key of what is said, changes.
6
+ */
7
+ export declare function useRollingWords(box: RefObject<HTMLElement | null>, said: RefObject<HTMLElement | null>, words: string, watched: boolean): void;