@mastra/playground-ui 68.0.0 → 69.0.0-alpha.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 (1784) hide show
  1. package/README.md +80 -8
  2. package/dist/AgentIndicator-Dnv_1hvF.js +1995 -0
  3. package/dist/AgentIndicator-Dnv_1hvF.js.map +1 -0
  4. package/dist/AgentIndicator-zCokR2zb.cjs +2012 -0
  5. package/dist/AgentIndicator-zCokR2zb.cjs.map +1 -0
  6. package/dist/{AttachmentCard-DbGp7TYl.js → AttachmentCard-Bt3-QAxJ.js} +3 -3
  7. package/dist/{AttachmentCard-DbGp7TYl.js.map → AttachmentCard-Bt3-QAxJ.js.map} +1 -1
  8. package/dist/{AttachmentCard-CciBqu7E.cjs → AttachmentCard-BycDEelL.cjs} +3 -3
  9. package/dist/{AttachmentCard-CciBqu7E.cjs.map → AttachmentCard-BycDEelL.cjs.map} +1 -1
  10. package/dist/{Avatar-Dj8aP7OI.js → Avatar-DOoEXudh.js} +3 -3
  11. package/dist/{Avatar-Dj8aP7OI.js.map → Avatar-DOoEXudh.js.map} +1 -1
  12. package/dist/{Avatar-Iiqjad9K.cjs → Avatar-Dxpc0YUx.cjs} +3 -3
  13. package/dist/{Avatar-Iiqjad9K.cjs.map → Avatar-Dxpc0YUx.cjs.map} +1 -1
  14. package/dist/{Badge-aVu5iGAF.js → Badge-C7NnqmMx.js} +3 -3
  15. package/dist/{Badge-aVu5iGAF.js.map → Badge-C7NnqmMx.js.map} +1 -1
  16. package/dist/{Badge-DZ6r6bcw.cjs → Badge-DqaMg7Gy.cjs} +3 -3
  17. package/dist/{Badge-DZ6r6bcw.cjs.map → Badge-DqaMg7Gy.cjs.map} +1 -1
  18. package/dist/{Button-DLcMcuUL.cjs → Button-BfICfyxD.cjs} +5 -5
  19. package/dist/Button-BfICfyxD.cjs.map +1 -0
  20. package/dist/{Button-CLXTbAY8.js → Button-Bi7aXd_G.js} +5 -5
  21. package/dist/Button-Bi7aXd_G.js.map +1 -0
  22. package/dist/{Card-C6iEBgVq.cjs → Card-C9oCXvxU.cjs} +3 -3
  23. package/dist/{Card-C6iEBgVq.cjs.map → Card-C9oCXvxU.cjs.map} +1 -1
  24. package/dist/{Card-LU1aWO7U.js → Card-ClDoUQNb.js} +3 -3
  25. package/dist/{Card-LU1aWO7U.js.map → Card-ClDoUQNb.js.map} +1 -1
  26. package/dist/{CodeEditor-CLzs0yVc.cjs → CodeEditor-DHIDfP5g.cjs} +8 -8
  27. package/dist/{CodeEditor-CLzs0yVc.cjs.map → CodeEditor-DHIDfP5g.cjs.map} +1 -1
  28. package/dist/{CodeEditor-COnz9c6B.js → CodeEditor-ZoBu3Gjw.js} +8 -8
  29. package/dist/{CodeEditor-COnz9c6B.js.map → CodeEditor-ZoBu3Gjw.js.map} +1 -1
  30. package/dist/{Comment-0n98b_f_.js → Comment-2q9SomE2.js} +5 -5
  31. package/dist/{Comment-0n98b_f_.js.map → Comment-2q9SomE2.js.map} +1 -1
  32. package/dist/{Comment-Cg0f7eLa.cjs → Comment-rQxuMDQv.cjs} +6 -6
  33. package/dist/{Comment-Cg0f7eLa.cjs.map → Comment-rQxuMDQv.cjs.map} +1 -1
  34. package/dist/{Composer-D1gF-0jZ.js → Composer-bVE8qK52.js} +19 -14
  35. package/dist/Composer-bVE8qK52.js.map +1 -0
  36. package/dist/{Composer-BcueJvdX.cjs → Composer-u1K6edoZ.cjs} +18 -13
  37. package/dist/Composer-u1K6edoZ.cjs.map +1 -0
  38. package/dist/{DataCodeSection-CFxXsQWH.cjs → DataCodeSection-7SvRJj6f.cjs} +8 -8
  39. package/dist/{DataCodeSection-CFxXsQWH.cjs.map → DataCodeSection-7SvRJj6f.cjs.map} +1 -1
  40. package/dist/{DataCodeSection-PY9XEg2C.js → DataCodeSection-CTodi9wg.js} +8 -8
  41. package/dist/{DataCodeSection-PY9XEg2C.js.map → DataCodeSection-CTodi9wg.js.map} +1 -1
  42. package/dist/{DataDetailsPanel-DiyjEXqK.cjs → DataDetailsPanel-BDoD6pxx.cjs} +7 -7
  43. package/dist/{DataDetailsPanel-DiyjEXqK.cjs.map → DataDetailsPanel-BDoD6pxx.cjs.map} +1 -1
  44. package/dist/{DataDetailsPanel-CohEKPm4.js → DataDetailsPanel-BU05psHL.js} +7 -7
  45. package/dist/{DataDetailsPanel-CohEKPm4.js.map → DataDetailsPanel-BU05psHL.js.map} +1 -1
  46. package/dist/{DataKeysAndValues-PwOmGxyp.js → DataKeysAndValues-B56je3sK.js} +2 -2
  47. package/dist/{DataKeysAndValues-PwOmGxyp.js.map → DataKeysAndValues-B56je3sK.js.map} +1 -1
  48. package/dist/{DataKeysAndValues-DsH6AbAo.cjs → DataKeysAndValues-BbKeVxrQ.cjs} +2 -2
  49. package/dist/{DataKeysAndValues-DsH6AbAo.cjs.map → DataKeysAndValues-BbKeVxrQ.cjs.map} +1 -1
  50. package/dist/{DataList-CUhRQAv6.js → DataList-B7ho6PrJ.js} +8 -8
  51. package/dist/{DataList-CUhRQAv6.js.map → DataList-B7ho6PrJ.js.map} +1 -1
  52. package/dist/{DataList-Cj0mfk19.cjs → DataList-DTIdllb-.cjs} +8 -8
  53. package/dist/{DataList-Cj0mfk19.cjs.map → DataList-DTIdllb-.cjs.map} +1 -1
  54. package/dist/{DataPanel-Coc9h35I.cjs → DataPanel-BRRAvWYQ.cjs} +10 -10
  55. package/dist/{DataPanel-Coc9h35I.cjs.map → DataPanel-BRRAvWYQ.cjs.map} +1 -1
  56. package/dist/{DataPanel-IgB9D5PO.js → DataPanel-pVr5LVaK.js} +10 -10
  57. package/dist/{DataPanel-IgB9D5PO.js.map → DataPanel-pVr5LVaK.js.map} +1 -1
  58. package/dist/{Dialog-BvWF9HE-.cjs → Dialog-Duy3M1ny.cjs} +3 -3
  59. package/dist/{Dialog-BvWF9HE-.cjs.map → Dialog-Duy3M1ny.cjs.map} +1 -1
  60. package/dist/{Dialog-DaWtxwd9.js → Dialog-OBPu3rl2.js} +3 -3
  61. package/dist/{Dialog-DaWtxwd9.js.map → Dialog-OBPu3rl2.js.map} +1 -1
  62. package/dist/{EmptyState-DxDHlYqD.cjs → EmptyState-Dc-sP95H.cjs} +2 -2
  63. package/dist/{EmptyState-DxDHlYqD.cjs.map → EmptyState-Dc-sP95H.cjs.map} +1 -1
  64. package/dist/{EmptyState-P-Gy898T.js → EmptyState-i88y1x75.js} +2 -2
  65. package/dist/{EmptyState-P-Gy898T.js.map → EmptyState-i88y1x75.js.map} +1 -1
  66. package/dist/{ErrorBoundary-B5GjmA6V.cjs → ErrorBoundary-Bwoum0sT.cjs} +3 -3
  67. package/dist/{ErrorBoundary-B5GjmA6V.cjs.map → ErrorBoundary-Bwoum0sT.cjs.map} +1 -1
  68. package/dist/{ErrorBoundary-Cat3KU86.js → ErrorBoundary-BzmaWe2y.js} +3 -3
  69. package/dist/{ErrorBoundary-Cat3KU86.js.map → ErrorBoundary-BzmaWe2y.js.map} +1 -1
  70. package/dist/{FilterBar-PSQ1OwqH.js → FilterBar-Kmn6gMgO.js} +14 -15
  71. package/dist/FilterBar-Kmn6gMgO.js.map +1 -0
  72. package/dist/{FilterBar-BSP2UTjc.cjs → FilterBar-jBz6yaNu.cjs} +13 -14
  73. package/dist/FilterBar-jBz6yaNu.cjs.map +1 -0
  74. package/dist/{LogsDataList-BI2C5OJz.js → LogsDataList-Cdo_U0Ei.js} +5 -5
  75. package/dist/{LogsDataList-BI2C5OJz.js.map → LogsDataList-Cdo_U0Ei.js.map} +1 -1
  76. package/dist/{LogsDataList-CCIfUPGo.cjs → LogsDataList-z0Y2X8P5.cjs} +5 -5
  77. package/dist/{LogsDataList-CCIfUPGo.cjs.map → LogsDataList-z0Y2X8P5.cjs.map} +1 -1
  78. package/dist/{MarkdownRenderer-y65WGBhC.cjs → MarkdownRenderer-CUYpmuPh.cjs} +6 -6
  79. package/dist/{MarkdownRenderer-y65WGBhC.cjs.map → MarkdownRenderer-CUYpmuPh.cjs.map} +1 -1
  80. package/dist/{MarkdownRenderer-CI30RqdB.js → MarkdownRenderer-CY8LGt-l.js} +6 -6
  81. package/dist/{MarkdownRenderer-CI30RqdB.js.map → MarkdownRenderer-CY8LGt-l.js.map} +1 -1
  82. package/dist/MarkdownRenderer.css +77 -6
  83. package/dist/{Message-jj56lxNL.cjs → Message-CgO_SxI4.cjs} +20 -9
  84. package/dist/Message-CgO_SxI4.cjs.map +1 -0
  85. package/dist/{Message-CWzi5F_Q.js → Message-DnnCoSef.js} +20 -9
  86. package/dist/{Message-CWzi5F_Q.js.map → Message-DnnCoSef.js.map} +1 -1
  87. package/dist/{MessageScroller-CGsfTd1Z.cjs → MessageScroller-D-mK1uuu.cjs} +50 -26
  88. package/dist/MessageScroller-D-mK1uuu.cjs.map +1 -0
  89. package/dist/{MessageScroller-DvaKlm4O.js → MessageScroller-nV_zBF3H.js} +50 -26
  90. package/dist/MessageScroller-nV_zBF3H.js.map +1 -0
  91. package/dist/Metadata-5GJlO4GU.cjs +32 -0
  92. package/dist/Metadata-5GJlO4GU.cjs.map +1 -0
  93. package/dist/Metadata-DlVgmRTA.js +27 -0
  94. package/dist/Metadata-DlVgmRTA.js.map +1 -0
  95. package/dist/{MetricsCard-BEwiS7Pe.cjs → MetricsCard-DojbLiEx.cjs} +19 -6
  96. package/dist/MetricsCard-DojbLiEx.cjs.map +1 -0
  97. package/dist/{MetricsCard-ua6C6b8a.js → MetricsCard-kAqSCPPe.js} +20 -7
  98. package/dist/MetricsCard-kAqSCPPe.js.map +1 -0
  99. package/dist/{MetricsKpiCard-OHbAElTl.js → MetricsKpiCard-1blTbzUs.js} +6 -6
  100. package/dist/{MetricsKpiCard-OHbAElTl.js.map → MetricsKpiCard-1blTbzUs.js.map} +1 -1
  101. package/dist/{MetricsKpiCard-By_-sagx.cjs → MetricsKpiCard-C_9GvRAp.cjs} +6 -6
  102. package/dist/{MetricsKpiCard-By_-sagx.cjs.map → MetricsKpiCard-C_9GvRAp.cjs.map} +1 -1
  103. package/dist/{MetricsLineChart-4SwxBbQx.js → MetricsLineChart-4w5lpH63.js} +3 -3
  104. package/dist/{MetricsLineChart-4SwxBbQx.js.map → MetricsLineChart-4w5lpH63.js.map} +1 -1
  105. package/dist/{MetricsLineChart-tZxsauau.cjs → MetricsLineChart-BnY9JKzc.cjs} +3 -3
  106. package/dist/{MetricsLineChart-tZxsauau.cjs.map → MetricsLineChart-BnY9JKzc.cjs.map} +1 -1
  107. package/dist/{MetricsStackedBarChart-D2QyS4-z.js → MetricsStackedBarChart-Bmk0OjYp.js} +7 -7
  108. package/dist/{MetricsStackedBarChart-D2QyS4-z.js.map → MetricsStackedBarChart-Bmk0OjYp.js.map} +1 -1
  109. package/dist/{MetricsStackedBarChart-CDLE76IB.cjs → MetricsStackedBarChart-CJQF99sc.cjs} +7 -7
  110. package/dist/{MetricsStackedBarChart-CDLE76IB.cjs.map → MetricsStackedBarChart-CJQF99sc.cjs.map} +1 -1
  111. package/dist/{MetricsTable-BSl81oNe.cjs → MetricsTable-CvMoo2vg.cjs} +3 -3
  112. package/dist/{MetricsTable-BSl81oNe.cjs.map → MetricsTable-CvMoo2vg.cjs.map} +1 -1
  113. package/dist/{MetricsTable-DID6LRoP.js → MetricsTable-DIjbD5Xk.js} +3 -3
  114. package/dist/{MetricsTable-DID6LRoP.js.map → MetricsTable-DIjbD5Xk.js.map} +1 -1
  115. package/dist/{Notice-JZ7SW7q6.cjs → Notice-B_KjMmA6.cjs} +3 -3
  116. package/dist/{Notice-JZ7SW7q6.cjs.map → Notice-B_KjMmA6.cjs.map} +1 -1
  117. package/dist/{Notice-C-8oOZZF.js → Notice-OSlG42lD.js} +2 -2
  118. package/dist/{Notice-C-8oOZZF.js.map → Notice-OSlG42lD.js.map} +1 -1
  119. package/dist/{PageLayout-DFRzcnkf.cjs → PageLayout-C0Fo3ZQC.cjs} +3 -3
  120. package/dist/{PageLayout-DFRzcnkf.cjs.map → PageLayout-C0Fo3ZQC.cjs.map} +1 -1
  121. package/dist/{PageLayout-CyM_Op3c.js → PageLayout-DLll7ZwB.js} +3 -3
  122. package/dist/{PageLayout-CyM_Op3c.js.map → PageLayout-DLll7ZwB.js.map} +1 -1
  123. package/dist/{SankeyChart-E68mYEs2.js → SankeyChart-lkM5cpOC.js} +3 -3
  124. package/dist/{SankeyChart-E68mYEs2.js.map → SankeyChart-lkM5cpOC.js.map} +1 -1
  125. package/dist/{SankeyChart-DHeJ45KN.cjs → SankeyChart-m50vrsBS.cjs} +3 -3
  126. package/dist/{SankeyChart-DHeJ45KN.cjs.map → SankeyChart-m50vrsBS.cjs.map} +1 -1
  127. package/dist/{Section-CyGQZR7U.cjs → Section-B8MIbDDs.cjs} +3 -3
  128. package/dist/{Section-CyGQZR7U.cjs.map → Section-B8MIbDDs.cjs.map} +1 -1
  129. package/dist/{Section-CWFQ8jNS.js → Section-C9Fgv-IF.js} +3 -3
  130. package/dist/{Section-CWFQ8jNS.js.map → Section-C9Fgv-IF.js.map} +1 -1
  131. package/dist/{ShareBar-3Z5np-NY.cjs → ShareBar-DERy_egz.cjs} +2 -2
  132. package/dist/{ShareBar-3Z5np-NY.cjs.map → ShareBar-DERy_egz.cjs.map} +1 -1
  133. package/dist/{ShareBar-D6dWWl4C.js → ShareBar-KrzzdcyI.js} +2 -2
  134. package/dist/{ShareBar-D6dWWl4C.js.map → ShareBar-KrzzdcyI.js.map} +1 -1
  135. package/dist/{Tree-BplQcY8u.cjs → Tree-Caz4FTCU.cjs} +3 -3
  136. package/dist/{Tree-BplQcY8u.cjs.map → Tree-Caz4FTCU.cjs.map} +1 -1
  137. package/dist/{Tree-CoLkeBCL.js → Tree-od43gLMO.js} +3 -3
  138. package/dist/{Tree-CoLkeBCL.js.map → Tree-od43gLMO.js.map} +1 -1
  139. package/dist/{Txt-BM6TVV_c.js → Txt-5efBsb2p.js} +2 -2
  140. package/dist/{Txt-BM6TVV_c.js.map → Txt-5efBsb2p.js.map} +1 -1
  141. package/dist/{Txt-BnoSqxKE.cjs → Txt-_00wWxTd.cjs} +2 -2
  142. package/dist/{Txt-BnoSqxKE.cjs.map → Txt-_00wWxTd.cjs.map} +1 -1
  143. package/dist/{Workflow-DSWQ-ROz.cjs → Workflow-XR5L-3cJ.cjs} +15 -14
  144. package/dist/Workflow-XR5L-3cJ.cjs.map +1 -0
  145. package/dist/{Workflow-C3SlEdP-.js → Workflow-mIbUYdv0.js} +15 -14
  146. package/dist/Workflow-mIbUYdv0.js.map +1 -0
  147. package/dist/{activity-CcQZeDYi.cjs → activity-BprmG6yH.cjs} +10 -10
  148. package/dist/activity-BprmG6yH.cjs.map +1 -0
  149. package/dist/{activity-C8Ql81WM.js → activity-ClFChYfl.js} +10 -10
  150. package/dist/activity-ClFChYfl.js.map +1 -0
  151. package/dist/annotations.css +8 -0
  152. package/dist/{ask-user-DPznrqGO.js → ask-user-D4ezQ6pt.js} +5 -5
  153. package/dist/{ask-user-DPznrqGO.js.map → ask-user-D4ezQ6pt.js.map} +1 -1
  154. package/dist/{ask-user-C1p2PEYe.cjs → ask-user-DcnUNMM5.cjs} +5 -5
  155. package/dist/{ask-user-C1p2PEYe.cjs.map → ask-user-DcnUNMM5.cjs.map} +1 -1
  156. package/dist/{buttons-group-DkFlnMiL.js → buttons-group-DA_wORqQ.js} +2 -2
  157. package/dist/{buttons-group-DkFlnMiL.js.map → buttons-group-DA_wORqQ.js.map} +1 -1
  158. package/dist/{buttons-group-Dc6R7YSs.cjs → buttons-group-DM6_Kohs.cjs} +2 -2
  159. package/dist/{buttons-group-Dc6R7YSs.cjs.map → buttons-group-DM6_Kohs.cjs.map} +1 -1
  160. package/dist/chat-shell-context-0m1GVhS7.js +16 -0
  161. package/dist/chat-shell-context-0m1GVhS7.js.map +1 -0
  162. package/dist/chat-shell-context-ONCslAGn.cjs +39 -0
  163. package/dist/chat-shell-context-ONCslAGn.cjs.map +1 -0
  164. package/dist/{clear-filters-button-CNrRuHOY.js → clear-filters-button-C79dzuzA.js} +2 -2
  165. package/dist/{clear-filters-button-CNrRuHOY.js.map → clear-filters-button-C79dzuzA.js.map} +1 -1
  166. package/dist/{clear-filters-button-Buc973vw.cjs → clear-filters-button-CCO-y7kt.cjs} +2 -2
  167. package/dist/{clear-filters-button-Buc973vw.cjs.map → clear-filters-button-CCO-y7kt.cjs.map} +1 -1
  168. package/dist/{combobox-DIT_6xiG.cjs → combobox-i723LxeC.cjs} +33 -29
  169. package/dist/combobox-i723LxeC.cjs.map +1 -0
  170. package/dist/{combobox-D21no8t5.js → combobox-lbSxWRMl.js} +33 -29
  171. package/dist/combobox-lbSxWRMl.js.map +1 -0
  172. package/dist/{combobox-parts-C4phOq4t.cjs → combobox-parts-BeNqgCbj.cjs} +27 -12
  173. package/dist/combobox-parts-BeNqgCbj.cjs.map +1 -0
  174. package/dist/{combobox-parts-D90ir0Py.js → combobox-parts-C9o4UfH_.js} +22 -13
  175. package/dist/combobox-parts-C9o4UfH_.js.map +1 -0
  176. package/dist/components/AgentIndicator.cjs.js +1 -1
  177. package/dist/components/AgentIndicator.es.js +1 -1
  178. package/dist/components/AlertDialog.cjs.js +2 -2
  179. package/dist/components/AlertDialog.es.js +2 -2
  180. package/dist/components/AttachmentCard.cjs.js +1 -1
  181. package/dist/components/AttachmentCard.es.js +1 -1
  182. package/dist/components/Avatar.cjs.js +1 -1
  183. package/dist/components/Avatar.es.js +1 -1
  184. package/dist/components/Badge.cjs.js +1 -1
  185. package/dist/components/Badge.es.js +1 -1
  186. package/dist/components/Breadcrumb.cjs.js +6 -5
  187. package/dist/components/Breadcrumb.cjs.js.map +1 -1
  188. package/dist/components/Breadcrumb.es.js +6 -5
  189. package/dist/components/Breadcrumb.es.js.map +1 -1
  190. package/dist/components/Button.cjs.js +2 -2
  191. package/dist/components/Button.es.js +2 -2
  192. package/dist/components/ButtonsGroup.cjs.js +1 -1
  193. package/dist/components/ButtonsGroup.es.js +1 -1
  194. package/dist/components/Card.cjs.js +1 -1
  195. package/dist/components/Card.es.js +1 -1
  196. package/dist/components/ChartSkeleton.cjs.js +2 -2
  197. package/dist/components/ChartSkeleton.es.js +2 -2
  198. package/dist/components/ChartTooltip.cjs.js +1 -1
  199. package/dist/components/ChartTooltip.es.js +1 -1
  200. package/dist/components/ChatShell.cjs.js +33 -9
  201. package/dist/components/ChatShell.cjs.js.map +1 -1
  202. package/dist/components/ChatShell.es.js +33 -9
  203. package/dist/components/ChatShell.es.js.map +1 -1
  204. package/dist/components/Checkbox.cjs.js +1 -1
  205. package/dist/components/Checkbox.es.js +1 -1
  206. package/dist/components/ClampedText.cjs.js +3 -3
  207. package/dist/components/ClampedText.es.js +3 -3
  208. package/dist/components/ClearFiltersButton.cjs.js +1 -1
  209. package/dist/components/ClearFiltersButton.es.js +1 -1
  210. package/dist/components/CodeBlock.cjs.js +5 -5
  211. package/dist/components/CodeBlock.es.js +5 -5
  212. package/dist/components/CodeDiff.cjs.js +3 -3
  213. package/dist/components/CodeDiff.es.js +2 -2
  214. package/dist/components/CodeEditor.cjs.js +1 -1
  215. package/dist/components/CodeEditor.es.js +1 -1
  216. package/dist/components/Collapsible.cjs.js +1 -1
  217. package/dist/components/Collapsible.es.js +1 -1
  218. package/dist/components/CollapsibleBox.cjs.js +1 -1
  219. package/dist/components/CollapsibleBox.es.js +1 -1
  220. package/dist/components/Combobox.cjs.js +2 -2
  221. package/dist/components/Combobox.es.js +2 -2
  222. package/dist/components/Command.cjs.js +5 -5
  223. package/dist/components/Command.es.js +5 -5
  224. package/dist/components/CommandPalette.cjs.js +7 -7
  225. package/dist/components/CommandPalette.cjs.js.map +1 -1
  226. package/dist/components/CommandPalette.es.js +7 -7
  227. package/dist/components/CommandPalette.es.js.map +1 -1
  228. package/dist/components/Comment.cjs.js +1 -1
  229. package/dist/components/Comment.es.js +1 -1
  230. package/dist/components/CompactNumber.cjs.js +2 -2
  231. package/dist/components/CompactNumber.es.js +2 -2
  232. package/dist/components/Composer.cjs.js +1 -1
  233. package/dist/components/Composer.es.js +1 -1
  234. package/dist/components/ContextMenu.cjs.js +1 -1
  235. package/dist/components/ContextMenu.es.js +1 -1
  236. package/dist/components/CopyButton.cjs.js +1 -1
  237. package/dist/components/CopyButton.es.js +1 -1
  238. package/dist/components/DataCodeSection.cjs.js +1 -1
  239. package/dist/components/DataCodeSection.es.js +1 -1
  240. package/dist/components/DataDetailsPanel.cjs.js +1 -1
  241. package/dist/components/DataDetailsPanel.es.js +1 -1
  242. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  243. package/dist/components/DataKeysAndValues.es.js +1 -1
  244. package/dist/components/DataList.cjs.js +3 -3
  245. package/dist/components/DataList.es.js +3 -3
  246. package/dist/components/DataPanel.cjs.js +1 -1
  247. package/dist/components/DataPanel.es.js +1 -1
  248. package/dist/components/DateRangeTimeline.cjs.js +9 -9
  249. package/dist/components/DateRangeTimeline.cjs.js.map +1 -1
  250. package/dist/components/DateRangeTimeline.es.js +9 -9
  251. package/dist/components/DateRangeTimeline.es.js.map +1 -1
  252. package/dist/components/DateTimePicker.cjs.js +75 -142
  253. package/dist/components/DateTimePicker.cjs.js.map +1 -1
  254. package/dist/components/DateTimePicker.es.js +79 -146
  255. package/dist/components/DateTimePicker.es.js.map +1 -1
  256. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  257. package/dist/components/DateTimeRangePicker.es.js +1 -1
  258. package/dist/components/Dialog.cjs.js +1 -1
  259. package/dist/components/Dialog.es.js +1 -1
  260. package/dist/components/DiffStat.cjs.js +1 -1
  261. package/dist/components/DiffStat.es.js +1 -1
  262. package/dist/components/DisabledFeatureButton.cjs.js +3 -3
  263. package/dist/components/DisabledFeatureButton.es.js +3 -3
  264. package/dist/components/DisclosureChevron.cjs.js +1 -1
  265. package/dist/components/DisclosureChevron.es.js +1 -1
  266. package/dist/components/Drawer.cjs.js +2 -2
  267. package/dist/components/Drawer.es.js +2 -2
  268. package/dist/components/DropdownMenu.cjs.js +1 -1
  269. package/dist/components/DropdownMenu.es.js +1 -1
  270. package/dist/components/EmptyState.cjs.js +1 -1
  271. package/dist/components/EmptyState.es.js +1 -1
  272. package/dist/components/Entity.cjs.js +3 -3
  273. package/dist/components/Entity.es.js +3 -3
  274. package/dist/components/EntityHeader.cjs.js +2 -2
  275. package/dist/components/EntityHeader.es.js +2 -2
  276. package/dist/components/Entry.cjs.js +1 -1
  277. package/dist/components/Entry.es.js +1 -1
  278. package/dist/components/EnvironmentVariablesEditor.cjs.js +6 -6
  279. package/dist/components/EnvironmentVariablesEditor.es.js +6 -6
  280. package/dist/components/ErrorBoundary.cjs.js +1 -1
  281. package/dist/components/ErrorBoundary.es.js +1 -1
  282. package/dist/components/Field.cjs.js +2 -2
  283. package/dist/components/Field.es.js +2 -2
  284. package/dist/components/FileDropBackdrop.cjs.js +1 -1
  285. package/dist/components/FileDropBackdrop.es.js +1 -1
  286. package/dist/components/FilterBar.cjs.js +3 -3
  287. package/dist/components/FilterBar.es.js +3 -3
  288. package/dist/components/FormFieldBlocks.cjs.js +5 -5
  289. package/dist/components/FormFieldBlocks.es.js +6 -6
  290. package/dist/components/Header.cjs.js +1 -1
  291. package/dist/components/Header.es.js +1 -1
  292. package/dist/components/HoverCard.cjs.js +1 -1
  293. package/dist/components/HoverCard.es.js +1 -1
  294. package/dist/components/Input.cjs.js +1 -1
  295. package/dist/components/Input.es.js +1 -1
  296. package/dist/components/InputGroup.cjs.js +1 -1
  297. package/dist/components/InputGroup.es.js +1 -1
  298. package/dist/components/InputNumber.cjs.js +3 -3
  299. package/dist/components/InputNumber.es.js +3 -3
  300. package/dist/components/JSONSchemaForm.cjs.js +4 -4
  301. package/dist/components/JSONSchemaForm.es.js +4 -4
  302. package/dist/components/Kbd.cjs.js +1 -1
  303. package/dist/components/Kbd.es.js +1 -1
  304. package/dist/components/KeyValueList.cjs.js +2 -2
  305. package/dist/components/KeyValueList.es.js +2 -2
  306. package/dist/components/ListSearch.cjs.js +1 -1
  307. package/dist/components/ListSearch.es.js +1 -1
  308. package/dist/components/LogsDataList.cjs.js +2 -2
  309. package/dist/components/LogsDataList.es.js +2 -2
  310. package/dist/components/MainHeader.cjs.js +1 -1
  311. package/dist/components/MainHeader.es.js +1 -1
  312. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  313. package/dist/components/MarkdownRenderer.es.js +1 -1
  314. package/dist/components/Message.cjs.js +1 -1
  315. package/dist/components/Message.es.js +1 -1
  316. package/dist/components/MessageScroller.cjs.js +1 -1
  317. package/dist/components/MessageScroller.es.js +1 -1
  318. package/dist/components/Metadata.cjs.js +3 -0
  319. package/dist/components/Metadata.d.ts +1 -0
  320. package/dist/components/Metadata.es.js +1 -0
  321. package/dist/components/Meter.cjs.js +3 -3
  322. package/dist/components/Meter.es.js +3 -3
  323. package/dist/components/MetricsCard.cjs.js +1 -1
  324. package/dist/components/MetricsCard.es.js +1 -1
  325. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  326. package/dist/components/MetricsKpiCard.es.js +1 -1
  327. package/dist/components/MetricsLineChart.cjs.js +1 -1
  328. package/dist/components/MetricsLineChart.es.js +1 -1
  329. package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
  330. package/dist/components/MetricsStackedBarChart.es.js +1 -1
  331. package/dist/components/MetricsTable.cjs.js +1 -1
  332. package/dist/components/MetricsTable.es.js +1 -1
  333. package/dist/components/Notice.cjs.js +1 -1
  334. package/dist/components/Notice.es.js +1 -1
  335. package/dist/components/PageHeader.cjs.js +1 -1
  336. package/dist/components/PageHeader.es.js +1 -1
  337. package/dist/components/PageLayout.cjs.js +1 -1
  338. package/dist/components/PageLayout.es.js +1 -1
  339. package/dist/components/Popover.cjs.js +1 -1
  340. package/dist/components/Popover.es.js +1 -1
  341. package/dist/components/PrevNextNav.cjs.js +1 -1
  342. package/dist/components/PrevNextNav.es.js +1 -1
  343. package/dist/components/ProductAvatar.cjs.js +2 -2
  344. package/dist/components/ProductAvatar.es.js +2 -2
  345. package/dist/components/ProductBadge.cjs.js +2 -2
  346. package/dist/components/ProductBadge.es.js +2 -2
  347. package/dist/components/PropertyFilter.cjs.js +9 -9
  348. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  349. package/dist/components/PropertyFilter.es.js +9 -9
  350. package/dist/components/PropertyFilter.es.js.map +1 -1
  351. package/dist/components/RadioGroup.cjs.js +1 -1
  352. package/dist/components/RadioGroup.es.js +1 -1
  353. package/dist/components/RelativeTimestamp.cjs.js +6 -30
  354. package/dist/components/RelativeTimestamp.cjs.js.map +1 -1
  355. package/dist/components/RelativeTimestamp.es.js +7 -31
  356. package/dist/components/RelativeTimestamp.es.js.map +1 -1
  357. package/dist/components/RuleBuilder.cjs.js +22 -22
  358. package/dist/components/RuleBuilder.cjs.js.map +1 -1
  359. package/dist/components/RuleBuilder.es.js +5 -5
  360. package/dist/components/SankeyChart.cjs.js +1 -1
  361. package/dist/components/SankeyChart.es.js +1 -1
  362. package/dist/components/SavedViews.cjs.js +9 -9
  363. package/dist/components/SavedViews.es.js +9 -9
  364. package/dist/components/ScatterPlotChart.cjs.js +2 -2
  365. package/dist/components/ScatterPlotChart.es.js +2 -2
  366. package/dist/components/ScrollArea.cjs.js +1 -1
  367. package/dist/components/ScrollArea.es.js +1 -1
  368. package/dist/components/SearchInput.cjs.js +2 -2
  369. package/dist/components/SearchInput.es.js +2 -2
  370. package/dist/components/Section.cjs.js +1 -1
  371. package/dist/components/Section.es.js +1 -1
  372. package/dist/components/SectionCard.cjs.js +1 -1
  373. package/dist/components/SectionCard.es.js +1 -1
  374. package/dist/components/SegmentedControl.cjs.js +3 -3
  375. package/dist/components/SegmentedControl.es.js +3 -3
  376. package/dist/components/Select.cjs.js +1 -1
  377. package/dist/components/Select.es.js +1 -1
  378. package/dist/components/ShareBar.cjs.js +1 -1
  379. package/dist/components/ShareBar.es.js +1 -1
  380. package/dist/components/SideDialog.cjs.js +8 -8
  381. package/dist/components/SideDialog.es.js +8 -8
  382. package/dist/components/Sidebar.cjs.js +14 -14
  383. package/dist/components/Sidebar.cjs.js.map +1 -1
  384. package/dist/components/Sidebar.es.js +15 -15
  385. package/dist/components/Sidebar.es.js.map +1 -1
  386. package/dist/components/Skeleton.cjs.js +1 -1
  387. package/dist/components/Skeleton.es.js +1 -1
  388. package/dist/components/Spinner.cjs.js +1 -1
  389. package/dist/components/Spinner.es.js +1 -1
  390. package/dist/components/StatusIndicators.cjs.js +3 -3
  391. package/dist/components/StatusIndicators.es.js +3 -3
  392. package/dist/components/Steps.cjs.js +73 -3
  393. package/dist/components/Steps.cjs.js.map +1 -1
  394. package/dist/components/Steps.es.js +73 -4
  395. package/dist/components/Steps.es.js.map +1 -1
  396. package/dist/components/Switch.cjs.js +2 -2
  397. package/dist/components/Switch.es.js +2 -2
  398. package/dist/components/Table.cjs.js +4 -4
  399. package/dist/components/Table.es.js +4 -4
  400. package/dist/components/Tabs.cjs.js +2 -2
  401. package/dist/components/Tabs.es.js +2 -2
  402. package/dist/components/Text.cjs.js +1 -1
  403. package/dist/components/Text.es.js +1 -1
  404. package/dist/components/Textarea.cjs.js +2 -2
  405. package/dist/components/Textarea.es.js +2 -2
  406. package/dist/components/ThinkingLevel.cjs.js +5 -5
  407. package/dist/components/ThinkingLevel.cjs.js.map +1 -1
  408. package/dist/components/ThinkingLevel.es.js +5 -5
  409. package/dist/components/ThinkingLevel.es.js.map +1 -1
  410. package/dist/components/ThreadList.cjs.js +2 -2
  411. package/dist/components/ThreadList.es.js +2 -2
  412. package/dist/components/ThreadRail.cjs.js +8 -8
  413. package/dist/components/ThreadRail.cjs.js.map +1 -1
  414. package/dist/components/ThreadRail.es.js +8 -8
  415. package/dist/components/ThreadRail.es.js.map +1 -1
  416. package/dist/components/Toaster.cjs.js +4 -4
  417. package/dist/components/Toaster.es.js +3 -3
  418. package/dist/components/TokenBudget.cjs.js +3 -3
  419. package/dist/components/TokenBudget.es.js +2 -2
  420. package/dist/components/Tooltip.cjs.js +2 -2
  421. package/dist/components/Tooltip.es.js +2 -2
  422. package/dist/components/Tree.cjs.js +1 -1
  423. package/dist/components/Tree.es.js +1 -1
  424. package/dist/components/Truncate.cjs.js +3 -3
  425. package/dist/components/Truncate.es.js +3 -3
  426. package/dist/components/Txt.cjs.js +1 -1
  427. package/dist/components/Txt.es.js +1 -1
  428. package/dist/components/Workflow.cjs.js +1 -1
  429. package/dist/components/Workflow.es.js +1 -1
  430. package/dist/components/ai/activity.cjs.js +1 -1
  431. package/dist/components/ai/activity.es.js +1 -1
  432. package/dist/components/ai/annotations.cjs.js +836 -0
  433. package/dist/components/ai/annotations.cjs.js.map +1 -0
  434. package/dist/components/ai/annotations.d.ts +1 -0
  435. package/dist/components/ai/annotations.es.js +831 -0
  436. package/dist/components/ai/annotations.es.js.map +1 -0
  437. package/dist/components/ai/ask-user.cjs.js +1 -1
  438. package/dist/components/ai/ask-user.es.js +1 -1
  439. package/dist/components/ai/plan.cjs.js +6 -6
  440. package/dist/components/ai/plan.es.js +6 -6
  441. package/dist/components/ai/task-list.cjs.js +4 -4
  442. package/dist/components/ai/task-list.cjs.js.map +1 -1
  443. package/dist/components/ai/task-list.es.js +4 -4
  444. package/dist/components/ai/task-list.es.js.map +1 -1
  445. package/dist/components/ai/tool-approval.cjs.js +1 -1
  446. package/dist/components/ai/tool-approval.es.js +1 -1
  447. package/dist/components/ai/tool-call.cjs.js +7 -2
  448. package/dist/components/ai/tool-call.es.js +3 -3
  449. package/dist/components/ai/transcript-divider.cjs.js +1 -1
  450. package/dist/components/ai/transcript-divider.es.js +1 -1
  451. package/dist/{context-menu-Dv0NU0oM.js → context-menu-6_Kcs8kj.js} +3 -3
  452. package/dist/{context-menu-Dv0NU0oM.js.map → context-menu-6_Kcs8kj.js.map} +1 -1
  453. package/dist/{context-menu-DTFPCyae.cjs → context-menu-DwB7u7fB.cjs} +3 -3
  454. package/dist/{context-menu-DTFPCyae.cjs.map → context-menu-DwB7u7fB.cjs.map} +1 -1
  455. package/dist/{copy-button-BXrbevLn.js → copy-button-B-_Z6N6y.js} +2 -2
  456. package/dist/{copy-button-BXrbevLn.js.map → copy-button-B-_Z6N6y.js.map} +1 -1
  457. package/dist/{copy-button-DJAQ6_3o.cjs → copy-button-DuEUYvS2.cjs} +2 -2
  458. package/dist/{copy-button-DJAQ6_3o.cjs.map → copy-button-DuEUYvS2.cjs.map} +1 -1
  459. package/dist/{data-list-C4Vmq5HA.cjs → data-list-072hHK9L.cjs} +7 -7
  460. package/dist/{data-list-C4Vmq5HA.cjs.map → data-list-072hHK9L.cjs.map} +1 -1
  461. package/dist/{data-list-DHCOoLmj.js → data-list-GzbzPmYR.js} +7 -7
  462. package/dist/{data-list-DHCOoLmj.js.map → data-list-GzbzPmYR.js.map} +1 -1
  463. package/dist/{date-time-range-picker-CWGjoR3j.cjs → date-time-range-picker-Bq-8IPtS.cjs} +141 -112
  464. package/dist/date-time-range-picker-Bq-8IPtS.cjs.map +1 -0
  465. package/dist/{date-time-range-picker-CdSiXwB4.js → date-time-range-picker-DdNgKD87.js} +144 -115
  466. package/dist/date-time-range-picker-DdNgKD87.js.map +1 -0
  467. package/dist/domains/auth/components/permission-denied.cjs.js +1 -1
  468. package/dist/domains/auth/components/permission-denied.es.js +1 -1
  469. package/dist/domains/auth/components/session-expired.cjs.js +3 -3
  470. package/dist/domains/auth/components/session-expired.es.js +3 -3
  471. package/dist/domains/chat/activity/activity-stretch-line.cjs.js +2 -2
  472. package/dist/domains/chat/activity/activity-stretch-line.es.js +2 -2
  473. package/dist/domains/chat/activity/components/activity-fold.cjs.js +54 -58
  474. package/dist/domains/chat/activity/components/activity-fold.cjs.js.map +1 -1
  475. package/dist/domains/chat/activity/components/activity-fold.es.js +54 -58
  476. package/dist/domains/chat/activity/components/activity-fold.es.js.map +1 -1
  477. package/dist/domains/chat/activity/components/calls-panel.cjs.js +2 -2
  478. package/dist/domains/chat/activity/components/calls-panel.es.js +2 -2
  479. package/dist/domains/chat/activity/components/stretch-content.cjs.js +2 -2
  480. package/dist/domains/chat/activity/components/stretch-content.es.js +2 -2
  481. package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
  482. package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
  483. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  484. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  485. package/dist/domains/chat/activity/model/activity-words.cjs.js +7 -11
  486. package/dist/domains/chat/activity/model/activity-words.cjs.js.map +1 -1
  487. package/dist/domains/chat/activity/model/activity-words.es.js +8 -11
  488. package/dist/domains/chat/activity/model/activity-words.es.js.map +1 -1
  489. package/dist/domains/chat/activity.cjs.js +2 -5
  490. package/dist/domains/chat/activity.es.js +4 -5
  491. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +3 -3
  492. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +3 -3
  493. package/dist/domains/chat/attachments/composer-attachment-entry.cjs.js +2 -2
  494. package/dist/domains/chat/attachments/composer-attachment-entry.es.js +2 -2
  495. package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +2 -2
  496. package/dist/domains/chat/attachments/composer-attachment-list.es.js +2 -2
  497. package/dist/domains/chat/attachments/composer-attachment.cjs.js +4 -4
  498. package/dist/domains/chat/attachments/composer-attachment.es.js +4 -4
  499. package/dist/domains/chat/attachments/message-attachment.cjs.js +2 -2
  500. package/dist/domains/chat/attachments/message-attachment.es.js +2 -2
  501. package/dist/domains/chat/attachments/message-image-attachment.cjs.js +2 -2
  502. package/dist/domains/chat/attachments/message-image-attachment.cjs.js.map +1 -1
  503. package/dist/domains/chat/attachments/message-image-attachment.es.js +2 -2
  504. package/dist/domains/chat/attachments/message-image-attachment.es.js.map +1 -1
  505. package/dist/domains/chat/components/badge-wrapper.cjs.js +2 -2
  506. package/dist/domains/chat/components/badge-wrapper.es.js +2 -2
  507. package/dist/domains/chat/components/loading-badge.cjs.js +2 -2
  508. package/dist/domains/chat/components/loading-badge.es.js +2 -2
  509. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +4 -4
  510. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +4 -4
  511. package/dist/domains/chat/components/section-label.cjs.js +1 -1
  512. package/dist/domains/chat/components/section-label.es.js +1 -1
  513. package/dist/domains/chat/context/chat-context.cjs.js +2 -0
  514. package/dist/domains/chat/context/chat-context.cjs.js.map +1 -1
  515. package/dist/domains/chat/context/chat-context.es.js +2 -1
  516. package/dist/domains/chat/context/chat-context.es.js.map +1 -1
  517. package/dist/domains/chat/knowledge/knowledge-links.cjs.js +1 -1
  518. package/dist/domains/chat/knowledge/knowledge-links.es.js +1 -1
  519. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +3 -3
  520. package/dist/domains/chat/knowledge/pinned-knowledge.es.js +3 -3
  521. package/dist/domains/chat/knowledge.cjs.js +1 -1
  522. package/dist/domains/chat/knowledge.es.js +1 -1
  523. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
  524. package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
  525. package/dist/domains/chat/messages/dataset-save-action.cjs.js +10 -10
  526. package/dist/domains/chat/messages/dataset-save-action.es.js +11 -11
  527. package/dist/domains/chat/messages/message-row.cjs.js +20 -20
  528. package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
  529. package/dist/domains/chat/messages/message-row.es.js +20 -20
  530. package/dist/domains/chat/messages/message-row.es.js.map +1 -1
  531. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +5 -5
  532. package/dist/domains/chat/messages/notification-signal-notice.cjs.js.map +1 -1
  533. package/dist/domains/chat/messages/notification-signal-notice.es.js +5 -5
  534. package/dist/domains/chat/messages/notification-signal-notice.es.js.map +1 -1
  535. package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
  536. package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
  537. package/dist/domains/chat/messages/renderers/data-part-renderer.cjs.js +1 -1
  538. package/dist/domains/chat/messages/renderers/data-part-renderer.es.js +1 -1
  539. package/dist/domains/chat/messages/renderers/message-text.cjs.js +5 -5
  540. package/dist/domains/chat/messages/renderers/message-text.es.js +5 -5
  541. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  542. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  543. package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
  544. package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
  545. package/dist/domains/chat/messages/renderers/user-file-part-renderer.cjs.js +1 -1
  546. package/dist/domains/chat/messages/renderers/user-file-part-renderer.es.js +1 -1
  547. package/dist/domains/chat/messages/signal-badge.cjs.js +5 -5
  548. package/dist/domains/chat/messages/signal-badge.es.js +5 -5
  549. package/dist/domains/chat/messages/skill-message.cjs.js +4 -4
  550. package/dist/domains/chat/messages/skill-message.es.js +4 -4
  551. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  552. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  553. package/dist/domains/chat/messages/tripwire-notice.cjs.js +4 -4
  554. package/dist/domains/chat/messages/tripwire-notice.es.js +4 -4
  555. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  556. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  557. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  558. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  559. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  560. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  561. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +5 -5
  562. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +5 -5
  563. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +7 -6
  564. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
  565. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +7 -6
  566. package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
  567. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +5 -5
  568. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +5 -5
  569. package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js +2 -2
  570. package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js.map +1 -1
  571. package/dist/domains/chat/tools/badges/knowledge-body-range.es.js +2 -2
  572. package/dist/domains/chat/tools/badges/knowledge-body-range.es.js.map +1 -1
  573. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +34 -28
  574. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js.map +1 -1
  575. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +34 -28
  576. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js.map +1 -1
  577. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +28 -24
  578. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -1
  579. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +28 -24
  580. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -1
  581. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +4 -4
  582. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +4 -4
  583. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +8 -7
  584. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js.map +1 -1
  585. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +8 -7
  586. package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
  587. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +3 -3
  588. package/dist/domains/chat/tools/badges/observation-renderer.es.js +3 -3
  589. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +25 -34
  590. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js.map +1 -1
  591. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +27 -36
  592. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js.map +1 -1
  593. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  594. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  595. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +19 -26
  596. package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
  597. package/dist/domains/chat/tools/badges/tool-badge.es.js +19 -26
  598. package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
  599. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +12 -10
  600. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  601. package/dist/domains/chat/tools/badges/workflow-badge.es.js +12 -10
  602. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  603. package/dist/domains/chat/tools/badges/workspace-data-parts.cjs.js +13 -0
  604. package/dist/domains/chat/tools/badges/workspace-data-parts.cjs.js.map +1 -1
  605. package/dist/domains/chat/tools/badges/workspace-data-parts.es.js +13 -1
  606. package/dist/domains/chat/tools/badges/workspace-data-parts.es.js.map +1 -1
  607. package/dist/domains/chat/tools/badges/workspace-link.cjs.js +1 -1
  608. package/dist/domains/chat/tools/badges/workspace-link.es.js +1 -1
  609. package/dist/domains/chat/tools/connect-prompt-tool.cjs.js +8 -8
  610. package/dist/domains/chat/tools/connect-prompt-tool.es.js +8 -8
  611. package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js +5 -5
  612. package/dist/domains/chat/tools/mcp-input-request-tool.es.js +5 -5
  613. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +4 -4
  614. package/dist/domains/chat/tools/submit-plan-tool.es.js +4 -4
  615. package/dist/domains/chat/tools/tool-card-kind.cjs.js +10 -5
  616. package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
  617. package/dist/domains/chat/tools/tool-card-kind.es.js +10 -5
  618. package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
  619. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  620. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  621. package/dist/domains/chat/tools/tool-groups.cjs.js +2 -2
  622. package/dist/domains/chat/tools/tool-groups.es.js +2 -2
  623. package/dist/domains/chat.cjs.js +6 -5
  624. package/dist/domains/chat.es.js +6 -6
  625. package/dist/domains/connect.cjs.js +1 -1
  626. package/dist/domains/connect.es.js +1 -1
  627. package/dist/domains/dashboards/components/dashboard-grid.cjs.js +11 -8
  628. package/dist/domains/dashboards/components/dashboard-grid.cjs.js.map +1 -1
  629. package/dist/domains/dashboards/components/dashboard-grid.es.js +11 -8
  630. package/dist/domains/dashboards/components/dashboard-grid.es.js.map +1 -1
  631. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +18 -7
  632. package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -1
  633. package/dist/domains/dashboards/components/dashboard-renderer.es.js +18 -7
  634. package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -1
  635. package/dist/domains/dashboards/components/widget-chrome.cjs.js +1 -1
  636. package/dist/domains/dashboards/components/widget-chrome.es.js +1 -1
  637. package/dist/domains/dashboards/components/widget-controls.cjs.js +16 -1
  638. package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -1
  639. package/dist/domains/dashboards/components/widget-controls.es.js +16 -2
  640. package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -1
  641. package/dist/domains/dashboards/components/widget-error.cjs.js +6 -3
  642. package/dist/domains/dashboards/components/widget-error.cjs.js.map +1 -1
  643. package/dist/domains/dashboards/components/widget-error.es.js +6 -3
  644. package/dist/domains/dashboards/components/widget-error.es.js.map +1 -1
  645. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +18 -4
  646. package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -1
  647. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +19 -5
  648. package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -1
  649. package/dist/domains/dashboards/kinds/kpis.cjs.js +1 -1
  650. package/dist/domains/dashboards/kinds/kpis.es.js +1 -1
  651. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +18 -9
  652. package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -1
  653. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +18 -9
  654. package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -1
  655. package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +1 -1
  656. package/dist/domains/dashboards/kinds/table/table-cells.es.js +1 -1
  657. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +12 -5
  658. package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -1
  659. package/dist/domains/dashboards/kinds/table/table-tabs.es.js +12 -5
  660. package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -1
  661. package/dist/domains/dashboards/kinds/table/table-view.cjs.js +7 -7
  662. package/dist/domains/dashboards/kinds/table/table-view.es.js +7 -7
  663. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +5 -2
  664. package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -1
  665. package/dist/domains/dashboards/kinds/table/table-widget.es.js +5 -2
  666. package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -1
  667. package/dist/domains/dashboards/kinds/table.cjs.js +1 -1
  668. package/dist/domains/dashboards/kinds/table.es.js +1 -1
  669. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +21 -14
  670. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -1
  671. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +22 -15
  672. package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -1
  673. package/dist/domains/dashboards/kinds/timeseries.cjs.js +1 -1
  674. package/dist/domains/dashboards/kinds/timeseries.es.js +1 -1
  675. package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -1
  676. package/dist/domains/dashboards/lib/chrome.es.js.map +1 -1
  677. package/dist/domains/dashboards/lib/format.cjs.js +1 -1
  678. package/dist/domains/dashboards/lib/format.es.js +1 -1
  679. package/dist/domains/dashboards/lib/pin-actions.cjs.js +16 -0
  680. package/dist/domains/dashboards/lib/pin-actions.cjs.js.map +1 -0
  681. package/dist/domains/dashboards/lib/pin-actions.d.ts +1 -0
  682. package/dist/domains/dashboards/lib/pin-actions.es.js +15 -0
  683. package/dist/domains/dashboards/lib/pin-actions.es.js.map +1 -0
  684. package/dist/domains/dashboards/lib/requests.cjs.js +2 -2
  685. package/dist/domains/dashboards/lib/requests.es.js +2 -2
  686. package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -1
  687. package/dist/domains/dashboards/widget-kind.es.js.map +1 -1
  688. package/dist/domains/dashboards.cjs.js +11 -10
  689. package/dist/domains/dashboards.es.js +11 -11
  690. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +11 -11
  691. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +11 -11
  692. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +3 -3
  693. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +3 -3
  694. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +6 -6
  695. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +6 -6
  696. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +7 -7
  697. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +7 -7
  698. package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js +3 -2
  699. package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js.map +1 -1
  700. package/dist/domains/knowledge/components/KnowledgePageCard.es.js +3 -2
  701. package/dist/domains/knowledge/components/KnowledgePageCard.es.js.map +1 -1
  702. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +11 -16
  703. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -1
  704. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +11 -16
  705. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -1
  706. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +5 -5
  707. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +5 -5
  708. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +11 -10
  709. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -1
  710. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +10 -9
  711. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -1
  712. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +1 -1
  713. package/dist/domains/knowledge/components/KnowledgePageTree.es.js +1 -1
  714. package/dist/domains/llm/models-dev-logo-slugs.cjs.js +230 -0
  715. package/dist/domains/llm/models-dev-logo-slugs.cjs.js.map +1 -0
  716. package/dist/domains/llm/models-dev-logo-slugs.d.ts +1 -0
  717. package/dist/domains/llm/models-dev-logo-slugs.es.js +229 -0
  718. package/dist/domains/llm/models-dev-logo-slugs.es.js.map +1 -0
  719. package/dist/domains/llm/provider-logo-monogram.cjs.js +37 -0
  720. package/dist/domains/llm/provider-logo-monogram.cjs.js.map +1 -0
  721. package/dist/domains/llm/provider-logo-monogram.d.ts +1 -0
  722. package/dist/domains/llm/provider-logo-monogram.es.js +36 -0
  723. package/dist/domains/llm/provider-logo-monogram.es.js.map +1 -0
  724. package/dist/domains/llm/provider-logo.cjs.js +46 -17
  725. package/dist/domains/llm/provider-logo.cjs.js.map +1 -1
  726. package/dist/domains/llm/provider-logo.es.js +46 -17
  727. package/dist/domains/llm/provider-logo.es.js.map +1 -1
  728. package/dist/domains/llm/provider-map-icon.cjs.js +1 -1
  729. package/dist/domains/llm/provider-map-icon.es.js +1 -1
  730. package/dist/domains/llm.cjs.js +1 -1
  731. package/dist/domains/llm.es.js +1 -1
  732. package/dist/domains/logs/components/log-data-panel.cjs.js +11 -7
  733. package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
  734. package/dist/domains/logs/components/log-data-panel.es.js +11 -7
  735. package/dist/domains/logs/components/log-data-panel.es.js.map +1 -1
  736. package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
  737. package/dist/domains/logs/components/logs-error-content.es.js +1 -1
  738. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
  739. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  740. package/dist/domains/logs/components/logs-saved-views.cjs.js +1 -1
  741. package/dist/domains/logs/components/logs-saved-views.es.js +1 -1
  742. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  743. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  744. package/dist/domains/logs/components/no-logs-info.cjs.js +3 -3
  745. package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
  746. package/dist/domains/logs/components/no-logs-info.es.js +3 -3
  747. package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
  748. package/dist/domains/logs/hooks/use-logs-filter-persistence.cjs.js +1 -1
  749. package/dist/domains/logs/hooks/use-logs-filter-persistence.es.js +1 -1
  750. package/dist/domains/logs.cjs.js +2 -2
  751. package/dist/domains/logs.es.js +2 -2
  752. package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js +7 -8
  753. package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js.map +1 -1
  754. package/dist/domains/mcps/components/mcp-app-tool-result.es.js +6 -7
  755. package/dist/domains/mcps/components/mcp-app-tool-result.es.js.map +1 -1
  756. package/dist/domains/mcps/components/mcp-app-viewer.cjs.js +2 -108
  757. package/dist/domains/mcps/components/mcp-app-viewer.es.js +1 -108
  758. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.cjs.js +36 -0
  759. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.cjs.js.map +1 -0
  760. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.d.ts +1 -0
  761. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.es.js +35 -0
  762. package/dist/domains/mcps/hooks/use-mcp-app-tool-call.es.js.map +1 -0
  763. package/dist/domains/memory/components/flame-graph.cjs.js +4 -4
  764. package/dist/domains/memory/components/flame-graph.es.js +4 -4
  765. package/dist/domains/memory/components/memory-studio-panel.cjs.js +6 -6
  766. package/dist/domains/memory/components/memory-studio-panel.es.js +6 -6
  767. package/dist/domains/memory/components/observation-detail-view.cjs.js +6 -6
  768. package/dist/domains/memory/components/observation-detail-view.es.js +6 -6
  769. package/dist/domains/memory/components/thread-context-progress.cjs.js +2 -2
  770. package/dist/domains/memory/components/thread-context-progress.es.js +2 -2
  771. package/dist/domains/memory/components.cjs.js +1 -1
  772. package/dist/domains/memory/components.es.js +1 -1
  773. package/dist/domains/metrics/components/agent-runs-card.cjs.js +7 -7
  774. package/dist/domains/metrics/components/agent-runs-card.es.js +7 -7
  775. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.cjs.js +2 -2
  776. package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.es.js +2 -2
  777. package/dist/domains/metrics/components/breakdown/breakdown-figure.cjs.js +1 -1
  778. package/dist/domains/metrics/components/breakdown/breakdown-figure.es.js +1 -1
  779. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.cjs.js +2 -2
  780. package/dist/domains/metrics/components/breakdown/breakdown-models-tab.es.js +2 -2
  781. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js +2 -2
  782. package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js +2 -2
  783. package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js +1 -1
  784. package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js +1 -1
  785. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +2 -2
  786. package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +2 -2
  787. package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +8 -8
  788. package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +8 -8
  789. package/dist/domains/metrics/components/breakdown/breakdown-text.cjs.js +1 -1
  790. package/dist/domains/metrics/components/breakdown/breakdown-text.es.js +1 -1
  791. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.cjs.js +2 -2
  792. package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.es.js +2 -2
  793. package/dist/domains/metrics/components/breakdown-card.cjs.js +4 -4
  794. package/dist/domains/metrics/components/breakdown-card.es.js +4 -4
  795. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  796. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  797. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  798. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  799. package/dist/domains/metrics/components/chart-card-error.cjs.js +2 -2
  800. package/dist/domains/metrics/components/chart-card-error.es.js +2 -2
  801. package/dist/domains/metrics/components/chart-card.cjs.js +21 -5
  802. package/dist/domains/metrics/components/chart-card.cjs.js.map +1 -1
  803. package/dist/domains/metrics/components/chart-card.es.js +21 -5
  804. package/dist/domains/metrics/components/chart-card.es.js.map +1 -1
  805. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  806. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  807. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js +5 -5
  808. package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +5 -5
  809. package/dist/domains/metrics/components/failure-rate-card.cjs.js +7 -7
  810. package/dist/domains/metrics/components/failure-rate-card.es.js +7 -7
  811. package/dist/domains/metrics/components/kpi-card.cjs.js +1 -1
  812. package/dist/domains/metrics/components/kpi-card.cjs.js.map +1 -1
  813. package/dist/domains/metrics/components/kpi-card.es.js +1 -1
  814. package/dist/domains/metrics/components/kpi-card.es.js.map +1 -1
  815. package/dist/domains/metrics/components/latency-card.cjs.js +7 -7
  816. package/dist/domains/metrics/components/latency-card.es.js +7 -7
  817. package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +2 -2
  818. package/dist/domains/metrics/components/metrics-time-range-chip.es.js +2 -2
  819. package/dist/domains/metrics/components/scores-card.cjs.js +4 -4
  820. package/dist/domains/metrics/components/scores-card.es.js +4 -4
  821. package/dist/domains/metrics/components/token-usage-card.cjs.js +8 -8
  822. package/dist/domains/metrics/components/token-usage-card.es.js +8 -8
  823. package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +1 -1
  824. package/dist/domains/metrics/components/trace-aggregate-card.es.js +1 -1
  825. package/dist/domains/metrics/components/trace-volume-card.cjs.js +4 -4
  826. package/dist/domains/metrics/components/trace-volume-card.es.js +4 -4
  827. package/dist/domains/metrics/components/usage-card.cjs.js +5 -5
  828. package/dist/domains/metrics/components/usage-card.es.js +5 -5
  829. package/dist/domains/metrics/components.cjs.js +9 -9
  830. package/dist/domains/metrics/components.es.js +9 -9
  831. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  832. package/dist/domains/metrics/drilldown.es.js +1 -1
  833. package/dist/domains/metrics/hooks/use-metrics-activity.cjs.js +1 -1
  834. package/dist/domains/metrics/hooks/use-metrics-activity.es.js +1 -1
  835. package/dist/domains/metrics/hooks/use-metrics-latency.cjs.js +1 -1
  836. package/dist/domains/metrics/hooks/use-metrics-latency.es.js +1 -1
  837. package/dist/domains/metrics/hooks/use-metrics-scores.cjs.js +1 -1
  838. package/dist/domains/metrics/hooks/use-metrics-scores.es.js +1 -1
  839. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.cjs.js +2 -2
  840. package/dist/domains/metrics/hooks/use-metrics-span-aggregate.es.js +2 -2
  841. package/dist/domains/metrics/hooks/use-metrics-trace-aggregate.cjs.js +1 -1
  842. package/dist/domains/metrics/hooks/use-metrics-trace-aggregate.es.js +1 -1
  843. package/dist/domains/metrics/hooks/use-metrics.cjs.js +1 -1
  844. package/dist/domains/metrics/hooks/use-metrics.es.js +1 -1
  845. package/dist/domains/metrics/hooks.cjs.js +5 -5
  846. package/dist/domains/metrics/hooks.es.js +5 -5
  847. package/dist/domains/metrics/lib/breakdown-table.cjs.js +2 -2
  848. package/dist/domains/metrics/lib/breakdown-table.es.js +2 -2
  849. package/dist/domains/metrics/lib/series-colors.cjs.js +279 -0
  850. package/dist/domains/metrics/lib/series-colors.cjs.js.map +1 -0
  851. package/dist/domains/metrics/lib/series-colors.d.ts +1 -0
  852. package/dist/domains/metrics/lib/series-colors.es.js +272 -0
  853. package/dist/domains/metrics/lib/series-colors.es.js.map +1 -0
  854. package/dist/domains/metrics/lib.cjs.js +9 -3
  855. package/dist/domains/metrics/lib.es.js +5 -4
  856. package/dist/domains/metrics.cjs.js +7 -1
  857. package/dist/domains/metrics.es.js +3 -2
  858. package/dist/domains/observability/components/observability-capability-gate.cjs.js +3 -3
  859. package/dist/domains/observability/components/observability-capability-gate.es.js +3 -3
  860. package/dist/domains/observability/components/observability-histogram.cjs.js +5 -5
  861. package/dist/domains/observability/components/observability-histogram.cjs.js.map +1 -1
  862. package/dist/domains/observability/components/observability-histogram.es.js +5 -5
  863. package/dist/domains/observability/components/observability-histogram.es.js.map +1 -1
  864. package/dist/domains/observability/components/observability-page-layout.cjs.js +2 -2
  865. package/dist/domains/observability/components/observability-page-layout.es.js +2 -2
  866. package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +3 -3
  867. package/dist/domains/observability/hooks/use-observability-list-filters.es.js +3 -3
  868. package/dist/domains/observability/observability-list-url-state.cjs.js +1 -1
  869. package/dist/domains/observability/observability-list-url-state.es.js +1 -1
  870. package/dist/domains/observability/saved-view-state.cjs.js +3 -3
  871. package/dist/domains/observability/saved-view-state.es.js +3 -3
  872. package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +1 -1
  873. package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -1
  874. package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +1 -1
  875. package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +1 -1
  876. package/dist/domains/observability/saved-views.cjs.js +2 -2
  877. package/dist/domains/observability/saved-views.es.js +2 -2
  878. package/dist/domains/observability.cjs.js +6 -6
  879. package/dist/domains/observability.es.js +6 -6
  880. package/dist/domains/review/components/review-status-badge.cjs.js +1 -1
  881. package/dist/domains/review/components/review-status-badge.es.js +1 -1
  882. package/dist/domains/scores/components/score-as-item-dialog.cjs.js +1 -1
  883. package/dist/domains/scores/components/score-as-item-dialog.es.js +1 -1
  884. package/dist/domains/scores/components/score-data-panel.cjs.js +7 -7
  885. package/dist/domains/scores/components/score-data-panel.cjs.js.map +1 -1
  886. package/dist/domains/scores/components/score-data-panel.es.js +7 -7
  887. package/dist/domains/scores/components/score-data-panel.es.js.map +1 -1
  888. package/dist/domains/scores/components/span-scoring.cjs.js +4 -4
  889. package/dist/domains/scores/components/span-scoring.es.js +4 -4
  890. package/dist/domains/scores/components/trace-scores-list.cjs.js +5 -5
  891. package/dist/domains/scores/components/trace-scores-list.es.js +5 -5
  892. package/dist/domains/scores/components/trace-scores-tab.cjs.js +15 -19
  893. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  894. package/dist/domains/scores/components/trace-scores-tab.es.js +15 -19
  895. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  896. package/dist/domains/scores/components.cjs.js +1 -1
  897. package/dist/domains/scores/components.es.js +1 -1
  898. package/dist/domains/skills/skill-simple-form.cjs.js +4 -4
  899. package/dist/domains/skills/skill-simple-form.es.js +4 -4
  900. package/dist/domains/spans/components/spans-explorer-body.cjs.js +6 -6
  901. package/dist/domains/spans/components/spans-explorer-body.es.js +7 -7
  902. package/dist/domains/spans/components/spans-filter-bar.cjs.js +3 -3
  903. package/dist/domains/spans/components/spans-filter-bar.es.js +3 -3
  904. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +2 -2
  905. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +2 -2
  906. package/dist/domains/spans/hooks/use-spans-list-source.cjs.js +1 -1
  907. package/dist/domains/spans/hooks/use-spans-list-source.es.js +1 -1
  908. package/dist/domains/spans/hooks.cjs.js +1 -1
  909. package/dist/domains/spans/hooks.es.js +1 -1
  910. package/dist/domains/threads/components/threads-explorer-body.cjs.js +6 -6
  911. package/dist/domains/threads/components/threads-explorer-body.es.js +7 -7
  912. package/dist/domains/threads/components/threads-filter-bar.cjs.js +3 -3
  913. package/dist/domains/threads/components/threads-filter-bar.es.js +3 -3
  914. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +2 -2
  915. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +2 -2
  916. package/dist/domains/threads/hooks/use-threads-list-source.cjs.js +1 -1
  917. package/dist/domains/threads/hooks/use-threads-list-source.es.js +1 -1
  918. package/dist/domains/threads/hooks.cjs.js +1 -1
  919. package/dist/domains/threads/hooks.es.js +1 -1
  920. package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +1 -1
  921. package/dist/domains/traces/components/columns-menu/columns-menu.es.js +2 -2
  922. package/dist/domains/traces/components/feedback-thread.cjs.js +9 -9
  923. package/dist/domains/traces/components/feedback-thread.es.js +9 -9
  924. package/dist/domains/traces/components/format-trace-thread-messages.cjs.js +1 -1
  925. package/dist/domains/traces/components/format-trace-thread-messages.es.js +1 -1
  926. package/dist/domains/traces/components/no-traces-info.cjs.js +2 -2
  927. package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
  928. package/dist/domains/traces/components/no-traces-info.es.js +2 -2
  929. package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
  930. package/dist/domains/traces/components/shared.cjs.js +3 -3
  931. package/dist/domains/traces/components/shared.es.js +3 -3
  932. package/dist/domains/traces/components/span-data-panel-view.cjs.js +23 -23
  933. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  934. package/dist/domains/traces/components/span-data-panel-view.es.js +23 -23
  935. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  936. package/dist/domains/traces/components/span-details-view.cjs.js +3 -3
  937. package/dist/domains/traces/components/span-details-view.es.js +3 -3
  938. package/dist/domains/traces/components/span-outcome.cjs.js +1 -1
  939. package/dist/domains/traces/components/span-outcome.es.js +1 -1
  940. package/dist/domains/traces/components/span-outcome.utils.cjs.js +3 -3
  941. package/dist/domains/traces/components/span-outcome.utils.cjs.js.map +1 -1
  942. package/dist/domains/traces/components/span-outcome.utils.es.js +3 -3
  943. package/dist/domains/traces/components/span-outcome.utils.es.js.map +1 -1
  944. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +5 -5
  945. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +5 -5
  946. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +4 -4
  947. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +4 -4
  948. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +7 -7
  949. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +7 -7
  950. package/dist/domains/traces/components/span-payload/span-payload-attachment.cjs.js +1 -1
  951. package/dist/domains/traces/components/span-payload/span-payload-attachment.es.js +1 -1
  952. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +2 -2
  953. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +2 -2
  954. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +14 -9
  955. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js.map +1 -1
  956. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +14 -9
  957. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js.map +1 -1
  958. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  959. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  960. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +3 -3
  961. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +3 -3
  962. package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js +1 -1
  963. package/dist/domains/traces/components/span-payload/span-payload-registry.es.js +1 -1
  964. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +7 -7
  965. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +7 -7
  966. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  967. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  968. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -3
  969. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -3
  970. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +3 -3
  971. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +3 -3
  972. package/dist/domains/traces/components/span-payload/span-signal-details.cjs.js +4 -4
  973. package/dist/domains/traces/components/span-payload/span-signal-details.es.js +4 -4
  974. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +6 -6
  975. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +6 -6
  976. package/dist/domains/traces/components/span-payload.cjs.js +4 -4
  977. package/dist/domains/traces/components/span-payload.es.js +4 -4
  978. package/dist/domains/traces/components/span-prompt-changes.cjs.js +17 -10
  979. package/dist/domains/traces/components/span-prompt-changes.cjs.js.map +1 -1
  980. package/dist/domains/traces/components/span-prompt-changes.es.js +17 -10
  981. package/dist/domains/traces/components/span-prompt-changes.es.js.map +1 -1
  982. package/dist/domains/traces/components/span-rows.cjs.js +1 -1
  983. package/dist/domains/traces/components/span-rows.es.js +1 -1
  984. package/dist/domains/traces/components/span-summary-description.cjs.js +3 -3
  985. package/dist/domains/traces/components/span-summary-description.es.js +3 -3
  986. package/dist/domains/traces/components/span-timeline-row.cjs.js +10 -10
  987. package/dist/domains/traces/components/span-timeline-row.es.js +10 -10
  988. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +3 -3
  989. package/dist/domains/traces/components/span-timing-hover-card.es.js +3 -3
  990. package/dist/domains/traces/components/span-token-usage.cjs.js +2 -2
  991. package/dist/domains/traces/components/span-token-usage.es.js +2 -2
  992. package/dist/domains/traces/components/span-token-usage.utils.cjs.js +2 -2
  993. package/dist/domains/traces/components/span-token-usage.utils.cjs.js.map +1 -1
  994. package/dist/domains/traces/components/span-token-usage.utils.es.js +2 -2
  995. package/dist/domains/traces/components/span-token-usage.utils.es.js.map +1 -1
  996. package/dist/domains/traces/components/span-type-badge.cjs.js +1 -1
  997. package/dist/domains/traces/components/span-type-badge.es.js +1 -1
  998. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +3 -3
  999. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +3 -3
  1000. package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js +2 -2
  1001. package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js +2 -2
  1002. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +4 -4
  1003. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +4 -4
  1004. package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js +3 -3
  1005. package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js +3 -3
  1006. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +5 -5
  1007. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +5 -5
  1008. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.cjs.js +1 -1
  1009. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.es.js +1 -1
  1010. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +6 -6
  1011. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +6 -6
  1012. package/dist/domains/traces/components/thread-trace.cjs.js +3 -3
  1013. package/dist/domains/traces/components/thread-trace.es.js +3 -3
  1014. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +7 -7
  1015. package/dist/domains/traces/components/thread-view-by-trace.es.js +7 -7
  1016. package/dist/domains/traces/components/thread-view-skeleton.cjs.js +5 -5
  1017. package/dist/domains/traces/components/thread-view-skeleton.es.js +5 -5
  1018. package/dist/domains/traces/components/timeline-name-col.cjs.js +6 -6
  1019. package/dist/domains/traces/components/timeline-name-col.es.js +6 -6
  1020. package/dist/domains/traces/components/timeline-timing-col.cjs.js +4 -4
  1021. package/dist/domains/traces/components/timeline-timing-col.es.js +4 -4
  1022. package/dist/domains/traces/components/trace-columns-menu.cjs.js +5 -5
  1023. package/dist/domains/traces/components/trace-columns-menu.es.js +5 -5
  1024. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +13 -13
  1025. package/dist/domains/traces/components/trace-data-panel-view.es.js +13 -13
  1026. package/dist/domains/traces/components/trace-data-panel.cjs.js +2 -2
  1027. package/dist/domains/traces/components/trace-data-panel.es.js +2 -2
  1028. package/dist/domains/traces/components/trace-details-view.cjs.js +3 -3
  1029. package/dist/domains/traces/components/trace-details-view.es.js +3 -3
  1030. package/dist/domains/traces/components/trace-error-cell.cjs.js +2 -2
  1031. package/dist/domains/traces/components/trace-error-cell.es.js +2 -2
  1032. package/dist/domains/traces/components/trace-error-summary.cjs.js +2 -2
  1033. package/dist/domains/traces/components/trace-error-summary.es.js +2 -2
  1034. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  1035. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  1036. package/dist/domains/traces/components/trace-messages-panel.cjs.js +1 -1
  1037. package/dist/domains/traces/components/trace-messages-panel.es.js +1 -1
  1038. package/dist/domains/traces/components/trace-messages-skeleton.cjs.js +1 -1
  1039. package/dist/domains/traces/components/trace-messages-skeleton.es.js +1 -1
  1040. package/dist/domains/traces/components/trace-span-panel.cjs.js +3 -3
  1041. package/dist/domains/traces/components/trace-span-panel.es.js +3 -3
  1042. package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js +6 -6
  1043. package/dist/domains/traces/components/trace-span-timeline-markers.es.js +6 -6
  1044. package/dist/domains/traces/components/trace-span-timeline.cjs.js +5 -5
  1045. package/dist/domains/traces/components/trace-span-timeline.es.js +5 -5
  1046. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +2 -2
  1047. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +2 -2
  1048. package/dist/domains/traces/components/trace-span-tree.cjs.js +2 -2
  1049. package/dist/domains/traces/components/trace-span-tree.es.js +2 -2
  1050. package/dist/domains/traces/components/trace-status-value.cjs.js +1 -1
  1051. package/dist/domains/traces/components/trace-status-value.es.js +1 -1
  1052. package/dist/domains/traces/components/trace-summary-description.cjs.js +5 -5
  1053. package/dist/domains/traces/components/trace-summary-description.es.js +5 -5
  1054. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +5 -5
  1055. package/dist/domains/traces/components/trace-thread-item-view.es.js +5 -5
  1056. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  1057. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  1058. package/dist/domains/traces/components/trace-timeline.cjs.js +1 -1
  1059. package/dist/domains/traces/components/trace-timeline.es.js +1 -1
  1060. package/dist/domains/traces/components/traces-error-content.cjs.js +2 -2
  1061. package/dist/domains/traces/components/traces-error-content.es.js +2 -2
  1062. package/dist/domains/traces/components/traces-explorer/traces-explorer-body.cjs.js +2 -2
  1063. package/dist/domains/traces/components/traces-explorer/traces-explorer-body.es.js +2 -2
  1064. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.cjs.js +1 -1
  1065. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.es.js +1 -1
  1066. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.cjs.js +1 -1
  1067. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.es.js +1 -1
  1068. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
  1069. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
  1070. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js +1 -1
  1071. package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js +1 -1
  1072. package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.cjs.js +2 -2
  1073. package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.es.js +2 -2
  1074. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +2 -2
  1075. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +2 -2
  1076. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +1 -1
  1077. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +1 -1
  1078. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +6 -6
  1079. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +6 -6
  1080. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +2 -2
  1081. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +3 -3
  1082. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +1 -1
  1083. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +1 -1
  1084. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +2 -2
  1085. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +2 -2
  1086. package/dist/domains/traces/components/traces-explorer.cjs.js +4 -4
  1087. package/dist/domains/traces/components/traces-explorer.es.js +4 -4
  1088. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +2 -2
  1089. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +2 -2
  1090. package/dist/domains/traces/components/traces-list-view.cjs.js +10 -10
  1091. package/dist/domains/traces/components/traces-list-view.es.js +10 -10
  1092. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
  1093. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
  1094. package/dist/domains/traces/components/traces-spans-switch.cjs.js +3 -3
  1095. package/dist/domains/traces/components/traces-spans-switch.es.js +3 -3
  1096. package/dist/domains/traces/components.cjs.js +15 -15
  1097. package/dist/domains/traces/components.es.js +15 -15
  1098. package/dist/domains/traces/hooks/use-download-trace-json.cjs.js +1 -1
  1099. package/dist/domains/traces/hooks/use-download-trace-json.es.js +1 -1
  1100. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +1 -1
  1101. package/dist/domains/traces/hooks/use-traces-list-source.es.js +1 -1
  1102. package/dist/domains/traces/hooks.cjs.js +4 -4
  1103. package/dist/domains/traces/hooks.es.js +4 -4
  1104. package/dist/domains/traces/utils/span-utils.cjs.js +2 -2
  1105. package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
  1106. package/dist/domains/traces/utils/span-utils.es.js +2 -2
  1107. package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
  1108. package/dist/domains/traces/utils.cjs.js +2 -2
  1109. package/dist/domains/traces/utils.es.js +2 -2
  1110. package/dist/domains/traces.cjs.js +2 -2
  1111. package/dist/domains/traces.es.js +2 -2
  1112. package/dist/domains/workflows/components/workflow-combobox.cjs.js +4 -3
  1113. package/dist/domains/workflows/components/workflow-combobox.cjs.js.map +1 -1
  1114. package/dist/domains/workflows/components/workflow-combobox.es.js +4 -3
  1115. package/dist/domains/workflows/components/workflow-combobox.es.js.map +1 -1
  1116. package/dist/domains/workflows/components/workflow-entity-header.cjs.js +6 -6
  1117. package/dist/domains/workflows/components/workflow-entity-header.cjs.js.map +1 -1
  1118. package/dist/domains/workflows/components/workflow-entity-header.es.js +6 -6
  1119. package/dist/domains/workflows/components/workflow-entity-header.es.js.map +1 -1
  1120. package/dist/domains/workflows/components/workflow-information.cjs.js +10 -10
  1121. package/dist/domains/workflows/components/workflow-information.es.js +10 -10
  1122. package/dist/domains/workflows/components/workflow-layout.cjs.js +3 -3
  1123. package/dist/domains/workflows/components/workflow-layout.es.js +2 -2
  1124. package/dist/domains/workflows/components/workflow-run-status-icon.cjs.js +3 -3
  1125. package/dist/domains/workflows/components/workflow-run-status-icon.es.js +3 -3
  1126. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +4 -4
  1127. package/dist/domains/workflows/components/workflow-step-detail.es.js +4 -4
  1128. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +2 -2
  1129. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +2 -2
  1130. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +11 -11
  1131. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +11 -11
  1132. package/dist/domains/workflows/context/playground-workflow-run-provider.cjs.js +1 -1
  1133. package/dist/domains/workflows/context/playground-workflow-run-provider.es.js +1 -1
  1134. package/dist/domains/workflows/context/use-stream-for-run.cjs.js +1 -1
  1135. package/dist/domains/workflows/context/use-stream-for-run.es.js +1 -1
  1136. package/dist/domains/workflows/context/workflow-run-provider.cjs.js +1 -1
  1137. package/dist/domains/workflows/context/workflow-run-provider.es.js +1 -1
  1138. package/dist/domains/workflows/runs/workflow-run-details.cjs.js +2 -2
  1139. package/dist/domains/workflows/runs/workflow-run-details.es.js +2 -2
  1140. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +26 -21
  1141. package/dist/domains/workflows/runs/workflow-run-list.cjs.js.map +1 -1
  1142. package/dist/domains/workflows/runs/workflow-run-list.es.js +26 -21
  1143. package/dist/domains/workflows/runs/workflow-run-list.es.js.map +1 -1
  1144. package/dist/domains/workflows/workflow/data/use-workflow-data.cjs.js +1 -1
  1145. package/dist/domains/workflows/workflow/data/use-workflow-data.es.js +1 -1
  1146. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  1147. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  1148. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +5 -5
  1149. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +5 -5
  1150. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  1151. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  1152. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +8 -8
  1153. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
  1154. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +8 -8
  1155. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
  1156. package/dist/domains/workflows/workflow/use-workflow-graph-nodes.cjs.js +1 -1
  1157. package/dist/domains/workflows/workflow/use-workflow-graph-nodes.es.js +1 -1
  1158. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
  1159. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  1160. package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js +3 -3
  1161. package/dist/domains/workflows/workflow/use-workflow-trigger.es.js +3 -3
  1162. package/dist/domains/workflows/workflow/utils.cjs.js +2 -2
  1163. package/dist/domains/workflows/workflow/utils.es.js +2 -2
  1164. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  1165. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  1166. package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
  1167. package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
  1168. package/dist/domains/workflows/workflow/workflow-card.cjs.js +1 -1
  1169. package/dist/domains/workflows/workflow/workflow-card.es.js +1 -1
  1170. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  1171. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  1172. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
  1173. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
  1174. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  1175. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  1176. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +6 -6
  1177. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +6 -6
  1178. package/dist/domains/workflows/workflow/workflow-graph-groups.cjs.js +1 -1
  1179. package/dist/domains/workflows/workflow/workflow-graph-groups.cjs.js.map +1 -1
  1180. package/dist/domains/workflows/workflow/workflow-graph-groups.es.js +1 -1
  1181. package/dist/domains/workflows/workflow/workflow-graph-groups.es.js.map +1 -1
  1182. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +4 -4
  1183. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +4 -4
  1184. package/dist/domains/workflows/workflow/workflow-graph-layout.cjs.js +1 -1
  1185. package/dist/domains/workflows/workflow/workflow-graph-layout.es.js +1 -1
  1186. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
  1187. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  1188. package/dist/domains/workflows/workflow/workflow-graph.cjs.js +2 -2
  1189. package/dist/domains/workflows/workflow/workflow-graph.es.js +2 -2
  1190. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +6 -6
  1191. package/dist/domains/workflows/workflow/workflow-input-data.es.js +6 -6
  1192. package/dist/domains/workflows/workflow/workflow-input-type-toggle.cjs.js +2 -2
  1193. package/dist/domains/workflows/workflow/workflow-input-type-toggle.es.js +2 -2
  1194. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
  1195. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
  1196. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +1 -1
  1197. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +1 -1
  1198. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +4 -4
  1199. package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -4
  1200. package/dist/domains/workflows/workflow/workflow-run-error.cjs.js +1 -1
  1201. package/dist/domains/workflows/workflow/workflow-run-error.es.js +1 -1
  1202. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +6 -6
  1203. package/dist/domains/workflows/workflow/workflow-run-header.es.js +6 -6
  1204. package/dist/domains/workflows/workflow/workflow-status.cjs.js +7 -7
  1205. package/dist/domains/workflows/workflow/workflow-status.es.js +7 -7
  1206. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +2 -2
  1207. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +2 -2
  1208. package/dist/domains/workflows/workflow/workflow-step-node-utils.cjs.js +1 -1
  1209. package/dist/domains/workflows/workflow/workflow-step-node-utils.es.js +1 -1
  1210. package/dist/domains/workflows/workflow/workflow-steps-status.cjs.js +1 -1
  1211. package/dist/domains/workflows/workflow/workflow-steps-status.es.js +1 -1
  1212. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +10 -10
  1213. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +10 -10
  1214. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +12 -12
  1215. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +12 -12
  1216. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +4 -4
  1217. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +4 -4
  1218. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +9 -9
  1219. package/dist/domains/workflows/workflow/workflow-timeline.es.js +9 -9
  1220. package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +2 -2
  1221. package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +2 -2
  1222. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +3 -3
  1223. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +3 -3
  1224. package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +5 -5
  1225. package/dist/domains/workflows/workflow/workflow-trigger.es.js +5 -5
  1226. package/dist/domains/workflows.cjs.js +4 -4
  1227. package/dist/domains/workflows.es.js +4 -4
  1228. package/dist/domains/workspace/components/mount-icon.cjs.js +1 -1
  1229. package/dist/domains/workspace/components/mount-icon.es.js +1 -1
  1230. package/dist/domains/workspace/components/workspace-active-file.cjs.js +4 -4
  1231. package/dist/domains/workspace/components/workspace-active-file.es.js +4 -4
  1232. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +10 -10
  1233. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +10 -10
  1234. package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
  1235. package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
  1236. package/dist/domains/workspace/components/workspace-context.cjs.js +1 -1
  1237. package/dist/domains/workspace/components/workspace-context.es.js +1 -1
  1238. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +4 -4
  1239. package/dist/domains/workspace/components/workspace-create-directory.es.js +4 -4
  1240. package/dist/domains/workspace/components/workspace-error.cjs.js +1 -1
  1241. package/dist/domains/workspace/components/workspace-error.es.js +1 -1
  1242. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  1243. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  1244. package/dist/domains/workspace/components/workspace-parts.cjs.js +5 -5
  1245. package/dist/domains/workspace/components/workspace-parts.es.js +5 -5
  1246. package/dist/domains/workspace/components/workspace-search.cjs.js +17 -20
  1247. package/dist/domains/workspace/components/workspace-search.cjs.js.map +1 -1
  1248. package/dist/domains/workspace/components/workspace-search.es.js +18 -21
  1249. package/dist/domains/workspace/components/workspace-search.es.js.map +1 -1
  1250. package/dist/domains/workspace/components/workspace-tree-view.cjs.js +1 -1
  1251. package/dist/domains/workspace/components/workspace-tree-view.es.js +1 -1
  1252. package/dist/domains/workspace/components/workspace-tree.cjs.js +11 -11
  1253. package/dist/domains/workspace/components/workspace-tree.cjs.js.map +1 -1
  1254. package/dist/domains/workspace/components/workspace-tree.es.js +11 -11
  1255. package/dist/domains/workspace/components/workspace-tree.es.js.map +1 -1
  1256. package/dist/domains/workspace/components/workspace.cjs.js +1 -1
  1257. package/dist/domains/workspace/components/workspace.es.js +1 -1
  1258. package/dist/domains/workspace.cjs.js +3 -3
  1259. package/dist/domains/workspace.es.js +3 -3
  1260. package/dist/{dropdown-menu-B4jY3J9e.js → dropdown-menu-DKoWI8kD.js} +2 -2
  1261. package/dist/{dropdown-menu-B4jY3J9e.js.map → dropdown-menu-DKoWI8kD.js.map} +1 -1
  1262. package/dist/{dropdown-menu-BETTTPBB.cjs → dropdown-menu-Dx-jCOIv.cjs} +2 -2
  1263. package/dist/{dropdown-menu-BETTTPBB.cjs.map → dropdown-menu-Dx-jCOIv.cjs.map} +1 -1
  1264. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +4 -4
  1265. package/dist/ee/signals/components/entity-index-compact-grid.es.js +4 -4
  1266. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  1267. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  1268. package/dist/ee/signals/components/entity-index-status.cjs.js +2 -2
  1269. package/dist/ee/signals/components/entity-index-status.es.js +2 -2
  1270. package/dist/ee/signals/components/signals-empty-state.cjs.js +12 -21
  1271. package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
  1272. package/dist/ee/signals/components/signals-empty-state.es.js +12 -21
  1273. package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
  1274. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +5 -5
  1275. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +5 -5
  1276. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +13 -13
  1277. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +14 -14
  1278. package/dist/ee/signals/examples-pager.cjs.js +2 -2
  1279. package/dist/ee/signals/examples-pager.es.js +2 -2
  1280. package/dist/ee/signals/flow-card.cjs.js +4 -4
  1281. package/dist/ee/signals/flow-card.es.js +4 -4
  1282. package/dist/ee/signals/lifeline-point.cjs.js +2 -2
  1283. package/dist/ee/signals/lifeline-point.es.js +2 -2
  1284. package/dist/ee/signals/lifeline-row.cjs.js +6 -6
  1285. package/dist/ee/signals/lifeline-row.cjs.js.map +1 -1
  1286. package/dist/ee/signals/lifeline-row.es.js +6 -6
  1287. package/dist/ee/signals/lifeline-row.es.js.map +1 -1
  1288. package/dist/ee/signals/noise-detail-panel.cjs.js +6 -6
  1289. package/dist/ee/signals/noise-detail-panel.es.js +6 -6
  1290. package/dist/ee/signals/sankey-signals-data.cjs.js +9 -5
  1291. package/dist/ee/signals/sankey-signals-data.cjs.js.map +1 -1
  1292. package/dist/ee/signals/sankey-signals-data.es.js +9 -5
  1293. package/dist/ee/signals/sankey-signals-data.es.js.map +1 -1
  1294. package/dist/ee/signals/sankey-signals.cjs.js +21 -12
  1295. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
  1296. package/dist/ee/signals/sankey-signals.es.js +21 -12
  1297. package/dist/ee/signals/sankey-signals.es.js.map +1 -1
  1298. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +4 -4
  1299. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +4 -4
  1300. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +7 -7
  1301. package/dist/ee/signals/settings/trace-signal-settings.es.js +7 -7
  1302. package/dist/ee/signals/signal-delta-column.cjs.js +3 -3
  1303. package/dist/ee/signals/signal-delta-column.es.js +3 -3
  1304. package/dist/ee/signals/signal-lifelines.cjs.js +5 -5
  1305. package/dist/ee/signals/signal-lifelines.es.js +5 -5
  1306. package/dist/ee/signals/signals-error-state.cjs.js +2 -2
  1307. package/dist/ee/signals/signals-error-state.es.js +2 -2
  1308. package/dist/ee/signals/snapshot-summary.cjs.js +15 -0
  1309. package/dist/ee/signals/snapshot-summary.cjs.js.map +1 -0
  1310. package/dist/ee/signals/snapshot-summary.d.ts +1 -0
  1311. package/dist/ee/signals/snapshot-summary.es.js +14 -0
  1312. package/dist/ee/signals/snapshot-summary.es.js.map +1 -0
  1313. package/dist/ee/signals/snapshot-timeline.cjs.js +4 -4
  1314. package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -1
  1315. package/dist/ee/signals/snapshot-timeline.es.js +4 -4
  1316. package/dist/ee/signals/snapshot-timeline.es.js.map +1 -1
  1317. package/dist/ee/signals/sortable-signal-headers.cjs.js +6 -6
  1318. package/dist/ee/signals/sortable-signal-headers.es.js +6 -6
  1319. package/dist/ee/signals/theme-compare.cjs.js +15 -7
  1320. package/dist/ee/signals/theme-compare.cjs.js.map +1 -1
  1321. package/dist/ee/signals/theme-compare.es.js +15 -7
  1322. package/dist/ee/signals/theme-compare.es.js.map +1 -1
  1323. package/dist/ee/signals/theme-detail-panel.cjs.js +13 -17
  1324. package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -1
  1325. package/dist/ee/signals/theme-detail-panel.es.js +13 -17
  1326. package/dist/ee/signals/theme-detail-panel.es.js.map +1 -1
  1327. package/dist/ee/signals/theme-filter-banner.cjs.js +7 -7
  1328. package/dist/ee/signals/theme-filter-banner.cjs.js.map +1 -1
  1329. package/dist/ee/signals/theme-filter-banner.es.js +7 -7
  1330. package/dist/ee/signals/theme-filter-banner.es.js.map +1 -1
  1331. package/dist/ee/signals/theme-lifelines.cjs.js +8 -5
  1332. package/dist/ee/signals/theme-lifelines.cjs.js.map +1 -1
  1333. package/dist/ee/signals/theme-lifelines.es.js +8 -5
  1334. package/dist/ee/signals/theme-lifelines.es.js.map +1 -1
  1335. package/dist/ee/signals/theme-trend-chart.cjs.js +3 -3
  1336. package/dist/ee/signals/theme-trend-chart.cjs.js.map +1 -1
  1337. package/dist/ee/signals/theme-trend-chart.es.js +3 -3
  1338. package/dist/ee/signals/theme-trend-chart.es.js.map +1 -1
  1339. package/dist/ee/signals/trace-insight-view.cjs.js +11 -13
  1340. package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
  1341. package/dist/ee/signals/trace-insight-view.es.js +11 -13
  1342. package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
  1343. package/dist/ee/signals/trace-intelligence-explainer.cjs.js +10 -15
  1344. package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
  1345. package/dist/ee/signals/trace-intelligence-explainer.es.js +10 -15
  1346. package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
  1347. package/dist/ee/signals/view-mode-tab.cjs.js +2 -2
  1348. package/dist/ee/signals/view-mode-tab.es.js +2 -2
  1349. package/dist/ee/signals.cjs.js +5 -5
  1350. package/dist/ee/signals.es.js +5 -5
  1351. package/dist/ee/topics/components/topic-trace-details-panel.cjs.js +1 -1
  1352. package/dist/ee/topics/components/topic-trace-details-panel.es.js +1 -1
  1353. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +4 -4
  1354. package/dist/ee/topics/components/topic-trace-summary-list.es.js +4 -4
  1355. package/dist/ee/topics/components/topics-layout.cjs.js +1 -1
  1356. package/dist/ee/topics/components/topics-layout.es.js +1 -1
  1357. package/dist/{field-error-id-DBSuJ3HM.js → field-error-id-6ZynvsRO.js} +2 -2
  1358. package/dist/{field-error-id-DBSuJ3HM.js.map → field-error-id-6ZynvsRO.js.map} +1 -1
  1359. package/dist/{field-error-id-nGAF0330.cjs → field-error-id-VimPQI_b.cjs} +2 -2
  1360. package/dist/{field-error-id-nGAF0330.cjs.map → field-error-id-VimPQI_b.cjs.map} +1 -1
  1361. package/dist/{filter-bar-chip-Cg-UbIwP.cjs → filter-bar-chip-DFsbUZ-V.cjs} +10 -10
  1362. package/dist/{filter-bar-chip-Cg-UbIwP.cjs.map → filter-bar-chip-DFsbUZ-V.cjs.map} +1 -1
  1363. package/dist/{filter-bar-chip-CABeKrtf.js → filter-bar-chip-NBtfDca9.js} +11 -11
  1364. package/dist/{filter-bar-chip-CABeKrtf.js.map → filter-bar-chip-NBtfDca9.js.map} +1 -1
  1365. package/dist/{filter-bar-time-range-qlV8p7hp.js → filter-bar-time-range-D9SnzR2J.js} +3 -3
  1366. package/dist/{filter-bar-time-range-qlV8p7hp.js.map → filter-bar-time-range-D9SnzR2J.js.map} +1 -1
  1367. package/dist/{filter-bar-time-range-zdM024JD.cjs → filter-bar-time-range-DlVNjw43.cjs} +3 -3
  1368. package/dist/{filter-bar-time-range-zdM024JD.cjs.map → filter-bar-time-range-DlVNjw43.cjs.map} +1 -1
  1369. package/dist/hooks/use-clock.cjs.js +34 -0
  1370. package/dist/hooks/use-clock.cjs.js.map +1 -0
  1371. package/dist/hooks/use-clock.d.ts +1 -0
  1372. package/dist/hooks/use-clock.es.js +33 -0
  1373. package/dist/hooks/use-clock.es.js.map +1 -0
  1374. package/dist/hooks/use-copy-to-clipboard.cjs.js +1 -1
  1375. package/dist/hooks/use-copy-to-clipboard.es.js +1 -1
  1376. package/dist/hooks/use-text-highlight.cjs.js +3 -5
  1377. package/dist/hooks/use-text-highlight.cjs.js.map +1 -1
  1378. package/dist/hooks/use-text-highlight.es.js +1 -3
  1379. package/dist/hooks/use-text-highlight.es.js.map +1 -1
  1380. package/dist/icons/ByteDanceIcon.cjs.js +37 -0
  1381. package/dist/icons/ByteDanceIcon.cjs.js.map +1 -0
  1382. package/dist/icons/ByteDanceIcon.d.ts +1 -0
  1383. package/dist/icons/ByteDanceIcon.es.js +34 -0
  1384. package/dist/icons/ByteDanceIcon.es.js.map +1 -0
  1385. package/dist/icons/CohereBrandIcon.cjs.js +34 -0
  1386. package/dist/icons/CohereBrandIcon.cjs.js.map +1 -0
  1387. package/dist/icons/CohereBrandIcon.d.ts +1 -0
  1388. package/dist/icons/CohereBrandIcon.es.js +31 -0
  1389. package/dist/icons/CohereBrandIcon.es.js.map +1 -0
  1390. package/dist/icons/FireworksIcon.cjs.js +22 -0
  1391. package/dist/icons/FireworksIcon.cjs.js.map +1 -0
  1392. package/dist/icons/FireworksIcon.d.ts +1 -0
  1393. package/dist/icons/FireworksIcon.es.js +19 -0
  1394. package/dist/icons/FireworksIcon.es.js.map +1 -0
  1395. package/dist/icons/Icon.cjs.js +1 -1
  1396. package/dist/icons/Icon.es.js +1 -1
  1397. package/dist/icons/LongCatIcon.cjs.js +22 -0
  1398. package/dist/icons/LongCatIcon.cjs.js.map +1 -0
  1399. package/dist/icons/LongCatIcon.d.ts +1 -0
  1400. package/dist/icons/LongCatIcon.es.js +19 -0
  1401. package/dist/icons/LongCatIcon.es.js.map +1 -0
  1402. package/dist/icons/MicrosoftIcon.cjs.js +34 -0
  1403. package/dist/icons/MicrosoftIcon.cjs.js.map +1 -0
  1404. package/dist/icons/MicrosoftIcon.d.ts +1 -0
  1405. package/dist/icons/MicrosoftIcon.es.js +31 -0
  1406. package/dist/icons/MicrosoftIcon.es.js.map +1 -0
  1407. package/dist/icons/MorphIcon.cjs.js +20 -0
  1408. package/dist/icons/MorphIcon.cjs.js.map +1 -0
  1409. package/dist/icons/MorphIcon.d.ts +1 -0
  1410. package/dist/icons/MorphIcon.es.js +17 -0
  1411. package/dist/icons/MorphIcon.es.js.map +1 -0
  1412. package/dist/icons/NousResearchIcon.cjs.js +19 -0
  1413. package/dist/icons/NousResearchIcon.cjs.js.map +1 -0
  1414. package/dist/icons/NousResearchIcon.d.ts +1 -0
  1415. package/dist/icons/NousResearchIcon.es.js +16 -0
  1416. package/dist/icons/NousResearchIcon.es.js.map +1 -0
  1417. package/dist/icons/NovaIcon.cjs.js +41 -0
  1418. package/dist/icons/NovaIcon.cjs.js.map +1 -0
  1419. package/dist/icons/NovaIcon.d.ts +1 -0
  1420. package/dist/icons/NovaIcon.es.js +38 -0
  1421. package/dist/icons/NovaIcon.es.js.map +1 -0
  1422. package/dist/icons/PerplexityIcon.cjs.js +21 -0
  1423. package/dist/icons/PerplexityIcon.cjs.js.map +1 -0
  1424. package/dist/icons/PerplexityIcon.d.ts +1 -0
  1425. package/dist/icons/PerplexityIcon.es.js +18 -0
  1426. package/dist/icons/PerplexityIcon.es.js.map +1 -0
  1427. package/dist/icons/SakanaIcon.cjs.js +20 -0
  1428. package/dist/icons/SakanaIcon.cjs.js.map +1 -0
  1429. package/dist/icons/SakanaIcon.d.ts +1 -0
  1430. package/dist/icons/SakanaIcon.es.js +17 -0
  1431. package/dist/icons/SakanaIcon.es.js.map +1 -0
  1432. package/dist/icons/StepFunIcon.cjs.js +35 -0
  1433. package/dist/icons/StepFunIcon.cjs.js.map +1 -0
  1434. package/dist/icons/StepFunIcon.d.ts +1 -0
  1435. package/dist/icons/StepFunIcon.es.js +32 -0
  1436. package/dist/icons/StepFunIcon.es.js.map +1 -0
  1437. package/dist/icons/TencentIcon.cjs.js +21 -0
  1438. package/dist/icons/TencentIcon.cjs.js.map +1 -0
  1439. package/dist/icons/TencentIcon.d.ts +1 -0
  1440. package/dist/icons/TencentIcon.es.js +18 -0
  1441. package/dist/icons/TencentIcon.es.js.map +1 -0
  1442. package/dist/icons/UpstageIcon.cjs.js +36 -0
  1443. package/dist/icons/UpstageIcon.cjs.js.map +1 -0
  1444. package/dist/icons/UpstageIcon.d.ts +1 -0
  1445. package/dist/icons/UpstageIcon.es.js +33 -0
  1446. package/dist/icons/UpstageIcon.es.js.map +1 -0
  1447. package/dist/{input-2hRXcZIu.cjs → input-BpnUsQSt.cjs} +4 -4
  1448. package/dist/{input-2hRXcZIu.cjs.map → input-BpnUsQSt.cjs.map} +1 -1
  1449. package/dist/{input-0l1uzOBZ.js → input-Cyit5ZSc.js} +4 -4
  1450. package/dist/{input-0l1uzOBZ.js.map → input-Cyit5ZSc.js.map} +1 -1
  1451. package/dist/{input-group-DVJLZDBL.cjs → input-group-DBCilXjT.cjs} +4 -4
  1452. package/dist/{input-group-DVJLZDBL.cjs.map → input-group-DBCilXjT.cjs.map} +1 -1
  1453. package/dist/{input-group-QKKV_ouF.js → input-group-NV4ZzKOk.js} +4 -4
  1454. package/dist/{input-group-QKKV_ouF.js.map → input-group-NV4ZzKOk.js.map} +1 -1
  1455. package/dist/layout/tabbed-container.cjs.js +1 -1
  1456. package/dist/layout/tabbed-container.es.js +1 -1
  1457. package/dist/lib/form/auto-form.cjs.js +1 -1
  1458. package/dist/lib/form/auto-form.es.js +1 -1
  1459. package/dist/lib/form/components/array-element-wrapper.cjs.js +4 -4
  1460. package/dist/lib/form/components/array-element-wrapper.es.js +4 -4
  1461. package/dist/lib/form/components/array-wrapper.cjs.js +2 -2
  1462. package/dist/lib/form/components/array-wrapper.es.js +2 -2
  1463. package/dist/lib/form/components/boolean-field.cjs.js +1 -1
  1464. package/dist/lib/form/components/boolean-field.es.js +1 -1
  1465. package/dist/lib/form/components/date-field.cjs.js +5 -5
  1466. package/dist/lib/form/components/date-field.es.js +5 -5
  1467. package/dist/lib/form/components/error-message.cjs.js +1 -1
  1468. package/dist/lib/form/components/error-message.es.js +1 -1
  1469. package/dist/lib/form/components/form-submit-row.cjs.js +2 -2
  1470. package/dist/lib/form/components/form-submit-row.es.js +2 -2
  1471. package/dist/lib/form/components/number-field.cjs.js +1 -1
  1472. package/dist/lib/form/components/number-field.es.js +1 -1
  1473. package/dist/lib/form/components/object-wrapper.cjs.js +3 -3
  1474. package/dist/lib/form/components/object-wrapper.es.js +3 -3
  1475. package/dist/lib/form/components/record-field.cjs.js +2 -2
  1476. package/dist/lib/form/components/record-field.es.js +2 -2
  1477. package/dist/lib/form/components/select-field.cjs.js +1 -1
  1478. package/dist/lib/form/components/select-field.es.js +1 -1
  1479. package/dist/lib/form/components/string-field.cjs.js +1 -1
  1480. package/dist/lib/form/components/string-field.es.js +1 -1
  1481. package/dist/lib/form/components/submit-button.cjs.js +1 -1
  1482. package/dist/lib/form/components/submit-button.es.js +1 -1
  1483. package/dist/lib/form/components/union-field.cjs.js +1 -1
  1484. package/dist/lib/form/components/union-field.es.js +1 -1
  1485. package/dist/lib/form/dynamic-form.cjs.js +2 -2
  1486. package/dist/lib/form/dynamic-form.es.js +2 -2
  1487. package/dist/{list-search-CkhsTFdG.js → list-search-DUcIMJTk.js} +2 -2
  1488. package/dist/{list-search-CkhsTFdG.js.map → list-search-DUcIMJTk.js.map} +1 -1
  1489. package/dist/{list-search-BtRno5As.cjs → list-search-yF02rvZt.cjs} +2 -2
  1490. package/dist/{list-search-BtRno5As.cjs.map → list-search-yF02rvZt.cjs.map} +1 -1
  1491. package/dist/mcp-app-viewer-BV7FI498.js +2051 -0
  1492. package/dist/mcp-app-viewer-BV7FI498.js.map +1 -0
  1493. package/dist/mcp-app-viewer-M3-pqAlo.cjs +2058 -0
  1494. package/dist/mcp-app-viewer-M3-pqAlo.cjs.map +1 -0
  1495. package/dist/new/layout/page-header.cjs.js +1 -1
  1496. package/dist/new/layout/page-header.es.js +1 -1
  1497. package/dist/new/settings.cjs.js +1 -1
  1498. package/dist/new/settings.es.js +1 -1
  1499. package/dist/{observability-saved-views-CjKTEp1V.js → observability-saved-views-Ch53fh5_.js} +9 -9
  1500. package/dist/{observability-saved-views-CjKTEp1V.js.map → observability-saved-views-Ch53fh5_.js.map} +1 -1
  1501. package/dist/{observability-saved-views-Daizz4tU.cjs → observability-saved-views-DgABvgat.cjs} +9 -9
  1502. package/dist/{observability-saved-views-Daizz4tU.cjs.map → observability-saved-views-DgABvgat.cjs.map} +1 -1
  1503. package/dist/{page-header-BykBsHUy.js → page-header-Maytcmgh.js} +3 -3
  1504. package/dist/{page-header-BB6yjtce.cjs.map → page-header-Maytcmgh.js.map} +1 -1
  1505. package/dist/{page-header-BB6yjtce.cjs → page-header-pZCts_WC.cjs} +3 -3
  1506. package/dist/page-header-pZCts_WC.cjs.map +1 -0
  1507. package/dist/{popover-CzHvTPk2.js → popover-BpMi52Tb.js} +3 -3
  1508. package/dist/{popover-CzHvTPk2.js.map → popover-BpMi52Tb.js.map} +1 -1
  1509. package/dist/{popover-BJqa6Hz6.cjs → popover-D9AfJmla.cjs} +3 -3
  1510. package/dist/{popover-BJqa6Hz6.cjs.map → popover-D9AfJmla.cjs.map} +1 -1
  1511. package/dist/primitives/chart-frame.cjs.js +2 -2
  1512. package/dist/primitives/chart-frame.es.js +2 -2
  1513. package/dist/primitives/chart-time-tick.cjs.js +2 -2
  1514. package/dist/primitives/chart-time-tick.es.js +2 -2
  1515. package/dist/primitives/charts/drag-selection.cjs.js +1 -1
  1516. package/dist/primitives/charts/drag-selection.es.js +1 -1
  1517. package/dist/primitives/menu-item.cjs.js +2 -2
  1518. package/dist/primitives/menu-item.es.js +2 -2
  1519. package/dist/primitives/menu-scroll-area.cjs.js +1 -1
  1520. package/dist/primitives/menu-scroll-area.es.js +1 -1
  1521. package/dist/primitives/resize-handle-indicator.cjs.js +1 -1
  1522. package/dist/primitives/resize-handle-indicator.es.js +1 -1
  1523. package/dist/primitives/trigger-button.cjs.js +2 -2
  1524. package/dist/primitives/trigger-button.es.js +2 -2
  1525. package/dist/{property-filter-applied--U5EZdaA.js → property-filter-applied-DoxQHG09.js} +8 -8
  1526. package/dist/{property-filter-applied--U5EZdaA.js.map → property-filter-applied-DoxQHG09.js.map} +1 -1
  1527. package/dist/{property-filter-applied-BkkIObRq.cjs → property-filter-applied-DuyL4S_K.cjs} +8 -8
  1528. package/dist/{property-filter-applied-BkkIObRq.cjs.map → property-filter-applied-DuyL4S_K.cjs.map} +1 -1
  1529. package/dist/resize/collapsible-panel.cjs.js +4 -4
  1530. package/dist/resize/collapsible-panel.cjs.js.map +1 -1
  1531. package/dist/resize/collapsible-panel.es.js +4 -4
  1532. package/dist/resize/collapsible-panel.es.js.map +1 -1
  1533. package/dist/resize/panel-drawer.cjs.js +3 -3
  1534. package/dist/resize/panel-drawer.es.js +3 -3
  1535. package/dist/resize/panel-icon-button.cjs.js +1 -2
  1536. package/dist/resize/panel-icon-button.cjs.js.map +1 -1
  1537. package/dist/resize/panel-icon-button.es.js +1 -1
  1538. package/dist/resize/separator.cjs.js +1 -1
  1539. package/dist/resize/separator.es.js +1 -1
  1540. package/dist/{scroll-area-C226l0v0.js → scroll-area-9-S7wfSs.js} +2 -2
  1541. package/dist/{scroll-area-C226l0v0.js.map → scroll-area-9-S7wfSs.js.map} +1 -1
  1542. package/dist/{scroll-area-BP4gPZ4G.cjs → scroll-area-BU_TorPW.cjs} +2 -2
  1543. package/dist/{scroll-area-BP4gPZ4G.cjs.map → scroll-area-BU_TorPW.cjs.map} +1 -1
  1544. package/dist/{select-Dg8L5ROX.cjs → select-CeukeSn_.cjs} +5 -5
  1545. package/dist/{select-Dg8L5ROX.cjs.map → select-CeukeSn_.cjs.map} +1 -1
  1546. package/dist/{select-BdIZEdcy.js → select-dNX9If-s.js} +5 -5
  1547. package/dist/{select-BdIZEdcy.js.map → select-dNX9If-s.js.map} +1 -1
  1548. package/dist/{settings-BaUeaO96.js → settings-BEw_bg12.js} +2 -2
  1549. package/dist/{settings-BaUeaO96.js.map → settings-BEw_bg12.js.map} +1 -1
  1550. package/dist/{settings-CUVqhBbf.cjs → settings-Bminohri.cjs} +2 -2
  1551. package/dist/{settings-CUVqhBbf.cjs.map → settings-Bminohri.cjs.map} +1 -1
  1552. package/dist/{span-payload-primitives-CKKIAVPJ.js → span-payload-primitives-BKkRpVVO.js} +12 -12
  1553. package/dist/{span-payload-primitives-CKKIAVPJ.js.map → span-payload-primitives-BKkRpVVO.js.map} +1 -1
  1554. package/dist/{span-payload-primitives-D4tHWN2W.cjs → span-payload-primitives-D2NWznGy.cjs} +12 -12
  1555. package/dist/{span-payload-primitives-D4tHWN2W.cjs.map → span-payload-primitives-D2NWznGy.cjs.map} +1 -1
  1556. package/dist/{spinner-CnLgLj9R.js → spinner-B9ykw74u.js} +2 -2
  1557. package/dist/{spinner-CnLgLj9R.js.map → spinner-B9ykw74u.js.map} +1 -1
  1558. package/dist/{spinner-C8ZxiA5C.cjs → spinner-oS6q4pwx.cjs} +3 -3
  1559. package/dist/{spinner-C8ZxiA5C.cjs.map → spinner-oS6q4pwx.cjs.map} +1 -1
  1560. package/dist/src/domains/chat/activity/index.d.ts +1 -3
  1561. package/dist/src/domains/chat/activity/model/activity-members.d.ts +1 -2
  1562. package/dist/src/domains/chat/activity/model/activity-words.d.ts +1 -2
  1563. package/dist/src/domains/chat/context/chat-context.d.ts +9 -0
  1564. package/dist/src/domains/chat/tools/badges/knowledge-tool-badge.d.ts +2 -1
  1565. package/dist/src/domains/chat/tools/badges/mcp-task-chip.d.ts +1 -1
  1566. package/dist/src/domains/chat/tools/badges/workspace-data-parts.d.ts +6 -0
  1567. package/dist/src/domains/chat/tools/tool-card-kind.d.ts +12 -2
  1568. package/dist/src/domains/dashboards/components/dashboard-grid.d.ts +4 -1
  1569. package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +22 -2
  1570. package/dist/src/domains/dashboards/components/widget-controls.d.ts +3 -0
  1571. package/dist/src/domains/dashboards/components/widget-error.d.ts +7 -2
  1572. package/dist/src/domains/dashboards/index.d.ts +2 -2
  1573. package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -1
  1574. package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -1
  1575. package/dist/src/domains/dashboards/lib/chrome.d.ts +5 -2
  1576. package/dist/src/domains/dashboards/lib/pin-actions.d.ts +7 -0
  1577. package/dist/src/domains/dashboards/widget-kind.d.ts +13 -0
  1578. package/dist/src/domains/llm/models-dev-logo-slugs.d.ts +1 -0
  1579. package/dist/src/domains/llm/provider-logo-monogram.d.ts +8 -0
  1580. package/dist/src/domains/llm/provider-logo.d.ts +0 -4
  1581. package/dist/src/domains/mcps/components/mcp-app-tool-result.d.ts +2 -1
  1582. package/dist/src/domains/mcps/components/mcp-app-viewer.d.ts +7 -2
  1583. package/dist/src/domains/mcps/hooks/use-mcp-app-tool-call.d.ts +5 -0
  1584. package/dist/src/domains/metrics/components/chart-card.d.ts +6 -2
  1585. package/dist/src/domains/metrics/components/kpi-card.d.ts +2 -1
  1586. package/dist/src/domains/metrics/lib/index.d.ts +1 -0
  1587. package/dist/src/domains/metrics/lib/series-colors.d.ts +39 -0
  1588. package/dist/src/domains/traces/components/span-token-usage.utils.d.ts +1 -1
  1589. package/dist/src/domains/workflows/components/workflow-combobox.d.ts +2 -1
  1590. package/dist/src/ds/components/AgentIndicator/paint.d.ts +6 -2
  1591. package/dist/src/ds/components/AgentIndicator/poses/coordination.d.ts +7 -0
  1592. package/dist/src/ds/components/AgentIndicator/poses/documents.d.ts +2 -0
  1593. package/dist/src/ds/components/AgentIndicator/poses/files.d.ts +5 -0
  1594. package/dist/src/ds/components/AgentIndicator/poses/interface.d.ts +8 -0
  1595. package/dist/src/ds/components/AgentIndicator/poses/knowledge-actions.d.ts +6 -0
  1596. package/dist/src/ds/components/AgentIndicator/poses/knowledge.d.ts +2 -0
  1597. package/dist/src/ds/components/AgentIndicator/poses/skills.d.ts +4 -0
  1598. package/dist/src/ds/components/AgentIndicator/poses/terminal.d.ts +4 -0
  1599. package/dist/src/ds/components/AgentIndicator/poses/thinking.d.ts +2 -0
  1600. package/dist/src/ds/components/AgentIndicator/poses.d.ts +1 -1
  1601. package/dist/src/ds/components/AgentIndicator/shapes.d.ts +7 -1
  1602. package/dist/src/ds/components/Breadcrumb/crumb-switcher.d.ts +1 -0
  1603. package/dist/src/ds/components/ChatShell/chat-shell-context.d.ts +9 -0
  1604. package/dist/src/ds/components/ChatShell/chat-shell.d.ts +5 -0
  1605. package/dist/src/ds/components/ChatShell/index.d.ts +2 -1
  1606. package/dist/src/ds/components/Combobox/combobox-parts.d.ts +2 -1
  1607. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +9 -4
  1608. package/dist/src/ds/components/Combobox/combobox.d.ts +4 -2
  1609. package/dist/src/ds/components/CommandPalette/command-palette.d.ts +1 -1
  1610. package/dist/src/ds/components/DateTimePicker/date-picker.d.ts +6 -1
  1611. package/dist/src/ds/components/DateTimePicker/index.d.ts +0 -1
  1612. package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +3 -2
  1613. package/dist/src/ds/components/Message/message-timestamp.d.ts +1 -0
  1614. package/dist/src/ds/components/MessageScroller/message-scroller-context.d.ts +3 -2
  1615. package/dist/src/ds/components/MessageScroller/message-scroller-geometry.d.ts +1 -1
  1616. package/dist/src/ds/components/MessageScroller/message-scroller-hooks.d.ts +2 -8
  1617. package/dist/src/ds/components/MessageScroller/message-scroller-visibility-store.d.ts +8 -0
  1618. package/dist/src/ds/components/Metadata/index.d.ts +2 -0
  1619. package/dist/src/ds/components/Metadata/metadata.d.ts +10 -0
  1620. package/dist/src/ds/components/MetricsCard/index.d.ts +1 -0
  1621. package/dist/src/ds/components/MetricsCard/metrics-card-drag-handle.d.ts +12 -0
  1622. package/dist/src/ds/components/MetricsCard/metrics-card.d.ts +2 -0
  1623. package/dist/src/ds/components/Steps/index.d.ts +1 -0
  1624. package/dist/src/ds/components/Steps/step.d.ts +13 -0
  1625. package/dist/src/ds/components/Steps/steps-context.d.ts +2 -0
  1626. package/dist/src/ds/components/Steps/steps-root.d.ts +18 -0
  1627. package/dist/src/ds/components/Steps/steps.d.ts +7 -0
  1628. package/dist/src/ds/components/ai/annotations/annotatable-selection.d.ts +25 -0
  1629. package/dist/src/ds/components/ai/annotations/annotation-comment-card.d.ts +11 -0
  1630. package/dist/src/ds/components/ai/annotations/annotation-comment-popover.d.ts +15 -0
  1631. package/dist/src/ds/components/ai/annotations/annotation-highlights.d.ts +1 -0
  1632. package/dist/src/ds/components/ai/annotations/annotation-marker.d.ts +13 -0
  1633. package/dist/src/ds/components/ai/annotations/annotation-markers.d.ts +9 -0
  1634. package/dist/src/ds/components/ai/annotations/annotation-number.d.ts +4 -0
  1635. package/dist/src/ds/components/ai/annotations/annotation-selection-toolbar.d.ts +7 -0
  1636. package/dist/src/ds/components/ai/annotations/chat-annotations.d.ts +27 -0
  1637. package/dist/src/ds/components/ai/annotations/composer-annotation-list.d.ts +6 -0
  1638. package/dist/src/ds/components/ai/annotations/composer-annotations.d.ts +5 -0
  1639. package/dist/src/ds/components/ai/annotations/format-annotated-message.d.ts +11 -0
  1640. package/dist/src/ds/components/ai/annotations/index.d.ts +5 -0
  1641. package/dist/src/ds/components/ai/annotations/transcript-annotations.d.ts +6 -0
  1642. package/dist/src/ds/components/ai/annotations/use-annotation-placement.d.ts +11 -0
  1643. package/dist/src/ds/components/ai/annotations/use-annotation-selection.d.ts +12 -0
  1644. package/dist/src/ds/components/ai/tool-call/index.d.ts +3 -0
  1645. package/dist/src/ds/components/ai/tool-call/tool-call-body.d.ts +6 -0
  1646. package/dist/src/ds/components/ai/tool-call/tool-call-exit-status.d.ts +11 -0
  1647. package/dist/src/ds/components/ai/tool-call/tool-call-output.d.ts +1 -2
  1648. package/dist/src/ds/components/ai/tool-call/tool-call-view.d.ts +17 -0
  1649. package/dist/src/ds/components/ai/tool-call/tool-phrases.d.ts +127 -138
  1650. package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +2 -0
  1651. package/dist/src/ds/components/ai/tool-call/tool-styles.d.ts +10 -0
  1652. package/dist/src/ds/components/ai/transcript-divider/transcript-divider.d.ts +2 -2
  1653. package/dist/src/ds/icons/ByteDanceIcon.d.ts +2 -0
  1654. package/dist/src/ds/icons/CohereBrandIcon.d.ts +2 -0
  1655. package/dist/src/ds/icons/FireworksIcon.d.ts +2 -0
  1656. package/dist/src/ds/icons/LongCatIcon.d.ts +2 -0
  1657. package/dist/src/ds/icons/MicrosoftIcon.d.ts +2 -0
  1658. package/dist/src/ds/icons/MorphIcon.d.ts +2 -0
  1659. package/dist/src/ds/icons/NousResearchIcon.d.ts +2 -0
  1660. package/dist/src/ds/icons/NovaIcon.d.ts +2 -0
  1661. package/dist/src/ds/icons/PerplexityIcon.d.ts +2 -0
  1662. package/dist/src/ds/icons/SakanaIcon.d.ts +2 -0
  1663. package/dist/src/ds/icons/StepFunIcon.d.ts +2 -0
  1664. package/dist/src/ds/icons/TencentIcon.d.ts +2 -0
  1665. package/dist/src/ds/icons/UpstageIcon.d.ts +2 -0
  1666. package/dist/src/ds/icons/index.d.ts +13 -0
  1667. package/dist/src/ds/tokens/colors.d.ts +12 -0
  1668. package/dist/src/ee/signals/sankey-signals-data.d.ts +2 -2
  1669. package/dist/src/ee/signals/snapshot-summary.d.ts +7 -0
  1670. package/dist/src/ee/signals/snapshot-timeline.d.ts +2 -1
  1671. package/dist/src/hooks/use-clock.d.ts +5 -0
  1672. package/dist/src/lib/resize/collapsible-panel.d.ts +5 -3
  1673. package/dist/src/lib/string.d.ts +1 -0
  1674. package/dist/{string-CNKDIc_4.js → string-CA5M0mj_.js} +5 -2
  1675. package/dist/{string-CNKDIc_4.js.map → string-CA5M0mj_.js.map} +1 -1
  1676. package/dist/{string-DdJJdCv2.cjs → string-EyTazW-F.cjs} +10 -1
  1677. package/dist/{string-DdJJdCv2.cjs.map → string-EyTazW-F.cjs.map} +1 -1
  1678. package/dist/style.css +321 -144
  1679. package/dist/{tabbed-container-B4lCBgRP.cjs → tabbed-container-Bhfi-DWr.cjs} +9 -9
  1680. package/dist/{tabbed-container-B4lCBgRP.cjs.map → tabbed-container-Bhfi-DWr.cjs.map} +1 -1
  1681. package/dist/{tabbed-container-DI1GI1Qv.js → tabbed-container-DOkHshha.js} +8 -8
  1682. package/dist/{tabbed-container-DI1GI1Qv.js.map → tabbed-container-DOkHshha.js.map} +1 -1
  1683. package/dist/{tabs-content-CmXe5ML0.cjs → tabs-content-BACwMrMG.cjs} +3 -3
  1684. package/dist/{tabs-content-CmXe5ML0.cjs.map → tabs-content-BACwMrMG.cjs.map} +1 -1
  1685. package/dist/{tabs-content-D__B9hd-.js → tabs-content-DwU_eA-a.js} +3 -3
  1686. package/dist/{tabs-content-D__B9hd-.js.map → tabs-content-DwU_eA-a.js.map} +1 -1
  1687. package/dist/{tabs-tab-CYTZevdV.js → tabs-tab-BHs639jL.js} +4 -4
  1688. package/dist/{tabs-tab-CYTZevdV.js.map → tabs-tab-BHs639jL.js.map} +1 -1
  1689. package/dist/{tabs-tab-DGwfHVDr.cjs → tabs-tab-CANh2eAD.cjs} +4 -4
  1690. package/dist/{tabs-tab-DGwfHVDr.cjs.map → tabs-tab-CANh2eAD.cjs.map} +1 -1
  1691. package/dist/{toast-api-D_rrRhNG.js → toast-api-Cak5N8pT.js} +2 -2
  1692. package/dist/{toast-api-D_rrRhNG.js.map → toast-api-Cak5N8pT.js.map} +1 -1
  1693. package/dist/{toast-api-qtkOucy2.cjs → toast-api-DDcGCbIw.cjs} +2 -2
  1694. package/dist/{toast-api-qtkOucy2.cjs.map → toast-api-DDcGCbIw.cjs.map} +1 -1
  1695. package/dist/tokens.cjs.js +12 -0
  1696. package/dist/tokens.cjs.js.map +1 -1
  1697. package/dist/tokens.es.js +12 -0
  1698. package/dist/tokens.es.js.map +1 -1
  1699. package/dist/{tool-approval-CJvPDL7D.cjs → tool-approval-CguPaikn.cjs} +7 -7
  1700. package/dist/{tool-approval-CJvPDL7D.cjs.map → tool-approval-CguPaikn.cjs.map} +1 -1
  1701. package/dist/{tool-approval-DyN11vFA.js → tool-approval-Cjz0yAzw.js} +7 -7
  1702. package/dist/{tool-approval-DyN11vFA.js.map → tool-approval-Cjz0yAzw.js.map} +1 -1
  1703. package/dist/tool-call-BqDI9mrY.cjs +600 -0
  1704. package/dist/tool-call-BqDI9mrY.cjs.map +1 -0
  1705. package/dist/tool-call-ChJKYCfu.js +505 -0
  1706. package/dist/tool-call-ChJKYCfu.js.map +1 -0
  1707. package/dist/{tool-card-BOLXeKIp.cjs → tool-card-Dg4VOYV6.cjs} +24 -15
  1708. package/dist/tool-card-Dg4VOYV6.cjs.map +1 -0
  1709. package/dist/{tool-card-HZ5bm7ue.js → tool-card-GSiCfxMz.js} +25 -16
  1710. package/dist/tool-card-GSiCfxMz.js.map +1 -0
  1711. package/dist/tool-presentation-C2bYQ7gB.js +874 -0
  1712. package/dist/tool-presentation-C2bYQ7gB.js.map +1 -0
  1713. package/dist/tool-presentation-DPp9h-n2.cjs +915 -0
  1714. package/dist/tool-presentation-DPp9h-n2.cjs.map +1 -0
  1715. package/dist/{tooltip-BiRLT3Th.cjs → tooltip-BsExuMO8.cjs} +2 -2
  1716. package/dist/{tooltip-BiRLT3Th.cjs.map → tooltip-BsExuMO8.cjs.map} +1 -1
  1717. package/dist/{tooltip-HzcLyGtV.js → tooltip-DJcze2VZ.js} +2 -2
  1718. package/dist/{tooltip-HzcLyGtV.js.map → tooltip-DJcze2VZ.js.map} +1 -1
  1719. package/dist/{transcript-divider-CvdgElIC.js → transcript-divider-DM2HkdeO.js} +5 -11
  1720. package/dist/transcript-divider-DM2HkdeO.js.map +1 -0
  1721. package/dist/{transcript-divider-CQ6sc3nt.cjs → transcript-divider-DroC3feH.cjs} +4 -10
  1722. package/dist/transcript-divider-DroC3feH.cjs.map +1 -0
  1723. package/dist/{use-workflow-graph-runtime-BKNhOKsH.js → use-workflow-graph-runtime-B3VUuhUE.js} +12 -12
  1724. package/dist/{use-workflow-graph-runtime-BKNhOKsH.js.map → use-workflow-graph-runtime-B3VUuhUE.js.map} +1 -1
  1725. package/dist/{use-workflow-graph-runtime-DYao-08R.cjs → use-workflow-graph-runtime-BfCL6nd4.cjs} +12 -12
  1726. package/dist/{use-workflow-graph-runtime-DYao-08R.cjs.map → use-workflow-graph-runtime-BfCL6nd4.cjs.map} +1 -1
  1727. package/dist/utils/string.cjs.js +2 -1
  1728. package/dist/utils/string.es.js +1 -1
  1729. package/dist/utils/toast.cjs.js +1 -1
  1730. package/dist/utils/toast.es.js +1 -1
  1731. package/oxlint/copy-rules.d.ts +4 -0
  1732. package/oxlint/copy-rules.js +29 -0
  1733. package/oxlint/copy-sources.js +223 -0
  1734. package/oxlint/index.d.ts +5 -0
  1735. package/oxlint/index.js +17 -0
  1736. package/package.json +13 -10
  1737. package/theme/data-viz.css +33 -0
  1738. package/dist/AgentIndicator-Bs2S8AWJ.js +0 -847
  1739. package/dist/AgentIndicator-Bs2S8AWJ.js.map +0 -1
  1740. package/dist/AgentIndicator-to30W73z.cjs +0 -864
  1741. package/dist/AgentIndicator-to30W73z.cjs.map +0 -1
  1742. package/dist/Button-CLXTbAY8.js.map +0 -1
  1743. package/dist/Button-DLcMcuUL.cjs.map +0 -1
  1744. package/dist/Composer-BcueJvdX.cjs.map +0 -1
  1745. package/dist/Composer-D1gF-0jZ.js.map +0 -1
  1746. package/dist/FilterBar-BSP2UTjc.cjs.map +0 -1
  1747. package/dist/FilterBar-PSQ1OwqH.js.map +0 -1
  1748. package/dist/Message-jj56lxNL.cjs.map +0 -1
  1749. package/dist/MessageScroller-CGsfTd1Z.cjs.map +0 -1
  1750. package/dist/MessageScroller-DvaKlm4O.js.map +0 -1
  1751. package/dist/MetricsCard-BEwiS7Pe.cjs.map +0 -1
  1752. package/dist/MetricsCard-ua6C6b8a.js.map +0 -1
  1753. package/dist/Workflow-C3SlEdP-.js.map +0 -1
  1754. package/dist/Workflow-DSWQ-ROz.cjs.map +0 -1
  1755. package/dist/activity-C8Ql81WM.js.map +0 -1
  1756. package/dist/activity-CcQZeDYi.cjs.map +0 -1
  1757. package/dist/combobox-D21no8t5.js.map +0 -1
  1758. package/dist/combobox-DIT_6xiG.cjs.map +0 -1
  1759. package/dist/combobox-parts-C4phOq4t.cjs.map +0 -1
  1760. package/dist/combobox-parts-D90ir0Py.js.map +0 -1
  1761. package/dist/date-time-range-picker-CWGjoR3j.cjs.map +0 -1
  1762. package/dist/date-time-range-picker-CdSiXwB4.js.map +0 -1
  1763. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +0 -29
  1764. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js.map +0 -1
  1765. package/dist/domains/chat/activity/components/activity-timed-trigger.d.ts +0 -1
  1766. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +0 -28
  1767. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js.map +0 -1
  1768. package/dist/domains/mcps/components/mcp-app-viewer.cjs.js.map +0 -1
  1769. package/dist/domains/mcps/components/mcp-app-viewer.es.js.map +0 -1
  1770. package/dist/page-header-BykBsHUy.js.map +0 -1
  1771. package/dist/src/domains/chat/activity/components/activity-timed-trigger.d.ts +0 -9
  1772. package/dist/src/ds/components/DateTimePicker/time-picker.d.ts +0 -7
  1773. package/dist/tool-call-DBn14X-3.cjs +0 -497
  1774. package/dist/tool-call-DBn14X-3.cjs.map +0 -1
  1775. package/dist/tool-call-Dsj43lvJ.js +0 -426
  1776. package/dist/tool-call-Dsj43lvJ.js.map +0 -1
  1777. package/dist/tool-card-BOLXeKIp.cjs.map +0 -1
  1778. package/dist/tool-card-HZ5bm7ue.js.map +0 -1
  1779. package/dist/tool-presentation-CvibOP1J.js +0 -256
  1780. package/dist/tool-presentation-CvibOP1J.js.map +0 -1
  1781. package/dist/tool-presentation-D6nzVruN.cjs +0 -291
  1782. package/dist/tool-presentation-D6nzVruN.cjs.map +0 -1
  1783. package/dist/transcript-divider-CQ6sc3nt.cjs.map +0 -1
  1784. package/dist/transcript-divider-CvdgElIC.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsKpiCard-By_-sagx.cjs","names":["ArrowUpRightIcon","ArrowDownRightIcon","cn","Tooltip","TooltipTrigger","Badge","TooltipContent","Txt","Txt","cn","cn","SkeletonText","Txt","cn","Txt","cn","Txt","Spinner","Txt","Txt","Txt","cn","Card","cn","cn","cn","Skeleton"],"sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-footer.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-header.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-prev.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value-row.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { ArrowDownRightIcon, ArrowUpRightIcon } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst compact = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\n// A change that rounds to 0.0% is no change: a neutral badge, no arrow.\nconst isFlat = (changePct: number) => Math.abs(changePct) < 0.05;\n\n// Green when the value moved the good way, red when it moved the bad way.\nfunction changeVariant(changePct: number, lowerIsBetter?: boolean) {\n if (isFlat(changePct)) return 'neutral';\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n return isGood ? 'success' : 'destructive';\n}\n\n// Past +1000% a percentage is unreadable, so show how many times bigger the value got instead.\nfunction formatChange(changePct: number) {\n if (isFlat(changePct)) return '0%';\n if (changePct >= 1000) return `×${compact.format(1 + changePct / 100)}`;\n const digits = Math.abs(changePct) < 10 ? 1 : 0;\n return `${changePct > 0 ? '+' : ''}${changePct.toFixed(digits)}%`;\n}\n\nexport function MetricsKpiCardChange({\n changePct,\n comparison = 'vs prior period',\n prevValue,\n lowerIsBetter,\n caption = false,\n className,\n}: {\n changePct: number;\n /** Names the window the change compares against, e.g. \"vs previous 7d\". Shown on hover. */\n comparison?: string;\n prevValue?: string;\n lowerIsBetter?: boolean;\n /** Show the comparison as inline text. Off by default: pair the badge with\n * `MetricsKpiCard.Footer`, which shows the prior value itself. */\n caption?: boolean;\n className?: string;\n}) {\n const flat = isFlat(changePct);\n const Icon = changePct >= 0 ? ArrowUpRightIcon : ArrowDownRightIcon;\n const formattedChange = formatChange(changePct);\n const description = prevValue ? `${comparison} (${prevValue})` : comparison;\n\n return (\n <div className={cn('flex items-center gap-1.5', className)}>\n <Tooltip>\n <TooltipTrigger render={<span tabIndex={0} className=\"inline-flex rounded-full\" />}>\n <Badge\n variant={changeVariant(changePct, lowerIsBetter)}\n emphasis=\"strong\"\n size=\"xs\"\n icon={flat ? undefined : <Icon />}\n className=\"tabular-nums\"\n aria-hidden=\"true\"\n >\n {formattedChange}\n </Badge>\n <span className=\"sr-only\">{`${formattedChange} ${description}`}</span>\n </TooltipTrigger>\n <TooltipContent>{description}</TooltipContent>\n </Tooltip>\n {caption ? (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" aria-hidden=\"true\">\n {comparison}\n </Txt>\n ) : null}\n </div>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" className={cn('text-destructive-foreground', className)}>\n {message}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SkeletonText } from '@/ds/components/Skeleton';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * Bottom row under a hairline: one line of context on the left (e.g. \"1.3K server errors\")\n * and the prior period's value on the right. Only worth its hairline when there is a detail\n * line; a card with just a prior value puts it in the value row (`MetricsKpiCard.Prev`).\n */\nexport function MetricsKpiCardFooter({\n detail,\n prevValue,\n isLoading = false,\n className,\n}: {\n detail: ReactNode;\n prevValue?: string;\n /** Skeletons in the detail's and prior value's line boxes, so the card keeps its height. */\n isLoading?: boolean;\n className?: string;\n}) {\n const frame = cn('mt-1 flex items-center justify-between gap-2 border-t border-border pt-2', className);\n if (isLoading) {\n return (\n <div className={frame}>\n <SkeletonText className=\"w-24\" />\n <SkeletonText className=\"w-14\" />\n </div>\n );\n }\n if (detail == null || detail === false || detail === '') return null;\n return (\n <div className={frame}>\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"min-w-0 truncate\">\n {detail}\n </Txt>\n {prevValue && (\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n vs {prevValue}\n </Txt>\n )}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardHeader({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex flex-wrap items-center gap-x-2 gap-y-1', className)}>{children}</div>;\n}\n","import type { ReactNode } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({\n children,\n icon,\n className,\n}: {\n children: string;\n /** Optional glyph shown at the far end of the label row (e.g. a lucide icon). */\n icon?: ReactNode;\n className?: string;\n}) {\n if (!icon) {\n return (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n }\n return (\n <span className={cn('flex items-center justify-between gap-2', className)}>\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\">\n {children}\n </Txt>\n <span aria-hidden className=\"shrink-0 text-muted-foreground [&>svg]:size-4\">\n {icon}\n </span>\n </span>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <Txt as=\"span\" className={className}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * The prior period's value, pushed to the end of the value row. Use it when the card has\n * no detail line; with one, pass `prevValue` to `MetricsKpiCard.Footer` instead.\n */\nexport function MetricsKpiCardPrev({ value, className }: { value: string; className?: string }) {\n return (\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n title={`vs ${value}`}\n // The value row keeps its children from shrinking; the prior value is the one part that\n // may give way in a narrow card, truncating with the full text in the title.\n className={cn('ml-auto min-w-0 shrink! truncate tabular-nums', className)}\n >\n vs {value}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport type MetricsKpiCardRootProps = {\n children: ReactNode;\n className?: string;\n /** The reading is loading or being replaced. */\n busy?: boolean;\n};\n\nexport function MetricsKpiCardRoot({ children, className, busy }: MetricsKpiCardRootProps) {\n return (\n <Card className={cn('min-w-72 flex-1 px-4 py-3', className)} aria-busy={busy || undefined}>\n <div className=\"grid gap-1.5\">{children}</div>\n </Card>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <strong className={cn('text-title text-foreground tabular-nums [text-box:trim-both_cap_alphabetic]', className)}>\n {children}\n </strong>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Skeleton } from '@/ds/components/Skeleton';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValueRow({\n children,\n isLoading = false,\n className,\n}: {\n children?: ReactNode;\n /** A value-sized skeleton in place of the value and its change badge. */\n isLoading?: boolean;\n className?: string;\n}) {\n return (\n <div className={cn('flex min-h-6 items-center gap-2 whitespace-nowrap *:shrink-0', className)}>\n {isLoading ? <Skeleton className=\"h-6 w-20\" /> : children}\n </div>\n );\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardFooter } from './metrics-kpi-card-footer';\nimport { MetricsKpiCardHeader } from './metrics-kpi-card-header';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardPrev } from './metrics-kpi-card-prev';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\nimport { MetricsKpiCardValueRow } from './metrics-kpi-card-value-row';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Header: MetricsKpiCardHeader,\n Label: MetricsKpiCardLabel,\n ValueRow: MetricsKpiCardValueRow,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n Footer: MetricsKpiCardFooter,\n Prev: MetricsKpiCardPrev,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"MetricsKpiCard-C_9GvRAp.cjs","names":["ArrowUpRightIcon","ArrowDownRightIcon","cn","Tooltip","TooltipTrigger","Badge","TooltipContent","Txt","Txt","cn","cn","SkeletonText","Txt","cn","Txt","cn","Txt","Spinner","Txt","Txt","Txt","cn","Card","cn","cn","cn","Skeleton"],"sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-footer.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-header.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-prev.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value-row.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { ArrowDownRightIcon, ArrowUpRightIcon } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst compact = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\n// A change that rounds to 0.0% is no change: a neutral badge, no arrow.\nconst isFlat = (changePct: number) => Math.abs(changePct) < 0.05;\n\n// Green when the value moved the good way, red when it moved the bad way.\nfunction changeVariant(changePct: number, lowerIsBetter?: boolean) {\n if (isFlat(changePct)) return 'neutral';\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n return isGood ? 'success' : 'destructive';\n}\n\n// Past +1000% a percentage is unreadable, so show how many times bigger the value got instead.\nfunction formatChange(changePct: number) {\n if (isFlat(changePct)) return '0%';\n if (changePct >= 1000) return `×${compact.format(1 + changePct / 100)}`;\n const digits = Math.abs(changePct) < 10 ? 1 : 0;\n return `${changePct > 0 ? '+' : ''}${changePct.toFixed(digits)}%`;\n}\n\nexport function MetricsKpiCardChange({\n changePct,\n comparison = 'vs prior period',\n prevValue,\n lowerIsBetter,\n caption = false,\n className,\n}: {\n changePct: number;\n /** Names the window the change compares against, e.g. \"vs previous 7d\". Shown on hover. */\n comparison?: string;\n prevValue?: string;\n lowerIsBetter?: boolean;\n /** Show the comparison as inline text. Off by default: pair the badge with\n * `MetricsKpiCard.Footer`, which shows the prior value itself. */\n caption?: boolean;\n className?: string;\n}) {\n const flat = isFlat(changePct);\n const Icon = changePct >= 0 ? ArrowUpRightIcon : ArrowDownRightIcon;\n const formattedChange = formatChange(changePct);\n const description = prevValue ? `${comparison} (${prevValue})` : comparison;\n\n return (\n <div className={cn('flex items-center gap-1.5', className)}>\n <Tooltip>\n <TooltipTrigger render={<span tabIndex={0} className=\"inline-flex rounded-full\" />}>\n <Badge\n variant={changeVariant(changePct, lowerIsBetter)}\n emphasis=\"strong\"\n size=\"xs\"\n icon={flat ? undefined : <Icon />}\n className=\"tabular-nums\"\n aria-hidden=\"true\"\n >\n {formattedChange}\n </Badge>\n <span className=\"sr-only\">{`${formattedChange} ${description}`}</span>\n </TooltipTrigger>\n <TooltipContent>{description}</TooltipContent>\n </Tooltip>\n {caption ? (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" aria-hidden=\"true\">\n {comparison}\n </Txt>\n ) : null}\n </div>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" className={cn('text-destructive-foreground', className)}>\n {message}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SkeletonText } from '@/ds/components/Skeleton';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * Bottom row under a hairline: one line of context on the left (e.g. \"1.3K server errors\")\n * and the prior period's value on the right. Only worth its hairline when there is a detail\n * line; a card with just a prior value puts it in the value row (`MetricsKpiCard.Prev`).\n */\nexport function MetricsKpiCardFooter({\n detail,\n prevValue,\n isLoading = false,\n className,\n}: {\n detail: ReactNode;\n prevValue?: string;\n /** Skeletons in the detail's and prior value's line boxes, so the card keeps its height. */\n isLoading?: boolean;\n className?: string;\n}) {\n const frame = cn('mt-1 flex items-center justify-between gap-2 border-t border-border pt-2', className);\n if (isLoading) {\n return (\n <div className={frame}>\n <SkeletonText className=\"w-24\" />\n <SkeletonText className=\"w-14\" />\n </div>\n );\n }\n if (detail == null || detail === false || detail === '') return null;\n return (\n <div className={frame}>\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"min-w-0 truncate\">\n {detail}\n </Txt>\n {prevValue && (\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n vs {prevValue}\n </Txt>\n )}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardHeader({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex flex-wrap items-center gap-x-2 gap-y-1', className)}>{children}</div>;\n}\n","import type { ReactNode } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({\n children,\n icon,\n className,\n}: {\n children: string;\n /** Optional glyph shown at the far end of the label row (e.g. a lucide icon). */\n icon?: ReactNode;\n className?: string;\n}) {\n if (!icon) {\n return (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n }\n return (\n <span className={cn('flex items-center justify-between gap-2', className)}>\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\">\n {children}\n </Txt>\n <span aria-hidden className=\"shrink-0 text-muted-foreground [&>svg]:size-4\">\n {icon}\n </span>\n </span>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <Txt as=\"span\" className={className}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * The prior period's value, pushed to the end of the value row. Use it when the card has\n * no detail line; with one, pass `prevValue` to `MetricsKpiCard.Footer` instead.\n */\nexport function MetricsKpiCardPrev({ value, className }: { value: string; className?: string }) {\n return (\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n title={`vs ${value}`}\n // The value row keeps its children from shrinking; the prior value is the one part that\n // may give way in a narrow card, truncating with the full text in the title.\n className={cn('ml-auto min-w-0 shrink! truncate tabular-nums', className)}\n >\n vs {value}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport type MetricsKpiCardRootProps = {\n children: ReactNode;\n className?: string;\n /** The reading is loading or being replaced. */\n busy?: boolean;\n};\n\nexport function MetricsKpiCardRoot({ children, className, busy }: MetricsKpiCardRootProps) {\n return (\n <Card className={cn('min-w-72 flex-1 px-4 py-3', className)} aria-busy={busy || undefined}>\n <div className=\"grid gap-1.5\">{children}</div>\n </Card>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <strong className={cn('text-title text-foreground tabular-nums [text-box:trim-both_cap_alphabetic]', className)}>\n {children}\n </strong>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Skeleton } from '@/ds/components/Skeleton';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValueRow({\n children,\n isLoading = false,\n className,\n}: {\n children?: ReactNode;\n /** A value-sized skeleton in place of the value and its change badge. */\n isLoading?: boolean;\n className?: string;\n}) {\n return (\n <div className={cn('flex min-h-6 items-center gap-2 whitespace-nowrap *:shrink-0', className)}>\n {isLoading ? <Skeleton className=\"h-6 w-20\" /> : children}\n </div>\n );\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardFooter } from './metrics-kpi-card-footer';\nimport { MetricsKpiCardHeader } from './metrics-kpi-card-header';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardPrev } from './metrics-kpi-card-prev';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\nimport { MetricsKpiCardValueRow } from './metrics-kpi-card-value-row';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Header: MetricsKpiCardHeader,\n Label: MetricsKpiCardLabel,\n ValueRow: MetricsKpiCardValueRow,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n Footer: MetricsKpiCardFooter,\n Prev: MetricsKpiCardPrev,\n});\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
+ import { t as Txt } from "./Txt-5efBsb2p.js";
1
2
  import { t as cn } from "./utils-DQx8TpNT.js";
2
- import { t as Txt } from "./Txt-BM6TVV_c.js";
3
3
  import { ChartTooltip } from "./components/ChartTooltip.es.js";
4
- import { CHART_MARGIN } from "./primitives/chart-layout.es.js";
5
4
  import { ChartSkeleton } from "./components/ChartSkeleton.es.js";
6
5
  import { CHART_CURSOR_PROPS, CHART_GRID_PROPS, CHART_TOOLTIP_PROPS, useChartSize } from "./primitives/chart-axes.es.js";
7
6
  import { compactNumber, dataMax, isWholeData, timeXAxis, valueYAxis } from "./primitives/chart-frame.es.js";
7
+ import { CHART_MARGIN } from "./primitives/chart-layout.es.js";
8
8
  import { ChartPlot } from "./primitives/chart-plot.es.js";
9
9
  import { ChartTooltipPosition } from "./primitives/chart-tooltip-position.es.js";
10
10
  import { useChartDefsId } from "./primitives/use-chart-defs-id.es.js";
@@ -259,4 +259,4 @@ function isRecord(value) {
259
259
  }
260
260
  export { MetricsLineChartTooltip as n, MetricsLineChartLegend as r, MetricsLineChart as t };
261
261
 
262
- //# sourceMappingURL=MetricsLineChart-4SwxBbQx.js.map
262
+ //# sourceMappingURL=MetricsLineChart-4w5lpH63.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsLineChart-4SwxBbQx.js","names":[],"sources":["../src/ds/components/MetricsLineChart/metrics-line-chart-legend.tsx","../src/ds/components/MetricsLineChart/metrics-line-chart-tooltip.tsx","../src/ds/components/MetricsLineChart/metrics-line-chart.tsx"],"sourcesContent":["import type { MetricsLineChartSeries } from './metrics-line-chart';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/** A marker and a label per series. Totals belong in the card's header, not here. */\nexport function MetricsLineChartLegend({\n series,\n className,\n}: {\n series: Pick<MetricsLineChartSeries, 'dataKey' | 'label' | 'color' | 'dashed'>[];\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-wrap items-center gap-x-4 gap-y-1', className)}>\n {series.map(s => (\n <div key={s.dataKey} className=\"inline-flex items-center gap-1.5\">\n {s.dashed ? (\n <span className=\"h-0 w-3 shrink-0 border-t-2 border-dashed\" style={{ borderColor: s.color }} />\n ) : (\n <div className=\"size-2 shrink-0 rounded-[2px]\" style={{ backgroundColor: s.color }} />\n )}\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"max-w-48 truncate\">\n {s.label}\n </Txt>\n </div>\n ))}\n </div>\n );\n}\n","import { ChartTooltip } from '@/ds/components/ChartTooltip';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsLineChartTooltip({\n active,\n payload,\n label,\n suffix,\n formatValue = value => value.toLocaleString('en-US'),\n showTotal = false,\n labelKey,\n formatByKey,\n}: {\n active?: boolean;\n payload?: Array<{\n name: string;\n value: number;\n color: string;\n dataKey?: string | number;\n payload?: Record<string, unknown>;\n }>;\n label?: string;\n suffix?: string;\n formatValue?: (value: number) => string;\n /** Adds a \"Total\" row under a hairline: the sum of every row, e.g. a stacked column's height. */\n showTotal?: boolean;\n /** Read the heading from this field of the hovered row instead of the x-axis label. */\n labelKey?: string;\n /** Per-series formatters, by data key, for charts that mix units (counts and durations). */\n formatByKey?: Record<string, (value: number) => string>;\n}) {\n if (!active || !payload?.length) return null;\n // A missing reading (NaN, Infinity) shows as a dash and stays out of the total.\n const finite = (value: unknown): value is number => typeof value === 'number' && Number.isFinite(value);\n const total = payload.reduce((sum, entry) => sum + (finite(entry.value) ? entry.value : 0), 0);\n // A bucket with no readings at all totals to a dash, not 0.\n const hasReading = payload.some(entry => finite(entry.value));\n const heading = labelKey ? String(payload[0]?.payload?.[labelKey] ?? label ?? '') : label;\n const format = (entry: { dataKey?: string | number }) => formatByKey?.[String(entry.dataKey)] ?? formatValue;\n // A number through its formatter; a missing or non-finite one as a dash; text as it is.\n const reading = (entry: (typeof payload)[number]) => {\n if (finite(entry.value)) return format(entry)(entry.value);\n if (typeof entry.value === 'number' || entry.value == null) return '—';\n return entry.value;\n };\n return (\n // A floor like shadcn's chart tooltip, so short readouts don't size it to their own label.\n <ChartTooltip className=\"min-w-32\">\n <Txt variant=\"column\" tone=\"ink\" className=\"mb-1\">\n {heading}\n </Txt>\n <div className=\"grid grid-cols-[auto_1fr_auto] items-center gap-x-2 gap-y-1\">\n {payload.map(entry => (\n <div key={entry.name} className=\"contents\">\n <span className=\"size-2 rounded-[2px]\" style={{ backgroundColor: entry.color }} />\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"max-w-40 truncate\">\n {entry.name}\n </Txt>\n <span className=\"text-right font-mono text-foreground tabular-nums\">\n {reading(entry)}\n {finite(entry.value) && suffix}\n </span>\n </div>\n ))}\n {showTotal && (\n <div className=\"col-span-3 grid grid-cols-subgrid items-center border-t border-border pt-1\">\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"col-span-2\">\n Total\n </Txt>\n <span className=\"text-right font-mono text-foreground tabular-nums\">\n {hasReading ? formatValue(total) : '—'}\n {hasReading && suffix}\n </span>\n </div>\n )}\n </div>\n </ChartTooltip>\n );\n}\n","import { Area, CartesianGrid, ComposedChart, Line, ReferenceLine, Tooltip } from 'recharts';\nimport { MetricsLineChartLegend } from './metrics-line-chart-legend';\nimport { MetricsLineChartTooltip } from './metrics-line-chart-tooltip';\nimport { ChartSkeleton } from '@/ds/components/ChartSkeleton';\nimport { CHART_CURSOR_PROPS, CHART_GRID_PROPS, CHART_TOOLTIP_PROPS, useChartSize } from '@/ds/primitives/chart-axes';\nimport type { ChartXLabels } from '@/ds/primitives/chart-axes';\nimport { Y_AXIS_WIDTH, compactNumber, dataMax, isWholeData, timeXAxis, valueYAxis } from '@/ds/primitives/chart-frame';\nimport type { ChartHeight } from '@/ds/primitives/chart-frame';\nimport { CHART_MARGIN } from '@/ds/primitives/chart-layout';\nimport { ChartPlot } from '@/ds/primitives/chart-plot';\nimport { ChartTooltipPosition } from '@/ds/primitives/chart-tooltip-position';\nimport { useChartDefsId } from '@/ds/primitives/use-chart-defs-id';\nimport { cn } from '@/lib/utils';\n\nexport type MetricsLineChartSeries = {\n dataKey: string;\n label: string;\n color: string;\n /** A secondary reading (e.g. an average next to counts): dashed, no fill under it. */\n dashed?: boolean;\n /** The series to read first (e.g. P95 among percentiles): a slightly heavier line. */\n emphasis?: boolean;\n};\n\n/** Line weight; an emphasised series adds half a pixel. */\nconst LINE_WIDTH = 1.75;\n/** Opacity at the top of the fill under a line (it fades to nothing at the base). */\nconst AREA_OPACITY = 0.12;\n\n/**\n * How the series draw.\n * - `default`: 1.75px lines over a fill.\n * - `thin`: 1.5px lines (emphasis included) over a fainter fill (40% of the default), for small\n * cards in a grid.\n */\nexport type MetricsLineChartLineStyle = 'default' | 'thin';\n\nconst LINE_STYLES: Record<MetricsLineChartLineStyle, { width: number; emphasis: number; areaOpacity: number }> = {\n default: { width: LINE_WIDTH, emphasis: LINE_WIDTH + 0.5, areaOpacity: AREA_OPACITY },\n thin: { width: 1.5, emphasis: 1.5, areaOpacity: AREA_OPACITY * 0.4 },\n};\n\n/**\n * Fills fade out sideways over their first and last 24px, so they don't end in a hard vertical\n * edge where the line starts and stops. A mask sized to each fill's own box.\n */\nconst THIN_FILL_FADE = '[&_.recharts-area-area]:mask-x-from-[calc(100%-24px)]';\n/** A lone point draws no line at all, so it gets a dot; lines already bridge gaps (`connectNulls`). */\nconst SPARSE_POINTS = 1;\n\n// Jumps straight to the hovered point, with the dots and the tooltip.\nfunction HoverLine({ points }: { points?: { x: number; y: number }[] }) {\n const [top, bottom] = points ?? [];\n if (!top || !bottom) return null;\n return (\n <line x1={top.x} x2={top.x} y1={top.y} y2={bottom.y} {...CHART_CURSOR_PROPS} className=\"pointer-events-none\" />\n );\n}\n\nexport type MetricsLineChartPointClickHandler = (point: Record<string, unknown>, seriesKey: string) => void;\n\nexport type MetricsLineChartProps = {\n data: Record<string, unknown>[];\n series: MetricsLineChartSeries[];\n /** Pixels, or `fill` to grow with the parent (a flex column, e.g. a card's content). */\n height?: ChartHeight;\n yDomain?: [number, number];\n /** Click on a series' active dot. */\n onPointClick?: MetricsLineChartPointClickHandler;\n /** Click anywhere on a bucket (e.g. to open its traces); the plot shows a pointer cursor. */\n onBucketClick?: (row: Record<string, unknown>, index: number) => void;\n /** Row field printed under the x-axis. */\n xKey?: string;\n /** Row field with the bucket's start time (ms), which places labels on round clock times. */\n timestampKey?: string;\n /** `auto` fits as many labels as the width allows; `edges` prints only the first and last. */\n xLabels?: ChartXLabels;\n /** Row field for the tooltip heading (e.g. a longer date); defaults to the x-axis label. */\n tooltipLabelKey?: string;\n /** Render a visible dot on every point. A series with a single point gets one anyway. */\n showDots?: boolean;\n /**\n * Point markers. `auto`: on a series' lone point (or every point with `showDots`). `hover`:\n * none at rest, only the hovered point's.\n */\n dots?: 'auto' | 'hover';\n /** Line weight and fill. `thin` suits small cards in a grid. */\n lineStyle?: MetricsLineChartLineStyle;\n /** Set to `false` to render `MetricsLineChartLegend` elsewhere, e.g. next to tabs. */\n showLegend?: boolean;\n /** Formats tooltip values (e.g. `ms`, `%`), and y-axis ticks unless `axisFormatter` is set. */\n valueFormatter?: (value: number) => string;\n /** Formats y-axis ticks, when they need a shorter form than the tooltip. */\n axisFormatter?: (value: number) => string;\n /**\n * Set to `false` to drop the y-axis labels and let the plot span the card. The gridlines stay\n * for relative scale; exact values come from the tooltip and the card's summary.\n */\n showYAxis?: boolean;\n /** Show a ghost of the chart while data loads, in the chart's own footprint. */\n isLoading?: boolean;\n /**\n * Vertical lines at buckets, e.g. where a billing period starts. `x` must be one of the data's\n * `xKey` values: the axis is categorical, so any other value draws nothing.\n */\n markers?: { x: string; label?: string }[];\n className?: string;\n};\n\nexport function MetricsLineChart(props: MetricsLineChartProps) {\n const { data, series, height = 210, showLegend = true, isLoading = false, className } = props;\n const root = cn(height === 'fill' && 'flex min-h-0 flex-1 flex-col', className);\n // The legend stays while loading: it comes from the series, not the data.\n return (\n <div className={root}>\n {showLegend && <MetricsLineChartLegend series={series} className=\"mb-4\" />}\n {isLoading ? <ChartSkeleton kind=\"line\" height={height} /> : <LinePlot {...props} />}\n </div>\n );\n}\n\n/** The plot itself, once the data is in. */\nfunction LinePlot({\n data,\n series,\n height = 210,\n yDomain,\n onPointClick,\n onBucketClick,\n xKey = 'time',\n timestampKey = 'tsMs',\n xLabels = 'auto',\n tooltipLabelKey,\n showDots = false,\n dots = 'auto',\n lineStyle = 'default',\n valueFormatter,\n axisFormatter,\n showYAxis = true,\n markers = [],\n}: MetricsLineChartProps) {\n const id = useChartDefsId();\n const { size, onResize, ref } = useChartSize();\n\n const format = valueFormatter ?? compactNumber.format;\n const isSparse = (key: string) => data.filter(row => typeof row[key] === 'number').length <= SPARSE_POINTS;\n const plotWidth = size.width - (showYAxis ? Y_AXIS_WIDTH : 0);\n const line = LINE_STYLES[lineStyle];\n const restDot = (s: MetricsLineChartSeries) =>\n dots === 'auto' && (showDots || isSparse(s.dataKey)) ? { r: 3, fill: s.color, strokeWidth: 0 } : false;\n const activeDot = (s: MetricsLineChartSeries) => ({\n r: 3.5,\n fill: s.color,\n stroke: 'var(--background)',\n strokeWidth: 2,\n ...(onPointClick && {\n style: { cursor: 'pointer' },\n onClick: (_: unknown, payload: unknown) => {\n // Recharts passes the dot's props; the hovered row is under `payload`.\n if (isRecord(payload) && isRecord(payload.payload)) onPointClick(payload.payload, s.dataKey);\n },\n }),\n });\n\n return (\n <ChartPlot\n height={height}\n plotRef={ref}\n onResize={onResize}\n clickable={!!onBucketClick}\n className={cn(lineStyle === 'thin' && THIN_FILL_FADE)}\n >\n <ComposedChart\n data={data}\n margin={CHART_MARGIN}\n onClick={state => {\n const i = state?.activeTooltipIndex;\n const row = i === undefined || i === null ? undefined : data[Number(i)];\n if (onBucketClick && row) onBucketClick(row, Number(i));\n }}\n >\n <defs>\n {series.map((s, i) => (\n <linearGradient key={s.dataKey} id={`${id}-area-${i}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={s.color} stopOpacity={line.areaOpacity} />\n <stop offset=\"95%\" stopColor={s.color} stopOpacity={0} />\n </linearGradient>\n ))}\n </defs>\n <CartesianGrid {...CHART_GRID_PROPS} />\n {timeXAxis({ data, xKey, timestampKey, xLabels, plotWidth })}\n {valueYAxis({\n show: showYAxis,\n size,\n formatter: axisFormatter ?? format,\n domain: yDomain,\n max: dataMax(\n data,\n series.map(s => s.dataKey),\n ),\n integer: isWholeData(\n data,\n series.map(s => s.dataKey),\n ),\n })}\n {markers.map(m => (\n <ReferenceLine\n key={m.x}\n x={m.x}\n stroke=\"var(--border-strong)\"\n strokeDasharray=\"3 3\"\n label={\n m.label\n ? { value: m.label, position: 'insideTopLeft', fill: 'var(--muted-foreground)', fontSize: 11 }\n : undefined\n }\n />\n ))}\n <Tooltip\n {...CHART_TOOLTIP_PROPS}\n content={\n <ChartTooltipPosition>\n <MetricsLineChartTooltip formatValue={format} labelKey={tooltipLabelKey} />\n </ChartTooltipPosition>\n }\n cursor={<HoverLine />}\n />\n {series.map((s, i) => {\n const common = {\n type: 'monotone' as const,\n dataKey: s.dataKey,\n name: s.label,\n stroke: s.color,\n strokeWidth: s.emphasis ? line.emphasis : line.width,\n strokeDasharray: s.dashed ? '4 3' : undefined,\n dot: restDot(s),\n activeDot: activeDot(s),\n isAnimationActive: false,\n connectNulls: true,\n };\n return s.dashed ? (\n <Line key={s.dataKey} {...common} />\n ) : (\n <Area key={s.dataKey} {...common} fill={`url(#${id}-area-${i})`} fillOpacity={1} />\n );\n })}\n </ComposedChart>\n </ChartPlot>\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MetricsLineChart-4w5lpH63.js","names":[],"sources":["../src/ds/components/MetricsLineChart/metrics-line-chart-legend.tsx","../src/ds/components/MetricsLineChart/metrics-line-chart-tooltip.tsx","../src/ds/components/MetricsLineChart/metrics-line-chart.tsx"],"sourcesContent":["import type { MetricsLineChartSeries } from './metrics-line-chart';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/** A marker and a label per series. Totals belong in the card's header, not here. */\nexport function MetricsLineChartLegend({\n series,\n className,\n}: {\n series: Pick<MetricsLineChartSeries, 'dataKey' | 'label' | 'color' | 'dashed'>[];\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-wrap items-center gap-x-4 gap-y-1', className)}>\n {series.map(s => (\n <div key={s.dataKey} className=\"inline-flex items-center gap-1.5\">\n {s.dashed ? (\n <span className=\"h-0 w-3 shrink-0 border-t-2 border-dashed\" style={{ borderColor: s.color }} />\n ) : (\n <div className=\"size-2 shrink-0 rounded-[2px]\" style={{ backgroundColor: s.color }} />\n )}\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"max-w-48 truncate\">\n {s.label}\n </Txt>\n </div>\n ))}\n </div>\n );\n}\n","import { ChartTooltip } from '@/ds/components/ChartTooltip';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsLineChartTooltip({\n active,\n payload,\n label,\n suffix,\n formatValue = value => value.toLocaleString('en-US'),\n showTotal = false,\n labelKey,\n formatByKey,\n}: {\n active?: boolean;\n payload?: Array<{\n name: string;\n value: number;\n color: string;\n dataKey?: string | number;\n payload?: Record<string, unknown>;\n }>;\n label?: string;\n suffix?: string;\n formatValue?: (value: number) => string;\n /** Adds a \"Total\" row under a hairline: the sum of every row, e.g. a stacked column's height. */\n showTotal?: boolean;\n /** Read the heading from this field of the hovered row instead of the x-axis label. */\n labelKey?: string;\n /** Per-series formatters, by data key, for charts that mix units (counts and durations). */\n formatByKey?: Record<string, (value: number) => string>;\n}) {\n if (!active || !payload?.length) return null;\n // A missing reading (NaN, Infinity) shows as a dash and stays out of the total.\n const finite = (value: unknown): value is number => typeof value === 'number' && Number.isFinite(value);\n const total = payload.reduce((sum, entry) => sum + (finite(entry.value) ? entry.value : 0), 0);\n // A bucket with no readings at all totals to a dash, not 0.\n const hasReading = payload.some(entry => finite(entry.value));\n const heading = labelKey ? String(payload[0]?.payload?.[labelKey] ?? label ?? '') : label;\n const format = (entry: { dataKey?: string | number }) => formatByKey?.[String(entry.dataKey)] ?? formatValue;\n // A number through its formatter; a missing or non-finite one as a dash; text as it is.\n const reading = (entry: (typeof payload)[number]) => {\n if (finite(entry.value)) return format(entry)(entry.value);\n if (typeof entry.value === 'number' || entry.value == null) return '—';\n return entry.value;\n };\n return (\n // A floor like shadcn's chart tooltip, so short readouts don't size it to their own label.\n <ChartTooltip className=\"min-w-32\">\n <Txt variant=\"column\" tone=\"ink\" className=\"mb-1\">\n {heading}\n </Txt>\n <div className=\"grid grid-cols-[auto_1fr_auto] items-center gap-x-2 gap-y-1\">\n {payload.map(entry => (\n <div key={entry.name} className=\"contents\">\n <span className=\"size-2 rounded-[2px]\" style={{ backgroundColor: entry.color }} />\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"max-w-40 truncate\">\n {entry.name}\n </Txt>\n <span className=\"text-right font-mono text-foreground tabular-nums\">\n {reading(entry)}\n {finite(entry.value) && suffix}\n </span>\n </div>\n ))}\n {showTotal && (\n <div className=\"col-span-3 grid grid-cols-subgrid items-center border-t border-border pt-1\">\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"col-span-2\">\n Total\n </Txt>\n <span className=\"text-right font-mono text-foreground tabular-nums\">\n {hasReading ? formatValue(total) : '—'}\n {hasReading && suffix}\n </span>\n </div>\n )}\n </div>\n </ChartTooltip>\n );\n}\n","import { Area, CartesianGrid, ComposedChart, Line, ReferenceLine, Tooltip } from 'recharts';\nimport { MetricsLineChartLegend } from './metrics-line-chart-legend';\nimport { MetricsLineChartTooltip } from './metrics-line-chart-tooltip';\nimport { ChartSkeleton } from '@/ds/components/ChartSkeleton';\nimport { CHART_CURSOR_PROPS, CHART_GRID_PROPS, CHART_TOOLTIP_PROPS, useChartSize } from '@/ds/primitives/chart-axes';\nimport type { ChartXLabels } from '@/ds/primitives/chart-axes';\nimport { Y_AXIS_WIDTH, compactNumber, dataMax, isWholeData, timeXAxis, valueYAxis } from '@/ds/primitives/chart-frame';\nimport type { ChartHeight } from '@/ds/primitives/chart-frame';\nimport { CHART_MARGIN } from '@/ds/primitives/chart-layout';\nimport { ChartPlot } from '@/ds/primitives/chart-plot';\nimport { ChartTooltipPosition } from '@/ds/primitives/chart-tooltip-position';\nimport { useChartDefsId } from '@/ds/primitives/use-chart-defs-id';\nimport { cn } from '@/lib/utils';\n\nexport type MetricsLineChartSeries = {\n dataKey: string;\n label: string;\n color: string;\n /** A secondary reading (e.g. an average next to counts): dashed, no fill under it. */\n dashed?: boolean;\n /** The series to read first (e.g. P95 among percentiles): a slightly heavier line. */\n emphasis?: boolean;\n};\n\n/** Line weight; an emphasised series adds half a pixel. */\nconst LINE_WIDTH = 1.75;\n/** Opacity at the top of the fill under a line (it fades to nothing at the base). */\nconst AREA_OPACITY = 0.12;\n\n/**\n * How the series draw.\n * - `default`: 1.75px lines over a fill.\n * - `thin`: 1.5px lines (emphasis included) over a fainter fill (40% of the default), for small\n * cards in a grid.\n */\nexport type MetricsLineChartLineStyle = 'default' | 'thin';\n\nconst LINE_STYLES: Record<MetricsLineChartLineStyle, { width: number; emphasis: number; areaOpacity: number }> = {\n default: { width: LINE_WIDTH, emphasis: LINE_WIDTH + 0.5, areaOpacity: AREA_OPACITY },\n thin: { width: 1.5, emphasis: 1.5, areaOpacity: AREA_OPACITY * 0.4 },\n};\n\n/**\n * Fills fade out sideways over their first and last 24px, so they don't end in a hard vertical\n * edge where the line starts and stops. A mask sized to each fill's own box.\n */\nconst THIN_FILL_FADE = '[&_.recharts-area-area]:mask-x-from-[calc(100%-24px)]';\n/** A lone point draws no line at all, so it gets a dot; lines already bridge gaps (`connectNulls`). */\nconst SPARSE_POINTS = 1;\n\n// Jumps straight to the hovered point, with the dots and the tooltip.\nfunction HoverLine({ points }: { points?: { x: number; y: number }[] }) {\n const [top, bottom] = points ?? [];\n if (!top || !bottom) return null;\n return (\n <line x1={top.x} x2={top.x} y1={top.y} y2={bottom.y} {...CHART_CURSOR_PROPS} className=\"pointer-events-none\" />\n );\n}\n\nexport type MetricsLineChartPointClickHandler = (point: Record<string, unknown>, seriesKey: string) => void;\n\nexport type MetricsLineChartProps = {\n data: Record<string, unknown>[];\n series: MetricsLineChartSeries[];\n /** Pixels, or `fill` to grow with the parent (a flex column, e.g. a card's content). */\n height?: ChartHeight;\n yDomain?: [number, number];\n /** Click on a series' active dot. */\n onPointClick?: MetricsLineChartPointClickHandler;\n /** Click anywhere on a bucket (e.g. to open its traces); the plot shows a pointer cursor. */\n onBucketClick?: (row: Record<string, unknown>, index: number) => void;\n /** Row field printed under the x-axis. */\n xKey?: string;\n /** Row field with the bucket's start time (ms), which places labels on round clock times. */\n timestampKey?: string;\n /** `auto` fits as many labels as the width allows; `edges` prints only the first and last. */\n xLabels?: ChartXLabels;\n /** Row field for the tooltip heading (e.g. a longer date); defaults to the x-axis label. */\n tooltipLabelKey?: string;\n /** Render a visible dot on every point. A series with a single point gets one anyway. */\n showDots?: boolean;\n /**\n * Point markers. `auto`: on a series' lone point (or every point with `showDots`). `hover`:\n * none at rest, only the hovered point's.\n */\n dots?: 'auto' | 'hover';\n /** Line weight and fill. `thin` suits small cards in a grid. */\n lineStyle?: MetricsLineChartLineStyle;\n /** Set to `false` to render `MetricsLineChartLegend` elsewhere, e.g. next to tabs. */\n showLegend?: boolean;\n /** Formats tooltip values (e.g. `ms`, `%`), and y-axis ticks unless `axisFormatter` is set. */\n valueFormatter?: (value: number) => string;\n /** Formats y-axis ticks, when they need a shorter form than the tooltip. */\n axisFormatter?: (value: number) => string;\n /**\n * Set to `false` to drop the y-axis labels and let the plot span the card. The gridlines stay\n * for relative scale; exact values come from the tooltip and the card's summary.\n */\n showYAxis?: boolean;\n /** Show a ghost of the chart while data loads, in the chart's own footprint. */\n isLoading?: boolean;\n /**\n * Vertical lines at buckets, e.g. where a billing period starts. `x` must be one of the data's\n * `xKey` values: the axis is categorical, so any other value draws nothing.\n */\n markers?: { x: string; label?: string }[];\n className?: string;\n};\n\nexport function MetricsLineChart(props: MetricsLineChartProps) {\n const { data, series, height = 210, showLegend = true, isLoading = false, className } = props;\n const root = cn(height === 'fill' && 'flex min-h-0 flex-1 flex-col', className);\n // The legend stays while loading: it comes from the series, not the data.\n return (\n <div className={root}>\n {showLegend && <MetricsLineChartLegend series={series} className=\"mb-4\" />}\n {isLoading ? <ChartSkeleton kind=\"line\" height={height} /> : <LinePlot {...props} />}\n </div>\n );\n}\n\n/** The plot itself, once the data is in. */\nfunction LinePlot({\n data,\n series,\n height = 210,\n yDomain,\n onPointClick,\n onBucketClick,\n xKey = 'time',\n timestampKey = 'tsMs',\n xLabels = 'auto',\n tooltipLabelKey,\n showDots = false,\n dots = 'auto',\n lineStyle = 'default',\n valueFormatter,\n axisFormatter,\n showYAxis = true,\n markers = [],\n}: MetricsLineChartProps) {\n const id = useChartDefsId();\n const { size, onResize, ref } = useChartSize();\n\n const format = valueFormatter ?? compactNumber.format;\n const isSparse = (key: string) => data.filter(row => typeof row[key] === 'number').length <= SPARSE_POINTS;\n const plotWidth = size.width - (showYAxis ? Y_AXIS_WIDTH : 0);\n const line = LINE_STYLES[lineStyle];\n const restDot = (s: MetricsLineChartSeries) =>\n dots === 'auto' && (showDots || isSparse(s.dataKey)) ? { r: 3, fill: s.color, strokeWidth: 0 } : false;\n const activeDot = (s: MetricsLineChartSeries) => ({\n r: 3.5,\n fill: s.color,\n stroke: 'var(--background)',\n strokeWidth: 2,\n ...(onPointClick && {\n style: { cursor: 'pointer' },\n onClick: (_: unknown, payload: unknown) => {\n // Recharts passes the dot's props; the hovered row is under `payload`.\n if (isRecord(payload) && isRecord(payload.payload)) onPointClick(payload.payload, s.dataKey);\n },\n }),\n });\n\n return (\n <ChartPlot\n height={height}\n plotRef={ref}\n onResize={onResize}\n clickable={!!onBucketClick}\n className={cn(lineStyle === 'thin' && THIN_FILL_FADE)}\n >\n <ComposedChart\n data={data}\n margin={CHART_MARGIN}\n onClick={state => {\n const i = state?.activeTooltipIndex;\n const row = i === undefined || i === null ? undefined : data[Number(i)];\n if (onBucketClick && row) onBucketClick(row, Number(i));\n }}\n >\n <defs>\n {series.map((s, i) => (\n <linearGradient key={s.dataKey} id={`${id}-area-${i}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={s.color} stopOpacity={line.areaOpacity} />\n <stop offset=\"95%\" stopColor={s.color} stopOpacity={0} />\n </linearGradient>\n ))}\n </defs>\n <CartesianGrid {...CHART_GRID_PROPS} />\n {timeXAxis({ data, xKey, timestampKey, xLabels, plotWidth })}\n {valueYAxis({\n show: showYAxis,\n size,\n formatter: axisFormatter ?? format,\n domain: yDomain,\n max: dataMax(\n data,\n series.map(s => s.dataKey),\n ),\n integer: isWholeData(\n data,\n series.map(s => s.dataKey),\n ),\n })}\n {markers.map(m => (\n <ReferenceLine\n key={m.x}\n x={m.x}\n stroke=\"var(--border-strong)\"\n strokeDasharray=\"3 3\"\n label={\n m.label\n ? { value: m.label, position: 'insideTopLeft', fill: 'var(--muted-foreground)', fontSize: 11 }\n : undefined\n }\n />\n ))}\n <Tooltip\n {...CHART_TOOLTIP_PROPS}\n content={\n <ChartTooltipPosition>\n <MetricsLineChartTooltip formatValue={format} labelKey={tooltipLabelKey} />\n </ChartTooltipPosition>\n }\n cursor={<HoverLine />}\n />\n {series.map((s, i) => {\n const common = {\n type: 'monotone' as const,\n dataKey: s.dataKey,\n name: s.label,\n stroke: s.color,\n strokeWidth: s.emphasis ? line.emphasis : line.width,\n strokeDasharray: s.dashed ? '4 3' : undefined,\n dot: restDot(s),\n activeDot: activeDot(s),\n isAnimationActive: false,\n connectNulls: true,\n };\n return s.dashed ? (\n <Line key={s.dataKey} {...common} />\n ) : (\n <Area key={s.dataKey} {...common} fill={`url(#${id}-area-${i})`} fillOpacity={1} />\n );\n })}\n </ComposedChart>\n </ChartPlot>\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
+ const require_Txt = require("./Txt-_00wWxTd.cjs");
1
2
  const require_utils = require("./utils-uDc1ofX1.cjs");
2
- const require_Txt = require("./Txt-BnoSqxKE.cjs");
3
3
  const require_components_ChartTooltip = require("./components/ChartTooltip.cjs.js");
4
- const require_primitives_chart_layout = require("./primitives/chart-layout.cjs.js");
5
4
  const require_components_ChartSkeleton = require("./components/ChartSkeleton.cjs.js");
6
5
  const require_primitives_chart_axes = require("./primitives/chart-axes.cjs.js");
7
6
  const require_primitives_chart_frame = require("./primitives/chart-frame.cjs.js");
7
+ const require_primitives_chart_layout = require("./primitives/chart-layout.cjs.js");
8
8
  const require_primitives_chart_plot = require("./primitives/chart-plot.cjs.js");
9
9
  const require_primitives_chart_tooltip_position = require("./primitives/chart-tooltip-position.cjs.js");
10
10
  const require_primitives_use_chart_defs_id = require("./primitives/use-chart-defs-id.cjs.js");
@@ -276,4 +276,4 @@ Object.defineProperty(exports, "MetricsLineChartTooltip", {
276
276
  }
277
277
  });
278
278
 
279
- //# sourceMappingURL=MetricsLineChart-tZxsauau.cjs.map
279
+ //# sourceMappingURL=MetricsLineChart-BnY9JKzc.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsLineChart-tZxsauau.cjs","names":["cn","Txt","ChartTooltip","Txt","CHART_CURSOR_PROPS","cn","ChartSkeleton","useChartDefsId","useChartSize","compactNumber","ChartPlot","ComposedChart","CHART_MARGIN","CartesianGrid","CHART_GRID_PROPS","timeXAxis","valueYAxis","dataMax","isWholeData","ReferenceLine","Tooltip","CHART_TOOLTIP_PROPS","ChartTooltipPosition","Line","Area"],"sources":["../src/ds/components/MetricsLineChart/metrics-line-chart-legend.tsx","../src/ds/components/MetricsLineChart/metrics-line-chart-tooltip.tsx","../src/ds/components/MetricsLineChart/metrics-line-chart.tsx"],"sourcesContent":["import type { MetricsLineChartSeries } from './metrics-line-chart';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/** A marker and a label per series. Totals belong in the card's header, not here. */\nexport function MetricsLineChartLegend({\n series,\n className,\n}: {\n series: Pick<MetricsLineChartSeries, 'dataKey' | 'label' | 'color' | 'dashed'>[];\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-wrap items-center gap-x-4 gap-y-1', className)}>\n {series.map(s => (\n <div key={s.dataKey} className=\"inline-flex items-center gap-1.5\">\n {s.dashed ? (\n <span className=\"h-0 w-3 shrink-0 border-t-2 border-dashed\" style={{ borderColor: s.color }} />\n ) : (\n <div className=\"size-2 shrink-0 rounded-[2px]\" style={{ backgroundColor: s.color }} />\n )}\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"max-w-48 truncate\">\n {s.label}\n </Txt>\n </div>\n ))}\n </div>\n );\n}\n","import { ChartTooltip } from '@/ds/components/ChartTooltip';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsLineChartTooltip({\n active,\n payload,\n label,\n suffix,\n formatValue = value => value.toLocaleString('en-US'),\n showTotal = false,\n labelKey,\n formatByKey,\n}: {\n active?: boolean;\n payload?: Array<{\n name: string;\n value: number;\n color: string;\n dataKey?: string | number;\n payload?: Record<string, unknown>;\n }>;\n label?: string;\n suffix?: string;\n formatValue?: (value: number) => string;\n /** Adds a \"Total\" row under a hairline: the sum of every row, e.g. a stacked column's height. */\n showTotal?: boolean;\n /** Read the heading from this field of the hovered row instead of the x-axis label. */\n labelKey?: string;\n /** Per-series formatters, by data key, for charts that mix units (counts and durations). */\n formatByKey?: Record<string, (value: number) => string>;\n}) {\n if (!active || !payload?.length) return null;\n // A missing reading (NaN, Infinity) shows as a dash and stays out of the total.\n const finite = (value: unknown): value is number => typeof value === 'number' && Number.isFinite(value);\n const total = payload.reduce((sum, entry) => sum + (finite(entry.value) ? entry.value : 0), 0);\n // A bucket with no readings at all totals to a dash, not 0.\n const hasReading = payload.some(entry => finite(entry.value));\n const heading = labelKey ? String(payload[0]?.payload?.[labelKey] ?? label ?? '') : label;\n const format = (entry: { dataKey?: string | number }) => formatByKey?.[String(entry.dataKey)] ?? formatValue;\n // A number through its formatter; a missing or non-finite one as a dash; text as it is.\n const reading = (entry: (typeof payload)[number]) => {\n if (finite(entry.value)) return format(entry)(entry.value);\n if (typeof entry.value === 'number' || entry.value == null) return '—';\n return entry.value;\n };\n return (\n // A floor like shadcn's chart tooltip, so short readouts don't size it to their own label.\n <ChartTooltip className=\"min-w-32\">\n <Txt variant=\"column\" tone=\"ink\" className=\"mb-1\">\n {heading}\n </Txt>\n <div className=\"grid grid-cols-[auto_1fr_auto] items-center gap-x-2 gap-y-1\">\n {payload.map(entry => (\n <div key={entry.name} className=\"contents\">\n <span className=\"size-2 rounded-[2px]\" style={{ backgroundColor: entry.color }} />\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"max-w-40 truncate\">\n {entry.name}\n </Txt>\n <span className=\"text-right font-mono text-foreground tabular-nums\">\n {reading(entry)}\n {finite(entry.value) && suffix}\n </span>\n </div>\n ))}\n {showTotal && (\n <div className=\"col-span-3 grid grid-cols-subgrid items-center border-t border-border pt-1\">\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"col-span-2\">\n Total\n </Txt>\n <span className=\"text-right font-mono text-foreground tabular-nums\">\n {hasReading ? formatValue(total) : '—'}\n {hasReading && suffix}\n </span>\n </div>\n )}\n </div>\n </ChartTooltip>\n );\n}\n","import { Area, CartesianGrid, ComposedChart, Line, ReferenceLine, Tooltip } from 'recharts';\nimport { MetricsLineChartLegend } from './metrics-line-chart-legend';\nimport { MetricsLineChartTooltip } from './metrics-line-chart-tooltip';\nimport { ChartSkeleton } from '@/ds/components/ChartSkeleton';\nimport { CHART_CURSOR_PROPS, CHART_GRID_PROPS, CHART_TOOLTIP_PROPS, useChartSize } from '@/ds/primitives/chart-axes';\nimport type { ChartXLabels } from '@/ds/primitives/chart-axes';\nimport { Y_AXIS_WIDTH, compactNumber, dataMax, isWholeData, timeXAxis, valueYAxis } from '@/ds/primitives/chart-frame';\nimport type { ChartHeight } from '@/ds/primitives/chart-frame';\nimport { CHART_MARGIN } from '@/ds/primitives/chart-layout';\nimport { ChartPlot } from '@/ds/primitives/chart-plot';\nimport { ChartTooltipPosition } from '@/ds/primitives/chart-tooltip-position';\nimport { useChartDefsId } from '@/ds/primitives/use-chart-defs-id';\nimport { cn } from '@/lib/utils';\n\nexport type MetricsLineChartSeries = {\n dataKey: string;\n label: string;\n color: string;\n /** A secondary reading (e.g. an average next to counts): dashed, no fill under it. */\n dashed?: boolean;\n /** The series to read first (e.g. P95 among percentiles): a slightly heavier line. */\n emphasis?: boolean;\n};\n\n/** Line weight; an emphasised series adds half a pixel. */\nconst LINE_WIDTH = 1.75;\n/** Opacity at the top of the fill under a line (it fades to nothing at the base). */\nconst AREA_OPACITY = 0.12;\n\n/**\n * How the series draw.\n * - `default`: 1.75px lines over a fill.\n * - `thin`: 1.5px lines (emphasis included) over a fainter fill (40% of the default), for small\n * cards in a grid.\n */\nexport type MetricsLineChartLineStyle = 'default' | 'thin';\n\nconst LINE_STYLES: Record<MetricsLineChartLineStyle, { width: number; emphasis: number; areaOpacity: number }> = {\n default: { width: LINE_WIDTH, emphasis: LINE_WIDTH + 0.5, areaOpacity: AREA_OPACITY },\n thin: { width: 1.5, emphasis: 1.5, areaOpacity: AREA_OPACITY * 0.4 },\n};\n\n/**\n * Fills fade out sideways over their first and last 24px, so they don't end in a hard vertical\n * edge where the line starts and stops. A mask sized to each fill's own box.\n */\nconst THIN_FILL_FADE = '[&_.recharts-area-area]:mask-x-from-[calc(100%-24px)]';\n/** A lone point draws no line at all, so it gets a dot; lines already bridge gaps (`connectNulls`). */\nconst SPARSE_POINTS = 1;\n\n// Jumps straight to the hovered point, with the dots and the tooltip.\nfunction HoverLine({ points }: { points?: { x: number; y: number }[] }) {\n const [top, bottom] = points ?? [];\n if (!top || !bottom) return null;\n return (\n <line x1={top.x} x2={top.x} y1={top.y} y2={bottom.y} {...CHART_CURSOR_PROPS} className=\"pointer-events-none\" />\n );\n}\n\nexport type MetricsLineChartPointClickHandler = (point: Record<string, unknown>, seriesKey: string) => void;\n\nexport type MetricsLineChartProps = {\n data: Record<string, unknown>[];\n series: MetricsLineChartSeries[];\n /** Pixels, or `fill` to grow with the parent (a flex column, e.g. a card's content). */\n height?: ChartHeight;\n yDomain?: [number, number];\n /** Click on a series' active dot. */\n onPointClick?: MetricsLineChartPointClickHandler;\n /** Click anywhere on a bucket (e.g. to open its traces); the plot shows a pointer cursor. */\n onBucketClick?: (row: Record<string, unknown>, index: number) => void;\n /** Row field printed under the x-axis. */\n xKey?: string;\n /** Row field with the bucket's start time (ms), which places labels on round clock times. */\n timestampKey?: string;\n /** `auto` fits as many labels as the width allows; `edges` prints only the first and last. */\n xLabels?: ChartXLabels;\n /** Row field for the tooltip heading (e.g. a longer date); defaults to the x-axis label. */\n tooltipLabelKey?: string;\n /** Render a visible dot on every point. A series with a single point gets one anyway. */\n showDots?: boolean;\n /**\n * Point markers. `auto`: on a series' lone point (or every point with `showDots`). `hover`:\n * none at rest, only the hovered point's.\n */\n dots?: 'auto' | 'hover';\n /** Line weight and fill. `thin` suits small cards in a grid. */\n lineStyle?: MetricsLineChartLineStyle;\n /** Set to `false` to render `MetricsLineChartLegend` elsewhere, e.g. next to tabs. */\n showLegend?: boolean;\n /** Formats tooltip values (e.g. `ms`, `%`), and y-axis ticks unless `axisFormatter` is set. */\n valueFormatter?: (value: number) => string;\n /** Formats y-axis ticks, when they need a shorter form than the tooltip. */\n axisFormatter?: (value: number) => string;\n /**\n * Set to `false` to drop the y-axis labels and let the plot span the card. The gridlines stay\n * for relative scale; exact values come from the tooltip and the card's summary.\n */\n showYAxis?: boolean;\n /** Show a ghost of the chart while data loads, in the chart's own footprint. */\n isLoading?: boolean;\n /**\n * Vertical lines at buckets, e.g. where a billing period starts. `x` must be one of the data's\n * `xKey` values: the axis is categorical, so any other value draws nothing.\n */\n markers?: { x: string; label?: string }[];\n className?: string;\n};\n\nexport function MetricsLineChart(props: MetricsLineChartProps) {\n const { data, series, height = 210, showLegend = true, isLoading = false, className } = props;\n const root = cn(height === 'fill' && 'flex min-h-0 flex-1 flex-col', className);\n // The legend stays while loading: it comes from the series, not the data.\n return (\n <div className={root}>\n {showLegend && <MetricsLineChartLegend series={series} className=\"mb-4\" />}\n {isLoading ? <ChartSkeleton kind=\"line\" height={height} /> : <LinePlot {...props} />}\n </div>\n );\n}\n\n/** The plot itself, once the data is in. */\nfunction LinePlot({\n data,\n series,\n height = 210,\n yDomain,\n onPointClick,\n onBucketClick,\n xKey = 'time',\n timestampKey = 'tsMs',\n xLabels = 'auto',\n tooltipLabelKey,\n showDots = false,\n dots = 'auto',\n lineStyle = 'default',\n valueFormatter,\n axisFormatter,\n showYAxis = true,\n markers = [],\n}: MetricsLineChartProps) {\n const id = useChartDefsId();\n const { size, onResize, ref } = useChartSize();\n\n const format = valueFormatter ?? compactNumber.format;\n const isSparse = (key: string) => data.filter(row => typeof row[key] === 'number').length <= SPARSE_POINTS;\n const plotWidth = size.width - (showYAxis ? Y_AXIS_WIDTH : 0);\n const line = LINE_STYLES[lineStyle];\n const restDot = (s: MetricsLineChartSeries) =>\n dots === 'auto' && (showDots || isSparse(s.dataKey)) ? { r: 3, fill: s.color, strokeWidth: 0 } : false;\n const activeDot = (s: MetricsLineChartSeries) => ({\n r: 3.5,\n fill: s.color,\n stroke: 'var(--background)',\n strokeWidth: 2,\n ...(onPointClick && {\n style: { cursor: 'pointer' },\n onClick: (_: unknown, payload: unknown) => {\n // Recharts passes the dot's props; the hovered row is under `payload`.\n if (isRecord(payload) && isRecord(payload.payload)) onPointClick(payload.payload, s.dataKey);\n },\n }),\n });\n\n return (\n <ChartPlot\n height={height}\n plotRef={ref}\n onResize={onResize}\n clickable={!!onBucketClick}\n className={cn(lineStyle === 'thin' && THIN_FILL_FADE)}\n >\n <ComposedChart\n data={data}\n margin={CHART_MARGIN}\n onClick={state => {\n const i = state?.activeTooltipIndex;\n const row = i === undefined || i === null ? undefined : data[Number(i)];\n if (onBucketClick && row) onBucketClick(row, Number(i));\n }}\n >\n <defs>\n {series.map((s, i) => (\n <linearGradient key={s.dataKey} id={`${id}-area-${i}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={s.color} stopOpacity={line.areaOpacity} />\n <stop offset=\"95%\" stopColor={s.color} stopOpacity={0} />\n </linearGradient>\n ))}\n </defs>\n <CartesianGrid {...CHART_GRID_PROPS} />\n {timeXAxis({ data, xKey, timestampKey, xLabels, plotWidth })}\n {valueYAxis({\n show: showYAxis,\n size,\n formatter: axisFormatter ?? format,\n domain: yDomain,\n max: dataMax(\n data,\n series.map(s => s.dataKey),\n ),\n integer: isWholeData(\n data,\n series.map(s => s.dataKey),\n ),\n })}\n {markers.map(m => (\n <ReferenceLine\n key={m.x}\n x={m.x}\n stroke=\"var(--border-strong)\"\n strokeDasharray=\"3 3\"\n label={\n m.label\n ? { value: m.label, position: 'insideTopLeft', fill: 'var(--muted-foreground)', fontSize: 11 }\n : undefined\n }\n />\n ))}\n <Tooltip\n {...CHART_TOOLTIP_PROPS}\n content={\n <ChartTooltipPosition>\n <MetricsLineChartTooltip formatValue={format} labelKey={tooltipLabelKey} />\n </ChartTooltipPosition>\n }\n cursor={<HoverLine />}\n />\n {series.map((s, i) => {\n const common = {\n type: 'monotone' as const,\n dataKey: s.dataKey,\n name: s.label,\n stroke: s.color,\n strokeWidth: s.emphasis ? line.emphasis : line.width,\n strokeDasharray: s.dashed ? '4 3' : undefined,\n dot: restDot(s),\n activeDot: activeDot(s),\n isAnimationActive: false,\n connectNulls: true,\n };\n return s.dashed ? (\n <Line key={s.dataKey} {...common} />\n ) : (\n <Area key={s.dataKey} {...common} fill={`url(#${id}-area-${i})`} fillOpacity={1} />\n );\n })}\n </ComposedChart>\n </ChartPlot>\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MetricsLineChart-BnY9JKzc.cjs","names":["cn","Txt","ChartTooltip","Txt","CHART_CURSOR_PROPS","cn","ChartSkeleton","useChartDefsId","useChartSize","compactNumber","ChartPlot","ComposedChart","CHART_MARGIN","CartesianGrid","CHART_GRID_PROPS","timeXAxis","valueYAxis","dataMax","isWholeData","ReferenceLine","Tooltip","CHART_TOOLTIP_PROPS","ChartTooltipPosition","Line","Area"],"sources":["../src/ds/components/MetricsLineChart/metrics-line-chart-legend.tsx","../src/ds/components/MetricsLineChart/metrics-line-chart-tooltip.tsx","../src/ds/components/MetricsLineChart/metrics-line-chart.tsx"],"sourcesContent":["import type { MetricsLineChartSeries } from './metrics-line-chart';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/** A marker and a label per series. Totals belong in the card's header, not here. */\nexport function MetricsLineChartLegend({\n series,\n className,\n}: {\n series: Pick<MetricsLineChartSeries, 'dataKey' | 'label' | 'color' | 'dashed'>[];\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-wrap items-center gap-x-4 gap-y-1', className)}>\n {series.map(s => (\n <div key={s.dataKey} className=\"inline-flex items-center gap-1.5\">\n {s.dashed ? (\n <span className=\"h-0 w-3 shrink-0 border-t-2 border-dashed\" style={{ borderColor: s.color }} />\n ) : (\n <div className=\"size-2 shrink-0 rounded-[2px]\" style={{ backgroundColor: s.color }} />\n )}\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"max-w-48 truncate\">\n {s.label}\n </Txt>\n </div>\n ))}\n </div>\n );\n}\n","import { ChartTooltip } from '@/ds/components/ChartTooltip';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsLineChartTooltip({\n active,\n payload,\n label,\n suffix,\n formatValue = value => value.toLocaleString('en-US'),\n showTotal = false,\n labelKey,\n formatByKey,\n}: {\n active?: boolean;\n payload?: Array<{\n name: string;\n value: number;\n color: string;\n dataKey?: string | number;\n payload?: Record<string, unknown>;\n }>;\n label?: string;\n suffix?: string;\n formatValue?: (value: number) => string;\n /** Adds a \"Total\" row under a hairline: the sum of every row, e.g. a stacked column's height. */\n showTotal?: boolean;\n /** Read the heading from this field of the hovered row instead of the x-axis label. */\n labelKey?: string;\n /** Per-series formatters, by data key, for charts that mix units (counts and durations). */\n formatByKey?: Record<string, (value: number) => string>;\n}) {\n if (!active || !payload?.length) return null;\n // A missing reading (NaN, Infinity) shows as a dash and stays out of the total.\n const finite = (value: unknown): value is number => typeof value === 'number' && Number.isFinite(value);\n const total = payload.reduce((sum, entry) => sum + (finite(entry.value) ? entry.value : 0), 0);\n // A bucket with no readings at all totals to a dash, not 0.\n const hasReading = payload.some(entry => finite(entry.value));\n const heading = labelKey ? String(payload[0]?.payload?.[labelKey] ?? label ?? '') : label;\n const format = (entry: { dataKey?: string | number }) => formatByKey?.[String(entry.dataKey)] ?? formatValue;\n // A number through its formatter; a missing or non-finite one as a dash; text as it is.\n const reading = (entry: (typeof payload)[number]) => {\n if (finite(entry.value)) return format(entry)(entry.value);\n if (typeof entry.value === 'number' || entry.value == null) return '—';\n return entry.value;\n };\n return (\n // A floor like shadcn's chart tooltip, so short readouts don't size it to their own label.\n <ChartTooltip className=\"min-w-32\">\n <Txt variant=\"column\" tone=\"ink\" className=\"mb-1\">\n {heading}\n </Txt>\n <div className=\"grid grid-cols-[auto_1fr_auto] items-center gap-x-2 gap-y-1\">\n {payload.map(entry => (\n <div key={entry.name} className=\"contents\">\n <span className=\"size-2 rounded-[2px]\" style={{ backgroundColor: entry.color }} />\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"max-w-40 truncate\">\n {entry.name}\n </Txt>\n <span className=\"text-right font-mono text-foreground tabular-nums\">\n {reading(entry)}\n {finite(entry.value) && suffix}\n </span>\n </div>\n ))}\n {showTotal && (\n <div className=\"col-span-3 grid grid-cols-subgrid items-center border-t border-border pt-1\">\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"col-span-2\">\n Total\n </Txt>\n <span className=\"text-right font-mono text-foreground tabular-nums\">\n {hasReading ? formatValue(total) : '—'}\n {hasReading && suffix}\n </span>\n </div>\n )}\n </div>\n </ChartTooltip>\n );\n}\n","import { Area, CartesianGrid, ComposedChart, Line, ReferenceLine, Tooltip } from 'recharts';\nimport { MetricsLineChartLegend } from './metrics-line-chart-legend';\nimport { MetricsLineChartTooltip } from './metrics-line-chart-tooltip';\nimport { ChartSkeleton } from '@/ds/components/ChartSkeleton';\nimport { CHART_CURSOR_PROPS, CHART_GRID_PROPS, CHART_TOOLTIP_PROPS, useChartSize } from '@/ds/primitives/chart-axes';\nimport type { ChartXLabels } from '@/ds/primitives/chart-axes';\nimport { Y_AXIS_WIDTH, compactNumber, dataMax, isWholeData, timeXAxis, valueYAxis } from '@/ds/primitives/chart-frame';\nimport type { ChartHeight } from '@/ds/primitives/chart-frame';\nimport { CHART_MARGIN } from '@/ds/primitives/chart-layout';\nimport { ChartPlot } from '@/ds/primitives/chart-plot';\nimport { ChartTooltipPosition } from '@/ds/primitives/chart-tooltip-position';\nimport { useChartDefsId } from '@/ds/primitives/use-chart-defs-id';\nimport { cn } from '@/lib/utils';\n\nexport type MetricsLineChartSeries = {\n dataKey: string;\n label: string;\n color: string;\n /** A secondary reading (e.g. an average next to counts): dashed, no fill under it. */\n dashed?: boolean;\n /** The series to read first (e.g. P95 among percentiles): a slightly heavier line. */\n emphasis?: boolean;\n};\n\n/** Line weight; an emphasised series adds half a pixel. */\nconst LINE_WIDTH = 1.75;\n/** Opacity at the top of the fill under a line (it fades to nothing at the base). */\nconst AREA_OPACITY = 0.12;\n\n/**\n * How the series draw.\n * - `default`: 1.75px lines over a fill.\n * - `thin`: 1.5px lines (emphasis included) over a fainter fill (40% of the default), for small\n * cards in a grid.\n */\nexport type MetricsLineChartLineStyle = 'default' | 'thin';\n\nconst LINE_STYLES: Record<MetricsLineChartLineStyle, { width: number; emphasis: number; areaOpacity: number }> = {\n default: { width: LINE_WIDTH, emphasis: LINE_WIDTH + 0.5, areaOpacity: AREA_OPACITY },\n thin: { width: 1.5, emphasis: 1.5, areaOpacity: AREA_OPACITY * 0.4 },\n};\n\n/**\n * Fills fade out sideways over their first and last 24px, so they don't end in a hard vertical\n * edge where the line starts and stops. A mask sized to each fill's own box.\n */\nconst THIN_FILL_FADE = '[&_.recharts-area-area]:mask-x-from-[calc(100%-24px)]';\n/** A lone point draws no line at all, so it gets a dot; lines already bridge gaps (`connectNulls`). */\nconst SPARSE_POINTS = 1;\n\n// Jumps straight to the hovered point, with the dots and the tooltip.\nfunction HoverLine({ points }: { points?: { x: number; y: number }[] }) {\n const [top, bottom] = points ?? [];\n if (!top || !bottom) return null;\n return (\n <line x1={top.x} x2={top.x} y1={top.y} y2={bottom.y} {...CHART_CURSOR_PROPS} className=\"pointer-events-none\" />\n );\n}\n\nexport type MetricsLineChartPointClickHandler = (point: Record<string, unknown>, seriesKey: string) => void;\n\nexport type MetricsLineChartProps = {\n data: Record<string, unknown>[];\n series: MetricsLineChartSeries[];\n /** Pixels, or `fill` to grow with the parent (a flex column, e.g. a card's content). */\n height?: ChartHeight;\n yDomain?: [number, number];\n /** Click on a series' active dot. */\n onPointClick?: MetricsLineChartPointClickHandler;\n /** Click anywhere on a bucket (e.g. to open its traces); the plot shows a pointer cursor. */\n onBucketClick?: (row: Record<string, unknown>, index: number) => void;\n /** Row field printed under the x-axis. */\n xKey?: string;\n /** Row field with the bucket's start time (ms), which places labels on round clock times. */\n timestampKey?: string;\n /** `auto` fits as many labels as the width allows; `edges` prints only the first and last. */\n xLabels?: ChartXLabels;\n /** Row field for the tooltip heading (e.g. a longer date); defaults to the x-axis label. */\n tooltipLabelKey?: string;\n /** Render a visible dot on every point. A series with a single point gets one anyway. */\n showDots?: boolean;\n /**\n * Point markers. `auto`: on a series' lone point (or every point with `showDots`). `hover`:\n * none at rest, only the hovered point's.\n */\n dots?: 'auto' | 'hover';\n /** Line weight and fill. `thin` suits small cards in a grid. */\n lineStyle?: MetricsLineChartLineStyle;\n /** Set to `false` to render `MetricsLineChartLegend` elsewhere, e.g. next to tabs. */\n showLegend?: boolean;\n /** Formats tooltip values (e.g. `ms`, `%`), and y-axis ticks unless `axisFormatter` is set. */\n valueFormatter?: (value: number) => string;\n /** Formats y-axis ticks, when they need a shorter form than the tooltip. */\n axisFormatter?: (value: number) => string;\n /**\n * Set to `false` to drop the y-axis labels and let the plot span the card. The gridlines stay\n * for relative scale; exact values come from the tooltip and the card's summary.\n */\n showYAxis?: boolean;\n /** Show a ghost of the chart while data loads, in the chart's own footprint. */\n isLoading?: boolean;\n /**\n * Vertical lines at buckets, e.g. where a billing period starts. `x` must be one of the data's\n * `xKey` values: the axis is categorical, so any other value draws nothing.\n */\n markers?: { x: string; label?: string }[];\n className?: string;\n};\n\nexport function MetricsLineChart(props: MetricsLineChartProps) {\n const { data, series, height = 210, showLegend = true, isLoading = false, className } = props;\n const root = cn(height === 'fill' && 'flex min-h-0 flex-1 flex-col', className);\n // The legend stays while loading: it comes from the series, not the data.\n return (\n <div className={root}>\n {showLegend && <MetricsLineChartLegend series={series} className=\"mb-4\" />}\n {isLoading ? <ChartSkeleton kind=\"line\" height={height} /> : <LinePlot {...props} />}\n </div>\n );\n}\n\n/** The plot itself, once the data is in. */\nfunction LinePlot({\n data,\n series,\n height = 210,\n yDomain,\n onPointClick,\n onBucketClick,\n xKey = 'time',\n timestampKey = 'tsMs',\n xLabels = 'auto',\n tooltipLabelKey,\n showDots = false,\n dots = 'auto',\n lineStyle = 'default',\n valueFormatter,\n axisFormatter,\n showYAxis = true,\n markers = [],\n}: MetricsLineChartProps) {\n const id = useChartDefsId();\n const { size, onResize, ref } = useChartSize();\n\n const format = valueFormatter ?? compactNumber.format;\n const isSparse = (key: string) => data.filter(row => typeof row[key] === 'number').length <= SPARSE_POINTS;\n const plotWidth = size.width - (showYAxis ? Y_AXIS_WIDTH : 0);\n const line = LINE_STYLES[lineStyle];\n const restDot = (s: MetricsLineChartSeries) =>\n dots === 'auto' && (showDots || isSparse(s.dataKey)) ? { r: 3, fill: s.color, strokeWidth: 0 } : false;\n const activeDot = (s: MetricsLineChartSeries) => ({\n r: 3.5,\n fill: s.color,\n stroke: 'var(--background)',\n strokeWidth: 2,\n ...(onPointClick && {\n style: { cursor: 'pointer' },\n onClick: (_: unknown, payload: unknown) => {\n // Recharts passes the dot's props; the hovered row is under `payload`.\n if (isRecord(payload) && isRecord(payload.payload)) onPointClick(payload.payload, s.dataKey);\n },\n }),\n });\n\n return (\n <ChartPlot\n height={height}\n plotRef={ref}\n onResize={onResize}\n clickable={!!onBucketClick}\n className={cn(lineStyle === 'thin' && THIN_FILL_FADE)}\n >\n <ComposedChart\n data={data}\n margin={CHART_MARGIN}\n onClick={state => {\n const i = state?.activeTooltipIndex;\n const row = i === undefined || i === null ? undefined : data[Number(i)];\n if (onBucketClick && row) onBucketClick(row, Number(i));\n }}\n >\n <defs>\n {series.map((s, i) => (\n <linearGradient key={s.dataKey} id={`${id}-area-${i}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={s.color} stopOpacity={line.areaOpacity} />\n <stop offset=\"95%\" stopColor={s.color} stopOpacity={0} />\n </linearGradient>\n ))}\n </defs>\n <CartesianGrid {...CHART_GRID_PROPS} />\n {timeXAxis({ data, xKey, timestampKey, xLabels, plotWidth })}\n {valueYAxis({\n show: showYAxis,\n size,\n formatter: axisFormatter ?? format,\n domain: yDomain,\n max: dataMax(\n data,\n series.map(s => s.dataKey),\n ),\n integer: isWholeData(\n data,\n series.map(s => s.dataKey),\n ),\n })}\n {markers.map(m => (\n <ReferenceLine\n key={m.x}\n x={m.x}\n stroke=\"var(--border-strong)\"\n strokeDasharray=\"3 3\"\n label={\n m.label\n ? { value: m.label, position: 'insideTopLeft', fill: 'var(--muted-foreground)', fontSize: 11 }\n : undefined\n }\n />\n ))}\n <Tooltip\n {...CHART_TOOLTIP_PROPS}\n content={\n <ChartTooltipPosition>\n <MetricsLineChartTooltip formatValue={format} labelKey={tooltipLabelKey} />\n </ChartTooltipPosition>\n }\n cursor={<HoverLine />}\n />\n {series.map((s, i) => {\n const common = {\n type: 'monotone' as const,\n dataKey: s.dataKey,\n name: s.label,\n stroke: s.color,\n strokeWidth: s.emphasis ? line.emphasis : line.width,\n strokeDasharray: s.dashed ? '4 3' : undefined,\n dot: restDot(s),\n activeDot: activeDot(s),\n isAnimationActive: false,\n connectNulls: true,\n };\n return s.dashed ? (\n <Line key={s.dataKey} {...common} />\n ) : (\n <Area key={s.dataKey} {...common} fill={`url(#${id}-area-${i})`} fillOpacity={1} />\n );\n })}\n </ComposedChart>\n </ChartPlot>\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n"],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- import { t as cn } from "./utils-DQx8TpNT.js";
2
- import { n as MetricsLineChartTooltip, r as MetricsLineChartLegend } from "./MetricsLineChart-4SwxBbQx.js";
3
- import { CHART_MARGIN } from "./primitives/chart-layout.es.js";
4
1
  import { ChartSkeleton } from "./components/ChartSkeleton.es.js";
2
+ import { n as MetricsLineChartTooltip, r as MetricsLineChartLegend } from "./MetricsLineChart-4w5lpH63.js";
5
3
  import { CHART_GRID_PROPS, CHART_TOOLTIP_PROPS, useChartSize } from "./primitives/chart-axes.es.js";
4
+ import { singleBarBox, stackedSegmentBox } from "./primitives/chart-column-layout.es.js";
6
5
  import { CHART_TICK, compactNumber, dataMax, isWholeData, timeXAxis, valueYAxis } from "./primitives/chart-frame.es.js";
6
+ import { CHART_MARGIN } from "./primitives/chart-layout.es.js";
7
7
  import { ChartPlot } from "./primitives/chart-plot.es.js";
8
8
  import { ChartTooltipPosition } from "./primitives/chart-tooltip-position.es.js";
9
- import { useChartDefsId } from "./primitives/use-chart-defs-id.es.js";
10
- import { singleBarBox, stackedSegmentBox } from "./primitives/chart-column-layout.es.js";
11
- import { activeIndex } from "./primitives/charts/drag-selection/drag-selection-range.es.js";
12
9
  import { DragSelectionBand } from "./primitives/charts/drag-selection/drag-selection-band.es.js";
10
+ import { activeIndex } from "./primitives/charts/drag-selection/drag-selection-range.es.js";
13
11
  import { useDragSelection } from "./primitives/charts/drag-selection/use-drag-selection.es.js";
12
+ import { useChartDefsId } from "./primitives/use-chart-defs-id.es.js";
13
+ import { t as cn } from "./utils-DQx8TpNT.js";
14
14
  import { useLayoutEffect, useMemo, useRef, useState } from "react";
15
15
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
16
16
  import { Bar, CartesianGrid, ComposedChart, LabelList, Line, Rectangle, ReferenceLine, Tooltip } from "recharts";
@@ -305,4 +305,4 @@ function ColumnLabel({ x, y, width, height, value, row, keys, self, color }) {
305
305
  }
306
306
  export { MetricsStackedBarChart as t };
307
307
 
308
- //# sourceMappingURL=MetricsStackedBarChart-D2QyS4-z.js.map
308
+ //# sourceMappingURL=MetricsStackedBarChart-Bmk0OjYp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsStackedBarChart-D2QyS4-z.js","names":["_Fragment"],"sources":["../src/ds/components/MetricsStackedBarChart/metrics-stacked-bar-chart.tsx"],"sourcesContent":["import { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Bar, CartesianGrid, ComposedChart, LabelList, Line, Rectangle, ReferenceLine, Tooltip } from 'recharts';\nimport type { LabelProps } from 'recharts';\nimport { ChartSkeleton } from '@/ds/components/ChartSkeleton';\nimport type { MetricsLineChartSeries } from '@/ds/components/MetricsLineChart';\nimport { MetricsLineChartLegend, MetricsLineChartTooltip } from '@/ds/components/MetricsLineChart';\nimport { CHART_GRID_PROPS, CHART_TOOLTIP_PROPS, useChartSize } from '@/ds/primitives/chart-axes';\nimport type { ChartXLabels } from '@/ds/primitives/chart-axes';\nimport { singleBarBox, stackedSegmentBox } from '@/ds/primitives/chart-column-layout';\nimport type { SegmentBox } from '@/ds/primitives/chart-column-layout';\nimport {\n CHART_TICK,\n Y_AXIS_WIDTH,\n compactNumber,\n dataMax,\n isWholeData,\n timeXAxis,\n valueYAxis,\n} from '@/ds/primitives/chart-frame';\nimport type { ChartHeight } from '@/ds/primitives/chart-frame';\nimport { CHART_AXIS_FONT_SIZE, CHART_MARGIN } from '@/ds/primitives/chart-layout';\nimport { ChartPlot } from '@/ds/primitives/chart-plot';\nimport { ChartTooltipPosition } from '@/ds/primitives/chart-tooltip-position';\nimport { DragSelectionBand, activeIndex, useDragSelection } from '@/ds/primitives/charts/drag-selection';\nimport type { DragSelectionRange } from '@/ds/primitives/charts/drag-selection';\nimport { useChartDefsId } from '@/ds/primitives/use-chart-defs-id';\nimport { cn } from '@/lib/utils';\n\n/** Corner radius of every segment; thin segments scale it down so they stay crisp rectangles. */\nconst RADIUS = 2;\n/** Pixels between stacked segments, so neighbouring segments read as separate blocks. */\nconst SEGMENT_GAP = 2;\n/** Opacity at the base of a segment's gradient (the top is fully opaque). */\nconst GRADIENT_BASE = 0.75;\n/** Single-series bars: translucent body under a solid cap that marks the value. */\nconst CAP_BODY = 0.55;\nconst CAP_HEIGHT = 3;\n/** Opacity of the other columns while one is hovered. */\nconst DIMMED = 0.3;\nconst COLUMN_LABEL_SPACE = 16;\n\ntype SegmentProps = {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n index?: number;\n payload?: Record<string, unknown>;\n};\n\nfunction segmentShape({\n fill,\n color,\n capped,\n keys,\n dataKey,\n}: {\n fill: string;\n color: string;\n capped: boolean;\n /** The column's data keys, bottom to top. */\n keys: string[];\n dataKey: string;\n}) {\n return function Segment({ x = 0, width = 0, index, payload, ...geo }: SegmentProps) {\n const values = keys.map(k => Number(payload?.[k]) || 0);\n const self = keys.indexOf(dataKey);\n const box = { y: geo.y ?? 0, height: Math.max(geo.height ?? 0, 0) };\n // Every non-zero value gets a few readable pixels; zeros draw nothing.\n const laid =\n keys.length > 1\n ? stackedSegmentBox(values, self, box, { gap: SEGMENT_GAP })\n : singleBarBox(values[self] ?? 0, box);\n if (!laid) return <g />;\n const { y, height: h } = laid;\n const radius = Math.min(RADIUS, Math.floor(h / 3));\n // Dimming is a CSS rule keyed on `data-bucket` (see `HoverDim`), so hovering re-renders no bars.\n const bucket = { 'data-bucket': index };\n\n if (capped) {\n return (\n <g {...bucket}>\n <Rectangle x={x} y={y} width={width} height={h} radius={radius} fill={color} fillOpacity={CAP_BODY} />\n <Rectangle x={x} y={y} width={width} height={Math.min(CAP_HEIGHT, h)} radius={radius} fill={color} />\n </g>\n );\n }\n return (\n <g {...bucket}>\n <Rectangle x={x} y={y} width={width} height={h} radius={radius} fill={fill} />\n </g>\n );\n };\n}\n\n/**\n * Dims every column outside the hovered one, or outside the range being dragged. Its own tiny\n * state, so a move only re-renders this <style> tag: with hundreds of buckets, re-rendering the\n * bars on each move froze the pointer.\n */\nfunction HoverDim({\n scope,\n setter,\n}: {\n scope: string;\n setter: { current: (range: DragSelectionRange | undefined) => void };\n}) {\n const [lit, setLit] = useState<DragSelectionRange>();\n useLayoutEffect(() => {\n setter.current = setLit;\n }, [setter]);\n if (!lit) return null;\n const columns = `[data-chart-scope=\"${scope}\"] [data-bucket]`;\n const kept = Array.from(\n { length: lit.end - lit.start + 1 },\n (_, i) => `${columns}[data-bucket=\"${lit.start + i}\"]`,\n ).join(',');\n return <style>{`${columns}{opacity:${DIMMED}}${kept}{opacity:1}`}</style>;\n}\n\n/** A line drawn over the bars on its own scale, e.g. average wake time over cold starts. */\nexport type MetricsStackedBarChartOverlay = MetricsLineChartSeries & {\n valueFormatter?: (value: number) => string;\n};\n\nexport type MetricsStackedBarChartProps = {\n data: Record<string, unknown>[];\n series: MetricsLineChartSeries[];\n /** Pixels, or `fill` to grow with the parent (a flex column, e.g. a card's content). */\n height?: ChartHeight;\n yDomain?: [number, number];\n /** Formats tooltip values, and y-axis ticks unless `axisFormatter` is set. */\n valueFormatter?: (value: number) => string;\n /** Formats y-axis ticks, when they need a shorter form than the tooltip. */\n axisFormatter?: (value: number) => string;\n showLegend?: boolean;\n referenceLine?: { value: number; label: string; color: string };\n /**\n * `gradient`: segments fade gently toward the base. Reads best for stacks.\n * `capped`: a translucent body under a solid cap that marks the value. Reads best for one\n * value per column.\n */\n variant?: 'gradient' | 'capped';\n /**\n * Set to `false` to drop the y-axis labels and let the plot span the card. The gridlines stay\n * for relative scale; exact values come from the tooltip and the card's summary.\n */\n showYAxis?: boolean;\n /** Adds a \"Total\" row (the column's height) to the tooltip. Defaults to on for stacks. */\n showTotal?: boolean;\n /** Row field printed under the x-axis. */\n xKey?: string;\n /** Row field with the bucket's start time (ms), which places labels on round clock times. */\n timestampKey?: string;\n /** `auto` fits as many labels as the width allows; `edges` prints only the first and last. */\n xLabels?: ChartXLabels;\n /** Row field for the tooltip heading (e.g. a longer date); defaults to the x-axis label. */\n tooltipLabelKey?: string;\n columnLabelKey?: string;\n /** Widest a column gets, in pixels. Defaults to 28; raise it for dense strips of many thin columns. */\n maxBarSize?: number;\n /** Click a column (e.g. to open its traces); the plot shows a pointer cursor. */\n onBucketClick?: (row: Record<string, unknown>, index: number) => void;\n /**\n * Drag across two or more columns to select them (e.g. to zoom into that time span); reports the\n * first and last selected row indices. A press and release on one column stays a click.\n */\n onZoom?: (range: DragSelectionRange) => void;\n /** One dashed line over the bars, on its own hidden scale (e.g. a duration over counts). */\n overlay?: MetricsStackedBarChartOverlay;\n /** Show a ghost of the chart while data loads, in the chart's own footprint. */\n isLoading?: boolean;\n className?: string;\n};\n\nexport function MetricsStackedBarChart(props: MetricsStackedBarChartProps) {\n const { data, series, overlay, height = 210, showLegend = true, isLoading = false, className } = props;\n const id = useChartDefsId();\n const root = cn(height === 'fill' && 'flex min-h-0 flex-1 flex-col', className);\n const legend = overlay ? [...series, { ...overlay, dashed: true }] : series;\n // The legend stays while loading: it comes from the series, not the data.\n return (\n <div className={root} data-chart-scope={id}>\n {showLegend && <MetricsLineChartLegend series={legend} className=\"mb-4\" />}\n {isLoading ? <ChartSkeleton kind=\"bar\" height={height} /> : <BarPlot {...props} id={id} />}\n </div>\n );\n}\n\n/** The plot itself, once the data is in; `id` scopes its gradients and hover rule. */\nfunction BarPlot({\n data,\n series,\n height = 210,\n yDomain,\n valueFormatter,\n axisFormatter,\n referenceLine,\n variant = 'gradient',\n showYAxis = true,\n showTotal = series.length > 1,\n xKey = 'time',\n timestampKey = 'tsMs',\n xLabels = 'auto',\n tooltipLabelKey,\n columnLabelKey,\n maxBarSize = 28,\n onBucketClick,\n onZoom,\n overlay,\n id,\n}: MetricsStackedBarChartProps & { id: string }) {\n const setLit = useRef<(range: DragSelectionRange | undefined) => void>(() => {});\n const { size, onResize, ref } = useChartSize();\n // The dragged columns stay lit through the same rule as hover, so a drag never re-renders the bars.\n const selection = useDragSelection({ onSelect: onZoom, onPreview: range => setLit.current(range) });\n\n const keyList = series.map(s => s.dataKey).join('\\u0000');\n const colorList = series.map(s => s.color).join('\\u0000');\n // Stable shapes, so Recharts doesn't re-render every bar when the parent re-renders.\n const shapes = useMemo(() => {\n const keys = keyList.split('\\u0000');\n const colors = colorList.split('\\u0000');\n return keys.map((dataKey, i) =>\n segmentShape({\n fill: `url(#${id}-bar-${i})`,\n color: colors[i] ?? '',\n capped: variant === 'capped',\n keys,\n dataKey,\n }),\n );\n }, [keyList, colorList, variant, id]);\n\n const format = valueFormatter ?? compactNumber.format;\n const plotWidth = size.width - (showYAxis ? Y_AXIS_WIDTH : 0);\n const margin = columnLabelKey ? { ...CHART_MARGIN, top: CHART_MARGIN.top + COLUMN_LABEL_SPACE } : CHART_MARGIN;\n\n return (\n <>\n <HoverDim scope={id} setter={setLit} />\n <ChartPlot\n height={height}\n plotRef={ref}\n onResize={onResize}\n clickable={!!onBucketClick && !selection.enabled}\n className={selection.className}\n >\n <ComposedChart\n data={data}\n margin={margin}\n onMouseDown={selection.onMouseDown}\n onMouseMove={state => {\n if (selection.isDragging()) return selection.onMouseMove(state);\n const index = activeIndex(state);\n setLit.current(index === undefined ? undefined : { start: index, end: index });\n }}\n onMouseLeave={() => {\n // Mid-drag the selection stays lit until the release.\n if (!selection.isDragging()) setLit.current(undefined);\n }}\n onClick={state => {\n if (selection.consumeReleaseClick()) return;\n const i = activeIndex(state);\n const row = i === undefined ? undefined : data[i];\n if (onBucketClick && row && i !== undefined) onBucketClick(row, i);\n }}\n >\n <defs>\n {series.map((s, i) => (\n <linearGradient key={s.dataKey} id={`${id}-bar-${i}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={s.color} stopOpacity={1} />\n <stop offset=\"100%\" stopColor={s.color} stopOpacity={GRADIENT_BASE} />\n </linearGradient>\n ))}\n </defs>\n <CartesianGrid {...CHART_GRID_PROPS} />\n {selection.enabled && <DragSelectionBand selection={selection} count={data.length} />}\n {timeXAxis({ data, xKey, timestampKey, xLabels, plotWidth })}\n {valueYAxis({\n show: showYAxis,\n size,\n formatter: axisFormatter ?? format,\n domain: yDomain,\n // A reference line above the bars stays on the axis.\n max: Math.max(\n dataMax(\n data,\n series.map(s => s.dataKey),\n true,\n ),\n referenceLine?.value ?? 0,\n ),\n integer: isWholeData(\n data,\n series.map(s => s.dataKey),\n ),\n })}\n {overlay &&\n valueYAxis({\n id: 'overlay',\n show: false,\n size,\n formatter: overlay.valueFormatter ?? compactNumber.format,\n max: dataMax(data, [overlay.dataKey]),\n integer: isWholeData(data, [overlay.dataKey]),\n right: true,\n })}\n <Tooltip\n {...CHART_TOOLTIP_PROPS}\n cursor={false}\n content={\n <ChartTooltipPosition>\n <MetricsLineChartTooltip\n formatValue={format}\n showTotal={showTotal && !overlay}\n labelKey={tooltipLabelKey}\n formatByKey={overlay?.valueFormatter ? { [overlay.dataKey]: overlay.valueFormatter } : undefined}\n />\n </ChartTooltipPosition>\n }\n />\n {series.map((s, i) => (\n <Bar\n key={s.dataKey}\n dataKey={s.dataKey}\n name={s.label}\n stackId=\"1\"\n fill={s.color}\n maxBarSize={maxBarSize}\n isAnimationActive={false}\n shape={shapes[i]}\n >\n {columnLabelKey && (\n <LabelList\n dataKey={columnLabelKey}\n content={(props: LabelProps) => (\n <ColumnLabel\n {...props}\n row={data[Number(props.index)]}\n keys={series.map(({ dataKey }) => dataKey)}\n self={i}\n color={s.color}\n />\n )}\n />\n )}\n </Bar>\n ))}\n {overlay && (\n <Line\n yAxisId=\"overlay\"\n type=\"monotone\"\n dataKey={overlay.dataKey}\n name={overlay.label}\n stroke={overlay.color}\n strokeWidth={1.75}\n strokeDasharray=\"4 3\"\n dot={false}\n activeDot={{ r: 3.5, fill: overlay.color, stroke: 'var(--background)', strokeWidth: 2 }}\n isAnimationActive={false}\n connectNulls\n />\n )}\n {referenceLine && (\n <ReferenceLine\n y={referenceLine.value}\n ifOverflow=\"extendDomain\"\n stroke={referenceLine.color}\n strokeDasharray=\"4 4\"\n label={{ value: referenceLine.label, position: 'insideTopLeft', ...CHART_TICK }}\n />\n )}\n </ComposedChart>\n </ChartPlot>\n </>\n );\n}\n\ntype ColumnLabelProps = LabelProps & {\n row: MetricsStackedBarChartProps['data'][number] | undefined;\n keys: string[];\n self: number;\n color: string;\n};\n\nfunction paintedTop(values: number[], self: number, box: SegmentBox) {\n if (values.length > 1) return stackedSegmentBox(values, self, box, { gap: SEGMENT_GAP })?.y;\n return singleBarBox(values[self] ?? 0, box)?.y;\n}\n\nfunction ColumnLabel({ x, y, width, height, value, row, keys, self, color }: ColumnLabelProps) {\n if (value === undefined || value === null || value === '') return null;\n const values = keys.map(key => Number(row?.[key]) || 0);\n const topmost = values.findLastIndex(v => v > 0);\n if (self !== (topmost === -1 ? keys.length - 1 : topmost)) return null;\n const top = paintedTop(values, self, { y: Number(y), height: Math.max(Number(height), 0) }) ?? Number(y);\n return (\n <text\n x={Number(x) + Number(width) / 2}\n y={top - 6}\n textAnchor=\"middle\"\n fontSize={CHART_AXIS_FONT_SIZE}\n fill={color}\n className=\"tabular-nums\"\n >\n {String(value)}\n </text>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA6BA,IAAM,SAAS;;AAEf,IAAM,cAAc;;AAEpB,IAAM,gBAAgB;;AAEtB,IAAM,WAAW;AACjB,IAAM,aAAa;;AAEnB,IAAM,SAAS;AACf,IAAM,qBAAqB;AAW3B,SAAS,aAAa,EACpB,MACA,OACA,QACA,MACA,WAQC;CACD,OAAO,SAAS,QAAQ,EAAE,IAAI,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,OAAqB;EAClF,MAAM,SAAS,KAAK,KAAI,MAAK,OAAO,UAAU,EAAE,KAAK,CAAC;EACtD,MAAM,OAAO,KAAK,QAAQ,OAAO;EACjC,MAAM,MAAM;GAAE,GAAG,IAAI,KAAK;GAAG,QAAQ,KAAK,IAAI,IAAI,UAAU,GAAG,CAAC;EAAE;EAElE,MAAM,OACJ,KAAK,SAAS,IACV,kBAAkB,QAAQ,MAAM,KAAK,EAAE,KAAK,YAAY,CAAC,IACzD,aAAa,OAAO,SAAS,GAAG,GAAG;EACzC,IAAI,CAAC,MAAM,OAAO,oBAAC,KAAD,CAAI,CAAA;EACtB,MAAM,EAAE,GAAG,QAAQ,MAAM;EACzB,MAAM,SAAS,KAAK,IAAI,QAAQ,KAAK,MAAM,IAAI,CAAC,CAAC;EAEjD,MAAM,SAAS,EAAE,eAAe,MAAM;EAEtC,IAAI,QACF,OACE,qBAAC,KAAD;GAAG,GAAI;GAAP,UAAA,CACE,oBAAC,WAAD;IAAc;IAAM;IAAU;IAAO,QAAQ;IAAW;IAAQ,MAAM;IAAO,aAAa;GAAW,CAAA,GACrG,oBAAC,WAAD;IAAc;IAAM;IAAU;IAAO,QAAQ,KAAK,IAAI,YAAY,CAAC;IAAW;IAAQ,MAAM;GAAQ,CAAA,CACnG;;EAGP,OACE,oBAAC,KAAD;GAAG,GAAI;GACL,UAAA,oBAAC,WAAD;IAAc;IAAM;IAAU;IAAO,QAAQ;IAAW;IAAc;GAAO,CAAA;EAC5E,CAAA;CAEP;AACF;;;;;;AAOA,SAAS,SAAS,EAChB,OACA,UAIC;CACD,MAAM,CAAC,KAAK,UAAU,SAA6B;CACnD,sBAAsB;EACpB,OAAO,UAAU;CACnB,GAAG,CAAC,MAAM,CAAC;CACX,IAAI,CAAC,KAAK,OAAO;CACjB,MAAM,UAAU,sBAAsB,MAAM;CAC5C,MAAM,OAAO,MAAM,KACjB,EAAE,QAAQ,IAAI,MAAM,IAAI,QAAQ,EAAE,IACjC,GAAG,MAAM,GAAG,QAAQ,gBAAgB,IAAI,QAAQ,EAAE,GACrD,CAAC,CAAC,KAAK,GAAG;CACV,OAAO,oBAAC,SAAD,EAAA,UAAQ,GAAG,QAAQ,WAAW,OAAO,GAAG,KAAK,aAAoB,CAAA;AAC1E;AAyDA,SAAgB,uBAAuB,OAAoC;CACzE,MAAM,EAAE,MAAM,QAAQ,SAAS,SAAS,KAAK,aAAa,MAAM,YAAY,OAAO,cAAc;CACjG,MAAM,KAAK,eAAe;CAC1B,MAAM,OAAO,GAAG,WAAW,UAAU,gCAAgC,SAAS;CAC9E,MAAM,SAAS,UAAU,CAAC,GAAG,QAAQ;EAAE,GAAG;EAAS,QAAQ;CAAK,CAAC,IAAI;CAErE,OACE,qBAAC,OAAD;EAAK,WAAW;EAAM,oBAAkB;EAAxC,UAAA,CACG,cAAc,oBAAC,wBAAD;GAAwB,QAAQ;GAAQ,WAAU;EAAQ,CAAA,GACxE,YAAY,oBAAC,eAAD;GAAe,MAAK;GAAc;EAAS,CAAA,IAAI,oBAAC,SAAD;GAAS,GAAI;GAAW;EAAK,CAAA,CACtF;;AAET;;AAGA,SAAS,QAAQ,EACf,MACA,QACA,SAAS,KACT,SACA,gBACA,eACA,eACA,UAAU,YACV,YAAY,MACZ,YAAY,OAAO,SAAS,GAC5B,OAAO,QACP,eAAe,QACf,UAAU,QACV,iBACA,gBACA,aAAa,IACb,eACA,QACA,SACA,MAC+C;CAC/C,MAAM,SAAS,aAA8D,CAAC,CAAC;CAC/E,MAAM,EAAE,MAAM,UAAU,QAAQ,aAAa;CAE7C,MAAM,YAAY,iBAAiB;EAAE,UAAU;EAAQ,YAAW,UAAS,OAAO,QAAQ,KAAK;CAAE,CAAC;CAElG,MAAM,UAAU,OAAO,KAAI,MAAK,EAAE,OAAO,CAAC,CAAC,KAAK,IAAQ;CACxD,MAAM,YAAY,OAAO,KAAI,MAAK,EAAE,KAAK,CAAC,CAAC,KAAK,IAAQ;CAExD,MAAM,SAAS,cAAc;EAC3B,MAAM,OAAO,QAAQ,MAAM,IAAQ;EACnC,MAAM,SAAS,UAAU,MAAM,IAAQ;EACvC,OAAO,KAAK,KAAK,SAAS,MACxB,aAAa;GACX,MAAM,QAAQ,GAAG,OAAO,EAAE;GAC1B,OAAO,OAAO,MAAM;GACpB,QAAQ,YAAY;GACpB;GACA;EACF,CAAC,CACH;CACF,GAAG;EAAC;EAAS;EAAW;EAAS;CAAE,CAAC;CAEpC,MAAM,SAAS,kBAAkB,cAAc;CAC/C,MAAM,YAAY,KAAK,SAAS,YAAA,KAA2B;CAC3D,MAAM,SAAS,iBAAiB;EAAE,GAAG;EAAc,KAAK,aAAa,MAAM;CAAmB,IAAI;CAElG,OACE,qBAAAA,YAAA,EAAA,UAAA,CACE,oBAAC,UAAD;EAAU,OAAO;EAAI,QAAQ;CAAS,CAAA,GACtC,oBAAC,WAAD;EACU;EACR,SAAS;EACC;EACV,WAAW,CAAC,CAAC,iBAAiB,CAAC,UAAU;EACzC,WAAW,UAAU;EAErB,UAAA,qBAAC,eAAD;GACQ;GACE;GACR,aAAa,UAAU;GACvB,cAAa,UAAS;IACpB,IAAI,UAAU,WAAW,GAAG,OAAO,UAAU,YAAY,KAAK;IAC9D,MAAM,QAAQ,YAAY,KAAK;IAC/B,OAAO,QAAQ,UAAU,KAAA,IAAY,KAAA,IAAY;KAAE,OAAO;KAAO,KAAK;IAAM,CAAC;GAC/E;GACA,oBAAoB;IAElB,IAAI,CAAC,UAAU,WAAW,GAAG,OAAO,QAAQ,KAAA,CAAS;GACvD;GACA,UAAS,UAAS;IAChB,IAAI,UAAU,oBAAoB,GAAG;IACrC,MAAM,IAAI,YAAY,KAAK;IAC3B,MAAM,MAAM,MAAM,KAAA,IAAY,KAAA,IAAY,KAAK;IAC/C,IAAI,iBAAiB,OAAO,MAAM,KAAA,GAAW,cAAc,KAAK,CAAC;GACnE;GAlBF,UAAA;IAoBE,oBAAC,QAAD,EAAA,UACG,OAAO,KAAK,GAAG,MACd,qBAAC,kBAAD;KAAgC,IAAI,GAAG,GAAG,OAAO;KAAK,IAAG;KAAI,IAAG;KAAI,IAAG;KAAI,IAAG;KAA9E,UAAA,CACE,oBAAC,QAAD;MAAM,QAAO;MAAK,WAAW,EAAE;MAAO,aAAa;KAAI,CAAA,GACvD,oBAAC,QAAD;MAAM,QAAO;MAAO,WAAW,EAAE;MAAO,aAAa;KAAgB,CAAA,CACvD;IAHK,GAAA,EAAE,OAGP,CACjB,EACG,CAAA;IACN,oBAAC,eAAD,EAAe,GAAI,iBAAmB,CAAA;IACrC,UAAU,WAAW,oBAAC,mBAAD;KAA8B;KAAW,OAAO,KAAK;IAAS,CAAA;IACnF,UAAU;KAAE;KAAM;KAAM;KAAc;KAAS;IAAU,CAAC;IAC1D,WAAW;KACV,MAAM;KACN;KACA,WAAW,iBAAiB;KAC5B,QAAQ;KAER,KAAK,KAAK,IACR,QACE,MACA,OAAO,KAAI,MAAK,EAAE,OAAO,GACzB,IACF,GACA,eAAe,SAAS,CAC1B;KACA,SAAS,YACP,MACA,OAAO,KAAI,MAAK,EAAE,OAAO,CAC3B;IACF,CAAC;IACA,WACC,WAAW;KACT,IAAI;KACJ,MAAM;KACN;KACA,WAAW,QAAQ,kBAAkB,cAAc;KACnD,KAAK,QAAQ,MAAM,CAAC,QAAQ,OAAO,CAAC;KACpC,SAAS,YAAY,MAAM,CAAC,QAAQ,OAAO,CAAC;KAC5C,OAAO;IACT,CAAC;IACH,oBAAC,SAAD;KACE,GAAI;KACJ,QAAQ;KACR,SACE,oBAAC,sBAAD,EAAA,UACE,oBAAC,yBAAD;MACE,aAAa;MACb,WAAW,aAAa,CAAC;MACzB,UAAU;MACV,aAAa,SAAS,iBAAiB,GAAG,QAAQ,UAAU,QAAQ,eAAe,IAAI,KAAA;KACxF,CAAA,EACmB,CAAA;IAEzB,CAAA;IACA,OAAO,KAAK,GAAG,MACd,oBAAC,KAAD;KAEE,SAAS,EAAE;KACX,MAAM,EAAE;KACR,SAAQ;KACR,MAAM,EAAE;KACI;KACZ,mBAAmB;KACnB,OAAO,OAAO;KAEb,UAAA,kBACC,oBAAC,WAAD;MACE,SAAS;MACT,UAAU,UACR,oBAAC,aAAD;OACE,GAAI;OACJ,KAAK,KAAK,OAAO,MAAM,KAAK;OAC5B,MAAM,OAAO,KAAK,EAAE,cAAc,OAAO;OACzC,MAAM;OACN,OAAO,EAAE;MACV,CAAA;KAEJ,CAAA;IAEA,GAvBE,EAAE,OAuBJ,CACN;IACA,WACC,oBAAC,MAAD;KACE,SAAQ;KACR,MAAK;KACL,SAAS,QAAQ;KACjB,MAAM,QAAQ;KACd,QAAQ,QAAQ;KAChB,aAAa;KACb,iBAAgB;KAChB,KAAK;KACL,WAAW;MAAE,GAAG;MAAK,MAAM,QAAQ;MAAO,QAAQ;MAAqB,aAAa;KAAE;KACtF,mBAAmB;KACnB,cAAA;IACD,CAAA;IAEF,iBACC,oBAAC,eAAD;KACE,GAAG,cAAc;KACjB,YAAW;KACX,QAAQ,cAAc;KACtB,iBAAgB;KAChB,OAAO;MAAE,OAAO,cAAc;MAAO,UAAU;MAAiB,GAAG;KAAW;IAC/E,CAAA;GAEU;;CACN,CAAA,CACX,EAAA,CAAA;AAEN;AASA,SAAS,WAAW,QAAkB,MAAc,KAAiB;CACnE,IAAI,OAAO,SAAS,GAAG,OAAO,kBAAkB,QAAQ,MAAM,KAAK,EAAE,KAAK,YAAY,CAAC,CAAC,EAAE;CAC1F,OAAO,aAAa,OAAO,SAAS,GAAG,GAAG,CAAC,EAAE;AAC/C;AAEA,SAAS,YAAY,EAAE,GAAG,GAAG,OAAO,QAAQ,OAAO,KAAK,MAAM,MAAM,SAA2B;CAC7F,IAAI,UAAU,KAAA,KAAa,UAAU,QAAQ,UAAU,IAAI,OAAO;CAClE,MAAM,SAAS,KAAK,KAAI,QAAO,OAAO,MAAM,IAAI,KAAK,CAAC;CACtD,MAAM,UAAU,OAAO,eAAc,MAAK,IAAI,CAAC;CAC/C,IAAI,UAAU,YAAY,KAAK,KAAK,SAAS,IAAI,UAAU,OAAO;CAClE,MAAM,MAAM,WAAW,QAAQ,MAAM;EAAE,GAAG,OAAO,CAAC;EAAG,QAAQ,KAAK,IAAI,OAAO,MAAM,GAAG,CAAC;CAAE,CAAC,KAAK,OAAO,CAAC;CACvG,OACE,oBAAC,QAAD;EACE,GAAG,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI;EAC/B,GAAG,MAAM;EACT,YAAW;EACX,UAAA;EACA,MAAM;EACN,WAAU;EAET,UAAA,OAAO,KAAK;CACT,CAAA;AAEV"}
1
+ {"version":3,"file":"MetricsStackedBarChart-Bmk0OjYp.js","names":["_Fragment"],"sources":["../src/ds/components/MetricsStackedBarChart/metrics-stacked-bar-chart.tsx"],"sourcesContent":["import { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Bar, CartesianGrid, ComposedChart, LabelList, Line, Rectangle, ReferenceLine, Tooltip } from 'recharts';\nimport type { LabelProps } from 'recharts';\nimport { ChartSkeleton } from '@/ds/components/ChartSkeleton';\nimport type { MetricsLineChartSeries } from '@/ds/components/MetricsLineChart';\nimport { MetricsLineChartLegend, MetricsLineChartTooltip } from '@/ds/components/MetricsLineChart';\nimport { CHART_GRID_PROPS, CHART_TOOLTIP_PROPS, useChartSize } from '@/ds/primitives/chart-axes';\nimport type { ChartXLabels } from '@/ds/primitives/chart-axes';\nimport { singleBarBox, stackedSegmentBox } from '@/ds/primitives/chart-column-layout';\nimport type { SegmentBox } from '@/ds/primitives/chart-column-layout';\nimport {\n CHART_TICK,\n Y_AXIS_WIDTH,\n compactNumber,\n dataMax,\n isWholeData,\n timeXAxis,\n valueYAxis,\n} from '@/ds/primitives/chart-frame';\nimport type { ChartHeight } from '@/ds/primitives/chart-frame';\nimport { CHART_AXIS_FONT_SIZE, CHART_MARGIN } from '@/ds/primitives/chart-layout';\nimport { ChartPlot } from '@/ds/primitives/chart-plot';\nimport { ChartTooltipPosition } from '@/ds/primitives/chart-tooltip-position';\nimport { DragSelectionBand, activeIndex, useDragSelection } from '@/ds/primitives/charts/drag-selection';\nimport type { DragSelectionRange } from '@/ds/primitives/charts/drag-selection';\nimport { useChartDefsId } from '@/ds/primitives/use-chart-defs-id';\nimport { cn } from '@/lib/utils';\n\n/** Corner radius of every segment; thin segments scale it down so they stay crisp rectangles. */\nconst RADIUS = 2;\n/** Pixels between stacked segments, so neighbouring segments read as separate blocks. */\nconst SEGMENT_GAP = 2;\n/** Opacity at the base of a segment's gradient (the top is fully opaque). */\nconst GRADIENT_BASE = 0.75;\n/** Single-series bars: translucent body under a solid cap that marks the value. */\nconst CAP_BODY = 0.55;\nconst CAP_HEIGHT = 3;\n/** Opacity of the other columns while one is hovered. */\nconst DIMMED = 0.3;\nconst COLUMN_LABEL_SPACE = 16;\n\ntype SegmentProps = {\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n index?: number;\n payload?: Record<string, unknown>;\n};\n\nfunction segmentShape({\n fill,\n color,\n capped,\n keys,\n dataKey,\n}: {\n fill: string;\n color: string;\n capped: boolean;\n /** The column's data keys, bottom to top. */\n keys: string[];\n dataKey: string;\n}) {\n return function Segment({ x = 0, width = 0, index, payload, ...geo }: SegmentProps) {\n const values = keys.map(k => Number(payload?.[k]) || 0);\n const self = keys.indexOf(dataKey);\n const box = { y: geo.y ?? 0, height: Math.max(geo.height ?? 0, 0) };\n // Every non-zero value gets a few readable pixels; zeros draw nothing.\n const laid =\n keys.length > 1\n ? stackedSegmentBox(values, self, box, { gap: SEGMENT_GAP })\n : singleBarBox(values[self] ?? 0, box);\n if (!laid) return <g />;\n const { y, height: h } = laid;\n const radius = Math.min(RADIUS, Math.floor(h / 3));\n // Dimming is a CSS rule keyed on `data-bucket` (see `HoverDim`), so hovering re-renders no bars.\n const bucket = { 'data-bucket': index };\n\n if (capped) {\n return (\n <g {...bucket}>\n <Rectangle x={x} y={y} width={width} height={h} radius={radius} fill={color} fillOpacity={CAP_BODY} />\n <Rectangle x={x} y={y} width={width} height={Math.min(CAP_HEIGHT, h)} radius={radius} fill={color} />\n </g>\n );\n }\n return (\n <g {...bucket}>\n <Rectangle x={x} y={y} width={width} height={h} radius={radius} fill={fill} />\n </g>\n );\n };\n}\n\n/**\n * Dims every column outside the hovered one, or outside the range being dragged. Its own tiny\n * state, so a move only re-renders this <style> tag: with hundreds of buckets, re-rendering the\n * bars on each move froze the pointer.\n */\nfunction HoverDim({\n scope,\n setter,\n}: {\n scope: string;\n setter: { current: (range: DragSelectionRange | undefined) => void };\n}) {\n const [lit, setLit] = useState<DragSelectionRange>();\n useLayoutEffect(() => {\n setter.current = setLit;\n }, [setter]);\n if (!lit) return null;\n const columns = `[data-chart-scope=\"${scope}\"] [data-bucket]`;\n const kept = Array.from(\n { length: lit.end - lit.start + 1 },\n (_, i) => `${columns}[data-bucket=\"${lit.start + i}\"]`,\n ).join(',');\n return <style>{`${columns}{opacity:${DIMMED}}${kept}{opacity:1}`}</style>;\n}\n\n/** A line drawn over the bars on its own scale, e.g. average wake time over cold starts. */\nexport type MetricsStackedBarChartOverlay = MetricsLineChartSeries & {\n valueFormatter?: (value: number) => string;\n};\n\nexport type MetricsStackedBarChartProps = {\n data: Record<string, unknown>[];\n series: MetricsLineChartSeries[];\n /** Pixels, or `fill` to grow with the parent (a flex column, e.g. a card's content). */\n height?: ChartHeight;\n yDomain?: [number, number];\n /** Formats tooltip values, and y-axis ticks unless `axisFormatter` is set. */\n valueFormatter?: (value: number) => string;\n /** Formats y-axis ticks, when they need a shorter form than the tooltip. */\n axisFormatter?: (value: number) => string;\n showLegend?: boolean;\n referenceLine?: { value: number; label: string; color: string };\n /**\n * `gradient`: segments fade gently toward the base. Reads best for stacks.\n * `capped`: a translucent body under a solid cap that marks the value. Reads best for one\n * value per column.\n */\n variant?: 'gradient' | 'capped';\n /**\n * Set to `false` to drop the y-axis labels and let the plot span the card. The gridlines stay\n * for relative scale; exact values come from the tooltip and the card's summary.\n */\n showYAxis?: boolean;\n /** Adds a \"Total\" row (the column's height) to the tooltip. Defaults to on for stacks. */\n showTotal?: boolean;\n /** Row field printed under the x-axis. */\n xKey?: string;\n /** Row field with the bucket's start time (ms), which places labels on round clock times. */\n timestampKey?: string;\n /** `auto` fits as many labels as the width allows; `edges` prints only the first and last. */\n xLabels?: ChartXLabels;\n /** Row field for the tooltip heading (e.g. a longer date); defaults to the x-axis label. */\n tooltipLabelKey?: string;\n columnLabelKey?: string;\n /** Widest a column gets, in pixels. Defaults to 28; raise it for dense strips of many thin columns. */\n maxBarSize?: number;\n /** Click a column (e.g. to open its traces); the plot shows a pointer cursor. */\n onBucketClick?: (row: Record<string, unknown>, index: number) => void;\n /**\n * Drag across two or more columns to select them (e.g. to zoom into that time span); reports the\n * first and last selected row indices. A press and release on one column stays a click.\n */\n onZoom?: (range: DragSelectionRange) => void;\n /** One dashed line over the bars, on its own hidden scale (e.g. a duration over counts). */\n overlay?: MetricsStackedBarChartOverlay;\n /** Show a ghost of the chart while data loads, in the chart's own footprint. */\n isLoading?: boolean;\n className?: string;\n};\n\nexport function MetricsStackedBarChart(props: MetricsStackedBarChartProps) {\n const { data, series, overlay, height = 210, showLegend = true, isLoading = false, className } = props;\n const id = useChartDefsId();\n const root = cn(height === 'fill' && 'flex min-h-0 flex-1 flex-col', className);\n const legend = overlay ? [...series, { ...overlay, dashed: true }] : series;\n // The legend stays while loading: it comes from the series, not the data.\n return (\n <div className={root} data-chart-scope={id}>\n {showLegend && <MetricsLineChartLegend series={legend} className=\"mb-4\" />}\n {isLoading ? <ChartSkeleton kind=\"bar\" height={height} /> : <BarPlot {...props} id={id} />}\n </div>\n );\n}\n\n/** The plot itself, once the data is in; `id` scopes its gradients and hover rule. */\nfunction BarPlot({\n data,\n series,\n height = 210,\n yDomain,\n valueFormatter,\n axisFormatter,\n referenceLine,\n variant = 'gradient',\n showYAxis = true,\n showTotal = series.length > 1,\n xKey = 'time',\n timestampKey = 'tsMs',\n xLabels = 'auto',\n tooltipLabelKey,\n columnLabelKey,\n maxBarSize = 28,\n onBucketClick,\n onZoom,\n overlay,\n id,\n}: MetricsStackedBarChartProps & { id: string }) {\n const setLit = useRef<(range: DragSelectionRange | undefined) => void>(() => {});\n const { size, onResize, ref } = useChartSize();\n // The dragged columns stay lit through the same rule as hover, so a drag never re-renders the bars.\n const selection = useDragSelection({ onSelect: onZoom, onPreview: range => setLit.current(range) });\n\n const keyList = series.map(s => s.dataKey).join('\\u0000');\n const colorList = series.map(s => s.color).join('\\u0000');\n // Stable shapes, so Recharts doesn't re-render every bar when the parent re-renders.\n const shapes = useMemo(() => {\n const keys = keyList.split('\\u0000');\n const colors = colorList.split('\\u0000');\n return keys.map((dataKey, i) =>\n segmentShape({\n fill: `url(#${id}-bar-${i})`,\n color: colors[i] ?? '',\n capped: variant === 'capped',\n keys,\n dataKey,\n }),\n );\n }, [keyList, colorList, variant, id]);\n\n const format = valueFormatter ?? compactNumber.format;\n const plotWidth = size.width - (showYAxis ? Y_AXIS_WIDTH : 0);\n const margin = columnLabelKey ? { ...CHART_MARGIN, top: CHART_MARGIN.top + COLUMN_LABEL_SPACE } : CHART_MARGIN;\n\n return (\n <>\n <HoverDim scope={id} setter={setLit} />\n <ChartPlot\n height={height}\n plotRef={ref}\n onResize={onResize}\n clickable={!!onBucketClick && !selection.enabled}\n className={selection.className}\n >\n <ComposedChart\n data={data}\n margin={margin}\n onMouseDown={selection.onMouseDown}\n onMouseMove={state => {\n if (selection.isDragging()) return selection.onMouseMove(state);\n const index = activeIndex(state);\n setLit.current(index === undefined ? undefined : { start: index, end: index });\n }}\n onMouseLeave={() => {\n // Mid-drag the selection stays lit until the release.\n if (!selection.isDragging()) setLit.current(undefined);\n }}\n onClick={state => {\n if (selection.consumeReleaseClick()) return;\n const i = activeIndex(state);\n const row = i === undefined ? undefined : data[i];\n if (onBucketClick && row && i !== undefined) onBucketClick(row, i);\n }}\n >\n <defs>\n {series.map((s, i) => (\n <linearGradient key={s.dataKey} id={`${id}-bar-${i}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={s.color} stopOpacity={1} />\n <stop offset=\"100%\" stopColor={s.color} stopOpacity={GRADIENT_BASE} />\n </linearGradient>\n ))}\n </defs>\n <CartesianGrid {...CHART_GRID_PROPS} />\n {selection.enabled && <DragSelectionBand selection={selection} count={data.length} />}\n {timeXAxis({ data, xKey, timestampKey, xLabels, plotWidth })}\n {valueYAxis({\n show: showYAxis,\n size,\n formatter: axisFormatter ?? format,\n domain: yDomain,\n // A reference line above the bars stays on the axis.\n max: Math.max(\n dataMax(\n data,\n series.map(s => s.dataKey),\n true,\n ),\n referenceLine?.value ?? 0,\n ),\n integer: isWholeData(\n data,\n series.map(s => s.dataKey),\n ),\n })}\n {overlay &&\n valueYAxis({\n id: 'overlay',\n show: false,\n size,\n formatter: overlay.valueFormatter ?? compactNumber.format,\n max: dataMax(data, [overlay.dataKey]),\n integer: isWholeData(data, [overlay.dataKey]),\n right: true,\n })}\n <Tooltip\n {...CHART_TOOLTIP_PROPS}\n cursor={false}\n content={\n <ChartTooltipPosition>\n <MetricsLineChartTooltip\n formatValue={format}\n showTotal={showTotal && !overlay}\n labelKey={tooltipLabelKey}\n formatByKey={overlay?.valueFormatter ? { [overlay.dataKey]: overlay.valueFormatter } : undefined}\n />\n </ChartTooltipPosition>\n }\n />\n {series.map((s, i) => (\n <Bar\n key={s.dataKey}\n dataKey={s.dataKey}\n name={s.label}\n stackId=\"1\"\n fill={s.color}\n maxBarSize={maxBarSize}\n isAnimationActive={false}\n shape={shapes[i]}\n >\n {columnLabelKey && (\n <LabelList\n dataKey={columnLabelKey}\n content={(props: LabelProps) => (\n <ColumnLabel\n {...props}\n row={data[Number(props.index)]}\n keys={series.map(({ dataKey }) => dataKey)}\n self={i}\n color={s.color}\n />\n )}\n />\n )}\n </Bar>\n ))}\n {overlay && (\n <Line\n yAxisId=\"overlay\"\n type=\"monotone\"\n dataKey={overlay.dataKey}\n name={overlay.label}\n stroke={overlay.color}\n strokeWidth={1.75}\n strokeDasharray=\"4 3\"\n dot={false}\n activeDot={{ r: 3.5, fill: overlay.color, stroke: 'var(--background)', strokeWidth: 2 }}\n isAnimationActive={false}\n connectNulls\n />\n )}\n {referenceLine && (\n <ReferenceLine\n y={referenceLine.value}\n ifOverflow=\"extendDomain\"\n stroke={referenceLine.color}\n strokeDasharray=\"4 4\"\n label={{ value: referenceLine.label, position: 'insideTopLeft', ...CHART_TICK }}\n />\n )}\n </ComposedChart>\n </ChartPlot>\n </>\n );\n}\n\ntype ColumnLabelProps = LabelProps & {\n row: MetricsStackedBarChartProps['data'][number] | undefined;\n keys: string[];\n self: number;\n color: string;\n};\n\nfunction paintedTop(values: number[], self: number, box: SegmentBox) {\n if (values.length > 1) return stackedSegmentBox(values, self, box, { gap: SEGMENT_GAP })?.y;\n return singleBarBox(values[self] ?? 0, box)?.y;\n}\n\nfunction ColumnLabel({ x, y, width, height, value, row, keys, self, color }: ColumnLabelProps) {\n if (value === undefined || value === null || value === '') return null;\n const values = keys.map(key => Number(row?.[key]) || 0);\n const topmost = values.findLastIndex(v => v > 0);\n if (self !== (topmost === -1 ? keys.length - 1 : topmost)) return null;\n const top = paintedTop(values, self, { y: Number(y), height: Math.max(Number(height), 0) }) ?? Number(y);\n return (\n <text\n x={Number(x) + Number(width) / 2}\n y={top - 6}\n textAnchor=\"middle\"\n fontSize={CHART_AXIS_FONT_SIZE}\n fill={color}\n className=\"tabular-nums\"\n >\n {String(value)}\n </text>\n );\n}\n"],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- const require_utils = require("./utils-uDc1ofX1.cjs");
2
- const require_MetricsLineChart = require("./MetricsLineChart-tZxsauau.cjs");
3
- const require_primitives_chart_layout = require("./primitives/chart-layout.cjs.js");
4
1
  const require_components_ChartSkeleton = require("./components/ChartSkeleton.cjs.js");
2
+ const require_MetricsLineChart = require("./MetricsLineChart-BnY9JKzc.cjs");
5
3
  const require_primitives_chart_axes = require("./primitives/chart-axes.cjs.js");
4
+ const require_primitives_chart_column_layout = require("./primitives/chart-column-layout.cjs.js");
6
5
  const require_primitives_chart_frame = require("./primitives/chart-frame.cjs.js");
6
+ const require_primitives_chart_layout = require("./primitives/chart-layout.cjs.js");
7
7
  const require_primitives_chart_plot = require("./primitives/chart-plot.cjs.js");
8
8
  const require_primitives_chart_tooltip_position = require("./primitives/chart-tooltip-position.cjs.js");
9
- const require_primitives_use_chart_defs_id = require("./primitives/use-chart-defs-id.cjs.js");
10
- const require_primitives_chart_column_layout = require("./primitives/chart-column-layout.cjs.js");
11
- const require_primitives_charts_drag_selection_drag_selection_range = require("./primitives/charts/drag-selection/drag-selection-range.cjs.js");
12
9
  const require_primitives_charts_drag_selection_drag_selection_band = require("./primitives/charts/drag-selection/drag-selection-band.cjs.js");
10
+ const require_primitives_charts_drag_selection_drag_selection_range = require("./primitives/charts/drag-selection/drag-selection-range.cjs.js");
13
11
  const require_primitives_charts_drag_selection_use_drag_selection = require("./primitives/charts/drag-selection/use-drag-selection.cjs.js");
12
+ const require_primitives_use_chart_defs_id = require("./primitives/use-chart-defs-id.cjs.js");
13
+ const require_utils = require("./utils-uDc1ofX1.cjs");
14
14
  let react = require("react");
15
15
  let react_jsx_runtime = require("react/jsx-runtime");
16
16
  let recharts = require("recharts");
@@ -310,4 +310,4 @@ Object.defineProperty(exports, "MetricsStackedBarChart", {
310
310
  }
311
311
  });
312
312
 
313
- //# sourceMappingURL=MetricsStackedBarChart-CDLE76IB.cjs.map
313
+ //# sourceMappingURL=MetricsStackedBarChart-CJQF99sc.cjs.map