@mastra/playground-ui 69.0.0-alpha.1 → 69.0.0-alpha.2

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 (325) hide show
  1. package/components.css +6 -0
  2. package/dist/{CodeEditor-ZoBu3Gjw.js → CodeEditor-BqAM9L7t.js} +5 -2
  3. package/dist/{CodeEditor-ZoBu3Gjw.js.map → CodeEditor-BqAM9L7t.js.map} +1 -1
  4. package/dist/{CodeEditor-DHIDfP5g.cjs → CodeEditor-zMSUzPdX.cjs} +5 -2
  5. package/dist/{CodeEditor-DHIDfP5g.cjs.map → CodeEditor-zMSUzPdX.cjs.map} +1 -1
  6. package/dist/{Comment-rQxuMDQv.cjs → Comment-A07IvOt2.cjs} +3 -3
  7. package/dist/{Comment-rQxuMDQv.cjs.map → Comment-A07IvOt2.cjs.map} +1 -1
  8. package/dist/{Comment-2q9SomE2.js → Comment-D_gSx7oM.js} +3 -3
  9. package/dist/{Comment-2q9SomE2.js.map → Comment-D_gSx7oM.js.map} +1 -1
  10. package/dist/{Composer-u1K6edoZ.cjs → Composer-D2BqRyb5.cjs} +2 -2
  11. package/dist/Composer-D2BqRyb5.cjs.map +1 -0
  12. package/dist/{Composer-bVE8qK52.js → Composer-kjwmlIgL.js} +2 -2
  13. package/dist/Composer-kjwmlIgL.js.map +1 -0
  14. package/dist/{DataCodeSection-CTodi9wg.js → DataCodeSection-CcX8Z68Y.js} +2 -2
  15. package/dist/{DataCodeSection-CTodi9wg.js.map → DataCodeSection-CcX8Z68Y.js.map} +1 -1
  16. package/dist/{DataCodeSection-7SvRJj6f.cjs → DataCodeSection-JPGTWLcL.cjs} +2 -2
  17. package/dist/{DataCodeSection-7SvRJj6f.cjs.map → DataCodeSection-JPGTWLcL.cjs.map} +1 -1
  18. package/dist/{DataDetailsPanel-BDoD6pxx.cjs → DataDetailsPanel-DCMlaG7j.cjs} +2 -2
  19. package/dist/{DataDetailsPanel-BDoD6pxx.cjs.map → DataDetailsPanel-DCMlaG7j.cjs.map} +1 -1
  20. package/dist/{DataDetailsPanel-BU05psHL.js → DataDetailsPanel-mTfbbQho.js} +2 -2
  21. package/dist/{DataDetailsPanel-BU05psHL.js.map → DataDetailsPanel-mTfbbQho.js.map} +1 -1
  22. package/dist/{DataPanel-BRRAvWYQ.cjs → DataPanel-LfExjFpP.cjs} +2 -2
  23. package/dist/{DataPanel-BRRAvWYQ.cjs.map → DataPanel-LfExjFpP.cjs.map} +1 -1
  24. package/dist/{DataPanel-pVr5LVaK.js → DataPanel-Rv5Mb_pf.js} +2 -2
  25. package/dist/{DataPanel-pVr5LVaK.js.map → DataPanel-Rv5Mb_pf.js.map} +1 -1
  26. package/dist/{FilterBar-CFacnMNl.js → FilterBar-DgHNtsDI.js} +5 -5
  27. package/dist/FilterBar-DgHNtsDI.js.map +1 -0
  28. package/dist/{FilterBar-CR8nbvoe.cjs → FilterBar-O8SYau_Q.cjs} +5 -5
  29. package/dist/FilterBar-O8SYau_Q.cjs.map +1 -0
  30. package/dist/{Tree-kgLG4IbP.cjs → Tree-6pubDJLQ.cjs} +2 -2
  31. package/dist/Tree-6pubDJLQ.cjs.map +1 -0
  32. package/dist/{Tree-D1_VJClB.js → Tree-DpRLmis3.js} +2 -2
  33. package/dist/Tree-DpRLmis3.js.map +1 -0
  34. package/dist/{Workflow-CXRv3YXx.js → Workflow-BVVYys0W.js} +2 -2
  35. package/dist/{Workflow-CXRv3YXx.js.map → Workflow-BVVYys0W.js.map} +1 -1
  36. package/dist/{Workflow-DIfTVqZs.cjs → Workflow-CwIjxwC6.cjs} +2 -2
  37. package/dist/{Workflow-DIfTVqZs.cjs.map → Workflow-CwIjxwC6.cjs.map} +1 -1
  38. package/dist/{ask-user-D4ezQ6pt.js → ask-user-CqzPUD9E.js} +2 -2
  39. package/dist/{ask-user-D4ezQ6pt.js.map → ask-user-CqzPUD9E.js.map} +1 -1
  40. package/dist/{ask-user-DcnUNMM5.cjs → ask-user-DIYcPkoX.cjs} +2 -2
  41. package/dist/{ask-user-DcnUNMM5.cjs.map → ask-user-DIYcPkoX.cjs.map} +1 -1
  42. package/dist/{combobox-lbSxWRMl.js → combobox-DLdInLYm.js} +2 -2
  43. package/dist/{combobox-lbSxWRMl.js.map → combobox-DLdInLYm.js.map} +1 -1
  44. package/dist/{combobox-i723LxeC.cjs → combobox-DU2jsrGa.cjs} +2 -2
  45. package/dist/{combobox-i723LxeC.cjs.map → combobox-DU2jsrGa.cjs.map} +1 -1
  46. package/dist/{combobox-parts-BeNqgCbj.cjs → combobox-parts-C236ZHtn.cjs} +2 -2
  47. package/dist/combobox-parts-C236ZHtn.cjs.map +1 -0
  48. package/dist/{combobox-parts-C9o4UfH_.js → combobox-parts-_m3Qgmci.js} +2 -2
  49. package/dist/combobox-parts-_m3Qgmci.js.map +1 -0
  50. package/dist/components/CodeEditor.cjs.js +1 -1
  51. package/dist/components/CodeEditor.es.js +1 -1
  52. package/dist/components/Combobox.cjs.js +2 -2
  53. package/dist/components/Combobox.es.js +2 -2
  54. package/dist/components/Command.cjs.js +1 -1
  55. package/dist/components/Command.cjs.js.map +1 -1
  56. package/dist/components/Command.es.js +1 -1
  57. package/dist/components/Command.es.js.map +1 -1
  58. package/dist/components/Comment.cjs.js +1 -1
  59. package/dist/components/Comment.es.js +1 -1
  60. package/dist/components/Composer.cjs.js +1 -1
  61. package/dist/components/Composer.es.js +1 -1
  62. package/dist/components/DataCodeSection.cjs.js +1 -1
  63. package/dist/components/DataCodeSection.es.js +1 -1
  64. package/dist/components/DataDetailsPanel.cjs.js +1 -1
  65. package/dist/components/DataDetailsPanel.es.js +1 -1
  66. package/dist/components/DataList.cjs.js +1 -1
  67. package/dist/components/DataList.es.js +1 -1
  68. package/dist/components/DataPanel.cjs.js +1 -1
  69. package/dist/components/DataPanel.es.js +1 -1
  70. package/dist/components/DateTimePicker.cjs.js +1 -1
  71. package/dist/components/DateTimePicker.es.js +1 -1
  72. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  73. package/dist/components/DateTimeRangePicker.es.js +1 -1
  74. package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
  75. package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
  76. package/dist/components/FilterBar.cjs.js +3 -3
  77. package/dist/components/FilterBar.es.js +3 -3
  78. package/dist/components/FormFieldBlocks.cjs.js +1 -1
  79. package/dist/components/FormFieldBlocks.es.js +1 -1
  80. package/dist/components/Input.cjs.js +1 -1
  81. package/dist/components/Input.es.js +1 -1
  82. package/dist/components/InputGroup.cjs.js +1 -1
  83. package/dist/components/InputGroup.es.js +1 -1
  84. package/dist/components/InputNumber.cjs.js +1 -1
  85. package/dist/components/InputNumber.es.js +1 -1
  86. package/dist/components/JSONSchemaForm.cjs.js +1 -1
  87. package/dist/components/JSONSchemaForm.es.js +1 -1
  88. package/dist/components/PropertyFilter.cjs.js +2 -2
  89. package/dist/components/PropertyFilter.es.js +2 -2
  90. package/dist/components/RuleBuilder.cjs.js +1 -1
  91. package/dist/components/RuleBuilder.es.js +1 -1
  92. package/dist/components/SavedViews.cjs.js +2 -2
  93. package/dist/components/SavedViews.cjs.js.map +1 -1
  94. package/dist/components/SavedViews.es.js +2 -2
  95. package/dist/components/SavedViews.es.js.map +1 -1
  96. package/dist/components/SearchInput.cjs.js +1 -1
  97. package/dist/components/SearchInput.es.js +1 -1
  98. package/dist/components/SideDialog.cjs.js +1 -1
  99. package/dist/components/SideDialog.es.js +1 -1
  100. package/dist/components/Textarea.cjs.js +1 -1
  101. package/dist/components/Textarea.cjs.js.map +1 -1
  102. package/dist/components/Textarea.es.js +1 -1
  103. package/dist/components/Textarea.es.js.map +1 -1
  104. package/dist/components/Tree.cjs.js +1 -1
  105. package/dist/components/Tree.es.js +1 -1
  106. package/dist/components/Workflow.cjs.js +1 -1
  107. package/dist/components/Workflow.es.js +1 -1
  108. package/dist/components/ai/ask-user.cjs.js +1 -1
  109. package/dist/components/ai/ask-user.es.js +1 -1
  110. package/dist/{date-time-range-picker-BUjjjvo8.js → date-time-range-picker-CJyhcug7.js} +2 -2
  111. package/dist/{date-time-range-picker-BUjjjvo8.js.map → date-time-range-picker-CJyhcug7.js.map} +1 -1
  112. package/dist/{date-time-range-picker-2a-wUBTk.cjs → date-time-range-picker-Dhnuwa-U.cjs} +2 -2
  113. package/dist/{date-time-range-picker-2a-wUBTk.cjs.map → date-time-range-picker-Dhnuwa-U.cjs.map} +1 -1
  114. package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +1 -1
  115. package/dist/domains/chat/attachments/composer-attachment-list.es.js +1 -1
  116. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  117. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  118. package/dist/domains/chat/messages/dataset-save-action.cjs.js +1 -1
  119. package/dist/domains/chat/messages/dataset-save-action.es.js +1 -1
  120. package/dist/domains/chat/messages/message-row.cjs.js +1 -1
  121. package/dist/domains/chat/messages/message-row.es.js +1 -1
  122. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  123. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  124. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  125. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  126. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  127. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  128. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
  129. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
  130. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +1 -1
  131. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +1 -1
  132. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +1 -1
  133. package/dist/domains/chat/tools/badges/tool-badge.es.js +1 -1
  134. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
  135. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
  136. package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js +2 -2
  137. package/dist/domains/chat/tools/mcp-input-request-tool.es.js +2 -2
  138. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  139. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  140. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +1 -1
  141. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +1 -1
  142. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +2 -2
  143. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +2 -2
  144. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +2 -2
  145. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +2 -2
  146. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +2 -2
  147. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +2 -2
  148. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  149. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  150. package/dist/domains/logs/components/logs-saved-views.cjs.js +1 -1
  151. package/dist/domains/logs/components/logs-saved-views.es.js +1 -1
  152. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  153. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  154. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  155. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  156. package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +1 -1
  157. package/dist/domains/metrics/components/metrics-time-range-chip.es.js +1 -1
  158. package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +1 -1
  159. package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -1
  160. package/dist/domains/observability/saved-views.cjs.js +1 -1
  161. package/dist/domains/observability/saved-views.es.js +1 -1
  162. package/dist/domains/observability.cjs.js +1 -1
  163. package/dist/domains/observability.es.js +1 -1
  164. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  165. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  166. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  167. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  168. package/dist/domains/skills/skill-simple-form.cjs.js +2 -2
  169. package/dist/domains/skills/skill-simple-form.es.js +2 -2
  170. package/dist/domains/spans/components/spans-explorer-body.cjs.js +1 -1
  171. package/dist/domains/spans/components/spans-explorer-body.es.js +1 -1
  172. package/dist/domains/spans/components/spans-filter-bar.cjs.js +2 -2
  173. package/dist/domains/spans/components/spans-filter-bar.es.js +2 -2
  174. package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +1 -1
  175. package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +1 -1
  176. package/dist/domains/threads/components/threads-explorer-body.cjs.js +1 -1
  177. package/dist/domains/threads/components/threads-explorer-body.es.js +1 -1
  178. package/dist/domains/threads/components/threads-filter-bar.cjs.js +2 -2
  179. package/dist/domains/threads/components/threads-filter-bar.es.js +2 -2
  180. package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +1 -1
  181. package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +1 -1
  182. package/dist/domains/traces/components/feedback-thread.cjs.js +2 -2
  183. package/dist/domains/traces/components/feedback-thread.es.js +2 -2
  184. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  185. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  186. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  187. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  188. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  189. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  190. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  191. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  192. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  193. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  194. package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -1
  195. package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
  196. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +1 -1
  197. package/dist/domains/traces/components/trace-data-panel-view.es.js +1 -1
  198. package/dist/domains/traces/components/trace-details-view.cjs.js +1 -1
  199. package/dist/domains/traces/components/trace-details-view.es.js +1 -1
  200. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  201. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  202. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  203. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  204. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  205. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  206. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
  207. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
  208. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +1 -1
  209. package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +1 -1
  210. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +1 -1
  211. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +1 -1
  212. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  213. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  214. package/dist/domains/workflows/components/workflow-layout.cjs.js +1 -1
  215. package/dist/domains/workflows/components/workflow-layout.es.js +1 -1
  216. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
  217. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  218. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  219. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  220. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +1 -1
  221. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
  222. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  223. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  224. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
  225. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  226. package/dist/domains/workflows/workflow/utils.cjs.js +1 -1
  227. package/dist/domains/workflows/workflow/utils.es.js +1 -1
  228. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  229. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  230. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  231. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  232. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  233. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  234. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  235. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  236. package/dist/domains/workflows/workflow/workflow-graph-layout.cjs.js +1 -1
  237. package/dist/domains/workflows/workflow/workflow-graph-layout.es.js +1 -1
  238. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
  239. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  240. package/dist/domains/workflows/workflow/workflow-graph.cjs.js +1 -1
  241. package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
  242. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
  243. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
  244. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +1 -1
  245. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +1 -1
  246. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +1 -1
  247. package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
  248. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  249. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  250. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
  251. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +1 -1
  252. package/dist/domains/workflows/workflow/workflow-step-node-utils.cjs.js +1 -1
  253. package/dist/domains/workflows/workflow/workflow-step-node-utils.es.js +1 -1
  254. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
  255. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  256. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
  257. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
  258. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +1 -1
  259. package/dist/domains/workspace/components/workspace-create-directory.es.js +1 -1
  260. package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
  261. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  262. package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
  263. package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
  264. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
  265. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
  266. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  267. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  268. package/dist/{filter-bar-chip-NBtfDca9.js → filter-bar-chip-Cz5GYBWP.js} +2 -2
  269. package/dist/{filter-bar-chip-NBtfDca9.js.map → filter-bar-chip-Cz5GYBWP.js.map} +1 -1
  270. package/dist/{filter-bar-chip-DFsbUZ-V.cjs → filter-bar-chip-q2Zr-cnY.cjs} +2 -2
  271. package/dist/{filter-bar-chip-DFsbUZ-V.cjs.map → filter-bar-chip-q2Zr-cnY.cjs.map} +1 -1
  272. package/dist/{filter-bar-time-range-CEgdThCy.cjs → filter-bar-time-range-D4C3kU0J.cjs} +3 -3
  273. package/dist/{filter-bar-time-range-CEgdThCy.cjs.map → filter-bar-time-range-D4C3kU0J.cjs.map} +1 -1
  274. package/dist/{filter-bar-time-range-CHSMbpPd.js → filter-bar-time-range-ao2YiYEJ.js} +3 -3
  275. package/dist/{filter-bar-time-range-CHSMbpPd.js.map → filter-bar-time-range-ao2YiYEJ.js.map} +1 -1
  276. package/dist/{input-Cyit5ZSc.js → input-BNykbvOz.js} +2 -2
  277. package/dist/input-BNykbvOz.js.map +1 -0
  278. package/dist/{input-BpnUsQSt.cjs → input-D_V0m95F.cjs} +2 -2
  279. package/dist/input-D_V0m95F.cjs.map +1 -0
  280. package/dist/{input-group-NV4ZzKOk.js → input-group-CCSyY4J5.js} +3 -3
  281. package/dist/{input-group-NV4ZzKOk.js.map → input-group-CCSyY4J5.js.map} +1 -1
  282. package/dist/{input-group-DBCilXjT.cjs → input-group-Da8HBo30.cjs} +3 -3
  283. package/dist/{input-group-DBCilXjT.cjs.map → input-group-Da8HBo30.cjs.map} +1 -1
  284. package/dist/layout/tabbed-container.cjs.js +1 -1
  285. package/dist/layout/tabbed-container.es.js +1 -1
  286. package/dist/lib/form/components/number-field.cjs.js +1 -1
  287. package/dist/lib/form/components/number-field.es.js +1 -1
  288. package/dist/lib/form/components/record-field.cjs.js +1 -1
  289. package/dist/lib/form/components/record-field.es.js +1 -1
  290. package/dist/{observability-saved-views-UM8HBJ6J.cjs → observability-saved-views-CzRPN_9m.cjs} +3 -3
  291. package/dist/{observability-saved-views-UM8HBJ6J.cjs.map → observability-saved-views-CzRPN_9m.cjs.map} +1 -1
  292. package/dist/{observability-saved-views-lLWk1w0g.js → observability-saved-views-hu_hkXVY.js} +3 -3
  293. package/dist/{observability-saved-views-lLWk1w0g.js.map → observability-saved-views-hu_hkXVY.js.map} +1 -1
  294. package/dist/primitives/menu-item.cjs.js +1 -1
  295. package/dist/primitives/menu-item.cjs.js.map +1 -1
  296. package/dist/primitives/menu-item.es.js +1 -1
  297. package/dist/primitives/menu-item.es.js.map +1 -1
  298. package/dist/{property-filter-applied-iYDdM1hb.cjs → property-filter-applied-ML84st6J.cjs} +2 -2
  299. package/dist/{property-filter-applied-iYDdM1hb.cjs.map → property-filter-applied-ML84st6J.cjs.map} +1 -1
  300. package/dist/{property-filter-applied-BBVmWRsC.js → property-filter-applied-PaJ7sLsM.js} +2 -2
  301. package/dist/{property-filter-applied-BBVmWRsC.js.map → property-filter-applied-PaJ7sLsM.js.map} +1 -1
  302. package/dist/style.css +6 -0
  303. package/dist/{tabbed-container-Bmk5dgJ4.cjs → tabbed-container-BMLD6mvc.cjs} +2 -2
  304. package/dist/{tabbed-container-Bmk5dgJ4.cjs.map → tabbed-container-BMLD6mvc.cjs.map} +1 -1
  305. package/dist/{tabbed-container-9yvqEQON.js → tabbed-container-CaS8cZCS.js} +2 -2
  306. package/dist/{tabbed-container-9yvqEQON.js.map → tabbed-container-CaS8cZCS.js.map} +1 -1
  307. package/dist/{tool-card-BjOV2sXi.js → tool-card-CM0aHG3p.js} +2 -2
  308. package/dist/{tool-card-BjOV2sXi.js.map → tool-card-CM0aHG3p.js.map} +1 -1
  309. package/dist/{tool-card-CO_3C_Bn.cjs → tool-card-xDlCD0m6.cjs} +2 -2
  310. package/dist/{tool-card-CO_3C_Bn.cjs.map → tool-card-xDlCD0m6.cjs.map} +1 -1
  311. package/dist/{use-workflow-graph-runtime-D_PpEIQ5.cjs → use-workflow-graph-runtime-DEJA9rk4.cjs} +2 -2
  312. package/dist/{use-workflow-graph-runtime-D_PpEIQ5.cjs.map → use-workflow-graph-runtime-DEJA9rk4.cjs.map} +1 -1
  313. package/dist/{use-workflow-graph-runtime-B_dKpjUe.js → use-workflow-graph-runtime-DHOsA1DM.js} +2 -2
  314. package/dist/{use-workflow-graph-runtime-B_dKpjUe.js.map → use-workflow-graph-runtime-DHOsA1DM.js.map} +1 -1
  315. package/package.json +3 -3
  316. package/dist/Composer-bVE8qK52.js.map +0 -1
  317. package/dist/Composer-u1K6edoZ.cjs.map +0 -1
  318. package/dist/FilterBar-CFacnMNl.js.map +0 -1
  319. package/dist/FilterBar-CR8nbvoe.cjs.map +0 -1
  320. package/dist/Tree-D1_VJClB.js.map +0 -1
  321. package/dist/Tree-kgLG4IbP.cjs.map +0 -1
  322. package/dist/combobox-parts-BeNqgCbj.cjs.map +0 -1
  323. package/dist/combobox-parts-C9o4UfH_.js.map +0 -1
  324. package/dist/input-BpnUsQSt.cjs.map +0 -1
  325. package/dist/input-Cyit5ZSc.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"date-time-range-picker-2a-wUBTk.cjs","names":["parse","startOfDay","isValid","format","differenceInCalendarMonths","subMonths","useState","useId","DatePicker","ArrowRight","Field","FieldError","Button","ChevronLeft","Check","Txt","Input","startOfDay","useState","Button","CalendarIcon","TriggerChevron","Popover","PopoverTrigger","PopoverContent","cn","DropdownMenu","XIcon","ButtonsGroup"],"sources":["../src/ds/components/DateTimeRangePicker/custom-range-editor.tsx","../src/ds/components/DateTimeRangePicker/date-time-range-picker.tsx"],"sourcesContent":["import { differenceInCalendarMonths, format, isValid, parse, startOfDay, subMonths } from 'date-fns';\nimport { ArrowRight, Check, ChevronLeft } from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { DateRange } from 'react-day-picker';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DatePicker } from '@/ds/components/DateTimePicker';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { Txt } from '@/ds/components/Txt';\n\nfunction formatDays(ms: number): string {\n const days = Math.round(ms / (24 * 60 * 60 * 1000));\n return `${days} day${days === 1 ? '' : 's'}`;\n}\n\n/** The draft day at the draft `HH:mm` time, or the start of the day when the time doesn't parse. */\nfunction combineDateAndTime(date: Date | undefined, timeStr: string): Date | undefined {\n if (!date) return undefined;\n const combined = parse(timeStr, 'HH:mm', startOfDay(date));\n return isValid(combined) ? combined : startOfDay(date);\n}\n\nconst isTime = (timeStr: string) => isValid(parse(timeStr, 'HH:mm', new Date()));\n\n/** Why the drafts can't be applied, or `undefined` when they can. */\nfunction rangeProblem({\n from,\n to,\n timesFilled,\n maxRangeMs = Infinity,\n firstDay,\n}: {\n from: Date | undefined;\n to: Date | undefined;\n timesFilled: boolean;\n maxRangeMs?: number;\n firstDay: Date | undefined;\n}): string | undefined {\n if (!timesFilled) return 'Enter a time for the start and end';\n if (from && to && from > to) return 'Start date/time must be before end date/time';\n if (from && to && to.getTime() - from.getTime() > maxRangeMs)\n return `Range cannot be longer than ${formatDays(maxRangeMs)}`;\n if (from && firstDay && from < firstDay) return `Range cannot start before ${format(firstDay, 'MMM d, yyyy')}`;\n return undefined;\n}\n\n/** The left month of the two: the start's month when the range spans months, else the month before the end. */\nfunction firstShownMonth(from: Date | undefined, to: Date | undefined): Date | undefined {\n if (from && to && differenceInCalendarMonths(to, from) >= 1) return from;\n if (to) return subMonths(to, 1);\n return from;\n}\n\nexport interface CustomRangeEditorProps {\n dateFrom?: Date;\n dateTo?: Date;\n disabled?: boolean;\n /** Widest range that can be applied, in milliseconds. */\n maxRangeMs?: number;\n /** Earliest day a range can start on. Days before it are disabled. */\n minDate?: Date;\n onApply: (from: Date | undefined, to: Date | undefined) => void;\n onShowPresets: () => void;\n}\n\n/**\n * The custom range popover body: one two-month calendar where the first click picks the\n * start and the second the end, with both ends and their times under it. It mounts each time the\n * popover opens, so its drafts start from the current range.\n */\nexport function CustomRangeEditor({\n dateFrom,\n dateTo,\n disabled,\n maxRangeMs,\n minDate,\n onApply,\n onShowPresets,\n}: CustomRangeEditorProps) {\n const [range, setRange] = useState<DateRange | undefined>(\n dateFrom || dateTo ? { from: dateFrom, to: dateTo } : undefined,\n );\n const [draftTimeFrom, setDraftTimeFrom] = useState(dateFrom ? format(dateFrom, 'HH:mm') : '00:00');\n const [draftTimeTo, setDraftTimeTo] = useState(dateTo ? format(dateTo, 'HH:mm') : '23:59');\n const [applyAttempted, setApplyAttempted] = useState(false);\n const errorId = useId();\n\n const fromDate = combineDateAndTime(range?.from, draftTimeFrom);\n const toDate = combineDateAndTime(range?.to, draftTimeTo);\n const firstDay = minDate ? startOfDay(minDate) : undefined;\n // A cleared time field would otherwise apply that end at midnight without saying so.\n const timesFilled = (!range?.from || isTime(draftTimeFrom)) && (!range?.to || isTime(draftTimeTo));\n const problem = rangeProblem({ from: fromDate, to: toDate, timesFilled, maxRangeMs, firstDay });\n // Shown after a failed Apply, and gone as soon as the drafts form a valid range again.\n const error = applyAttempted ? problem : undefined;\n\n const apply = () => {\n if (problem) {\n setApplyAttempted(true);\n return;\n }\n onApply(fromDate, toDate);\n };\n\n return (\n <div className=\"flex flex-col\">\n <div\n role=\"group\"\n aria-label=\"Custom date range\"\n aria-invalid={error ? true : undefined}\n aria-describedby={error ? errorId : undefined}\n >\n <DatePicker\n mode=\"range\"\n numberOfMonths={2}\n // Side by side, a month's spill-over days repeat its neighbour's, range and all.\n showOutsideDays={false}\n resetOnSelect\n selected={range}\n onSelect={setRange}\n defaultMonth={firstShownMonth(dateFrom, dateTo)}\n disabled={disabled || (firstDay ? { before: firstDay } : undefined)}\n startMonth={firstDay}\n />\n {/* Start and end share one grid: labels on the first row, values on the second, so\n the arrow centres on the values whatever the labels do. */}\n <div className=\"grid grid-cols-[1fr_auto_1fr] gap-x-2 gap-y-1 px-3 pb-3\">\n <RangeEnd\n label=\"Start\"\n date={range?.from}\n time={draftTimeFrom}\n onTimeChange={setDraftTimeFrom}\n disabled={disabled}\n />\n <ArrowRight aria-hidden className=\"col-start-2 row-start-2 size-4 self-center text-muted-foreground\" />\n <RangeEnd label=\"End\" date={range?.to} time={draftTimeTo} onTimeChange={setDraftTimeTo} disabled={disabled} />\n </div>\n </div>\n <Field invalid={Boolean(error)}>\n <FieldError id={errorId} className=\"px-4 pb-1\">\n {error}\n </FieldError>\n </Field>\n <div className=\"flex items-center gap-2 border-t border-border px-3 py-2\">\n <Button icon={<ChevronLeft />} variant=\"ghost\" size=\"sm\" disabled={disabled} onClick={onShowPresets}>\n Presets\n </Button>\n <Button className=\"ml-auto\" icon={<Check />} variant=\"primary\" size=\"sm\" onClick={apply} disabled={disabled}>\n Apply\n </Button>\n </div>\n </div>\n );\n}\n\nfunction RangeEnd({\n label,\n date,\n time,\n onTimeChange,\n disabled,\n}: {\n label: string;\n date: Date | undefined;\n time: string;\n onTimeChange: (value: string) => void;\n disabled?: boolean;\n}) {\n return (\n <div className=\"row-span-2 grid min-w-0 grid-rows-subgrid\">\n <Txt as=\"span\" variant=\"column\" tone=\"muted\" className=\"px-1\">\n {label}\n </Txt>\n <div className=\"flex items-center gap-1\">\n <Txt as=\"span\" variant=\"label\" tone={date ? undefined : 'muted'} className=\"min-w-0 flex-1 truncate px-1\">\n {date ? format(date, 'MMM d, yyyy') : 'Select a day'}\n </Txt>\n <Input\n type=\"time\"\n size=\"sm\"\n aria-label={`${label} time`}\n value={time}\n onChange={e => onTimeChange(e.target.value)}\n disabled={disabled}\n className=\"w-24 shrink-0 [&::-webkit-calendar-picker-indicator]:hidden\"\n />\n </div>\n </div>\n );\n}\n","import { startOfDay } from 'date-fns';\nimport { CalendarIcon, XIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport type { ReactNode, Ref } from 'react';\nimport { CustomRangeEditor } from './custom-range-editor';\nimport { Button, TriggerChevron } from '@/ds/components/Button/Button';\nimport type { TextButtonSize } from '@/ds/components/Button/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup/buttons-group';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\nimport { Popover, PopoverTrigger, PopoverContent } from '@/ds/components/Popover/popover';\nimport { cn } from '@/lib/utils';\n\nexport type DateRangePreset = 'all' | 'last-24h' | 'last-3d' | 'last-7d' | 'last-14d' | 'last-30d' | 'custom';\n\nconst DATE_PRESETS: { value: DateRangePreset; label: string; ms?: number }[] = [\n { value: 'all', label: 'All' },\n { value: 'last-24h', label: 'Last 24 hours', ms: 24 * 60 * 60 * 1000 },\n { value: 'last-3d', label: 'Last 3 days', ms: 3 * 24 * 60 * 60 * 1000 },\n { value: 'last-7d', label: 'Last 7 days', ms: 7 * 24 * 60 * 60 * 1000 },\n { value: 'last-14d', label: 'Last 14 days', ms: 14 * 24 * 60 * 60 * 1000 },\n { value: 'last-30d', label: 'Last 30 days', ms: 30 * 24 * 60 * 60 * 1000 },\n { value: 'custom', label: 'Custom range...' },\n];\n\nconst sameTime = (a: Date | undefined, b: Date | undefined) => a?.getTime() === b?.getTime();\n\n/**\n * Whether a named range breaks the limits the custom editor enforces: it starts before\n * `minDate`'s day, or spans more than `maxRangeMs` (an open end counts up to now).\n */\nfunction outsideLimits(range: DateTimeRangePickerNamedRange, minDate?: Date, maxRangeMs?: number) {\n const tooEarly = minDate !== undefined && range.from < startOfDay(minDate);\n const span = (range.to ?? new Date()).getTime() - range.from.getTime();\n const tooWide = maxRangeMs !== undefined && span > maxRangeMs;\n return tooEarly || tooWide;\n}\n\nconst fmtClock = (d: Date) =>\n d.toLocaleTimeString('en-US', d.getMinutes() === 0 ? { hour: 'numeric' } : { hour: 'numeric', minute: '2-digit' });\n\n/**\n * A custom range as day and time, kept short: `Oct 21, 2:05 PM – 4 PM` within one day,\n * `Oct 20, 12 AM – Oct 27, 9:30 AM` across days, with years only outside the current one.\n */\nfunction customRangeLabel(dateFrom: Date | undefined, dateTo: Date | undefined) {\n const thisYear = new Date().getFullYear();\n const withYear = [dateFrom, dateTo].some(d => d && d.getFullYear() !== thisYear);\n const fmtDay = (d: Date) =>\n d.toLocaleDateString('en-US', { month: 'short', day: 'numeric', ...(withYear && { year: 'numeric' }) });\n const fmtMoment = (d: Date) => `${fmtDay(d)}, ${fmtClock(d)}`;\n\n const start = dateFrom ? fmtMoment(dateFrom) : 'Start';\n if (!dateTo) return `${start} \\u2013 End`;\n const sameDay = dateFrom !== undefined && fmtDay(dateFrom) === fmtDay(dateTo);\n return `${start} \\u2013 ${sameDay ? fmtClock(dateTo) : fmtMoment(dateTo)}`;\n}\n\n/** A fixed range offered beside the presets, e.g. the current billing period. */\nexport type DateTimeRangePickerNamedRange = { label: string; from: Date; to?: Date };\n\nexport interface DateTimeRangePickerProps {\n preset?: DateRangePreset;\n onPresetChange?: (preset: DateRangePreset) => void;\n dateFrom?: Date;\n dateTo?: Date;\n onDateChange?: (value: Date | undefined, type: 'from' | 'to') => void;\n /**\n * Called once with both ends when a custom range is applied. When provided it replaces\n * the two `onDateChange` calls for that step, so consumers can write the range atomically.\n */\n onDateRangeChange?: (from: Date | undefined, to: Date | undefined) => void;\n disabled?: boolean;\n /** Widest custom range that can be applied, in milliseconds. Presets are unaffected. */\n maxRangeMs?: number;\n /** Earliest day a custom range can start on, e.g. the oldest data still kept. Earlier days are disabled. */\n minDate?: Date;\n /** Subset of presets to show. If omitted, all presets are shown. */\n presets?: readonly DateRangePreset[];\n /**\n * Fixed ranges listed above the presets, e.g. `{ label: 'This period', from: periodStart }`.\n * Picking one applies it as a custom range; while it's applied the trigger shows its label.\n */\n namedRanges?: readonly DateTimeRangePickerNamedRange[];\n /** Size of the trigger Button. Defaults to 'sm', the toolbar rung. */\n size?: TextButtonSize;\n /**\n * The preset a custom range resets to. While a custom range is applied, a × joined to the\n * trigger takes the chevron's place and switches back to it.\n */\n defaultPreset?: DateRangePreset;\n /** Replaces what the reset × does, e.g. to undo a histogram zoom before falling back to `defaultPreset`. */\n onReset?: () => void;\n /** The trigger Button. */\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function DateTimeRangePicker({\n preset = 'all',\n onPresetChange,\n dateFrom,\n dateTo,\n onDateChange,\n onDateRangeChange,\n disabled,\n maxRangeMs,\n minDate,\n presets,\n namedRanges = [],\n size = 'sm',\n defaultPreset,\n onReset,\n ref,\n}: DateTimeRangePickerProps) {\n const visiblePresets = presets ? DATE_PRESETS.filter(p => presets.includes(p.value)) : DATE_PRESETS;\n const [customRangeOpen, setCustomRangeOpen] = useState(false);\n const [presetMenuOpen, setPresetMenuOpen] = useState(false);\n // The preset active before \"Custom range...\" was picked, until a range is applied.\n // \"← Presets\" restores it instead of jumping to the first preset in the list.\n const [presetBeforeCustom, setPresetBeforeCustom] = useState<DateRangePreset | undefined>();\n\n // \"← Presets\" restores the previous preset through the parent, which may apply it a\n // render later (e.g. a router URL update). Show it right away instead of \"custom\".\n const restoringPreset = presetMenuOpen && preset === 'custom' ? presetBeforeCustom : undefined;\n const shownPreset = restoringPreset ?? preset;\n const datePresetLabel = DATE_PRESETS.find(p => p.value === shownPreset)?.label ?? 'All';\n\n const applyPreset = (value: DateRangePreset) => {\n onPresetChange?.(value);\n const entry = DATE_PRESETS.find(p => p.value === value);\n if (entry?.ms) {\n onDateChange?.(new Date(Date.now() - entry.ms), 'from');\n onDateChange?.(undefined, 'to');\n } else {\n onDateChange?.(undefined, 'from');\n onDateChange?.(undefined, 'to');\n }\n };\n\n const handlePresetSelect = (value: DateRangePreset) => {\n setPresetMenuOpen(false);\n if (value === 'custom') {\n if (preset !== 'custom') setPresetBeforeCustom(preset);\n onPresetChange?.(value);\n setCustomRangeOpen(true);\n return;\n }\n setPresetBeforeCustom(undefined);\n applyPreset(value);\n };\n\n const applyCustomRange = (fromDate: Date | undefined, toDate: Date | undefined) => {\n if (onDateRangeChange) {\n onDateRangeChange(fromDate, toDate);\n } else {\n onDateChange?.(fromDate, 'from');\n onDateChange?.(toDate, 'to');\n }\n setPresetBeforeCustom(undefined);\n setCustomRangeOpen(false);\n };\n\n // Back to the preset list. Restores the preset the user came from; an applied custom\n // range matches no preset, so it stays and the list shows \"Custom range...\" as current.\n const showPresets = () => {\n setCustomRangeOpen(false);\n if (presetBeforeCustom) applyPreset(presetBeforeCustom);\n setPresetMenuOpen(true);\n };\n\n // The applied custom range, when it is one of the named ranges.\n const namedIndex =\n shownPreset === 'custom' ? namedRanges.findIndex(r => sameTime(r.from, dateFrom) && sameTime(r.to, dateTo)) : -1;\n const named = namedRanges[namedIndex];\n const canReset = defaultPreset !== undefined && shownPreset === 'custom' && !named;\n // A named range shows the preset list, unless \"Custom range...\" was picked to edit it.\n const editingCustomRange = shownPreset === 'custom' && !presetMenuOpen && (!named || customRangeOpen);\n const label = named ? named.label : shownPreset === 'custom' ? customRangeLabel(dateFrom, dateTo) : datePresetLabel;\n\n const applyNamedRange = (range: DateTimeRangePickerNamedRange) => {\n setPresetMenuOpen(false);\n onPresetChange?.('custom');\n applyCustomRange(range.from, range.to);\n };\n const trigger = (\n <Button\n ref={ref}\n size={size}\n disabled={disabled}\n icon={<CalendarIcon />}\n iconEnd={canReset ? undefined : <TriggerChevron />}\n >\n {label}\n </Button>\n );\n\n return (\n <JoinReset\n size={size}\n reset={\n canReset && (\n <ResetRangeButton size={size} disabled={disabled} onReset={onReset ?? (() => applyPreset(defaultPreset))} />\n )\n }\n >\n {editingCustomRange && (\n <Popover open={customRangeOpen} onOpenChange={setCustomRangeOpen}>\n <PopoverTrigger render={trigger} />\n <PopoverContent align=\"start\" className={cn('w-auto p-0')}>\n <CustomRangeEditor\n dateFrom={dateFrom}\n dateTo={dateTo}\n disabled={disabled}\n maxRangeMs={maxRangeMs}\n minDate={minDate}\n onApply={applyCustomRange}\n onShowPresets={showPresets}\n />\n </PopoverContent>\n </Popover>\n )}\n {!editingCustomRange && (\n <DropdownMenu open={presetMenuOpen} onOpenChange={setPresetMenuOpen}>\n <DropdownMenu.Trigger render={trigger} />\n <DropdownMenu.Content align=\"start\">\n {/* Items select on click (not onValueChange) so re-picking the checked\n \"Custom range...\" still reopens the range editor. */}\n <DropdownMenu.RadioGroup value={named ? `named-${namedIndex}` : shownPreset}>\n {namedRanges.map((r, i) => (\n <DropdownMenu.RadioItem\n key={`named-${i}`}\n value={`named-${i}`}\n disabled={outsideLimits(r, minDate, maxRangeMs)}\n closeOnClick\n onClick={() => applyNamedRange(r)}\n >\n {r.label}\n </DropdownMenu.RadioItem>\n ))}\n {namedRanges.length > 0 && <DropdownMenu.Separator />}\n {visiblePresets.map(p => (\n <DropdownMenu.RadioItem\n key={p.value}\n value={p.value}\n closeOnClick\n onClick={() => handlePresetSelect(p.value)}\n >\n {p.label}\n </DropdownMenu.RadioItem>\n ))}\n </DropdownMenu.RadioGroup>\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </JoinReset>\n );\n}\n\n/** Switches a custom range back to the picker's default preset. */\nfunction ResetRangeButton({\n size,\n disabled,\n onReset,\n}: {\n size: TextButtonSize;\n disabled?: boolean;\n onReset: () => void;\n}) {\n return (\n <Button\n type=\"button\"\n size={`icon-${size}` as const}\n tooltip=\"Reset time range\"\n disabled={disabled}\n onClick={onReset}\n >\n <XIcon />\n </Button>\n );\n}\n\n/** The trigger alone, or joined with the reset × as one pill. */\nfunction JoinReset({ reset, size, children }: { reset: ReactNode; size: TextButtonSize; children: ReactNode }) {\n if (!reset) return children;\n return (\n <ButtonsGroup size={size}>\n {children}\n {reset}\n </ButtonsGroup>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-time-range-picker-Dhnuwa-U.cjs","names":["parse","startOfDay","isValid","format","differenceInCalendarMonths","subMonths","useState","useId","DatePicker","ArrowRight","Field","FieldError","Button","ChevronLeft","Check","Txt","Input","startOfDay","useState","Button","CalendarIcon","TriggerChevron","Popover","PopoverTrigger","PopoverContent","cn","DropdownMenu","XIcon","ButtonsGroup"],"sources":["../src/ds/components/DateTimeRangePicker/custom-range-editor.tsx","../src/ds/components/DateTimeRangePicker/date-time-range-picker.tsx"],"sourcesContent":["import { differenceInCalendarMonths, format, isValid, parse, startOfDay, subMonths } from 'date-fns';\nimport { ArrowRight, Check, ChevronLeft } from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { DateRange } from 'react-day-picker';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DatePicker } from '@/ds/components/DateTimePicker';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { Txt } from '@/ds/components/Txt';\n\nfunction formatDays(ms: number): string {\n const days = Math.round(ms / (24 * 60 * 60 * 1000));\n return `${days} day${days === 1 ? '' : 's'}`;\n}\n\n/** The draft day at the draft `HH:mm` time, or the start of the day when the time doesn't parse. */\nfunction combineDateAndTime(date: Date | undefined, timeStr: string): Date | undefined {\n if (!date) return undefined;\n const combined = parse(timeStr, 'HH:mm', startOfDay(date));\n return isValid(combined) ? combined : startOfDay(date);\n}\n\nconst isTime = (timeStr: string) => isValid(parse(timeStr, 'HH:mm', new Date()));\n\n/** Why the drafts can't be applied, or `undefined` when they can. */\nfunction rangeProblem({\n from,\n to,\n timesFilled,\n maxRangeMs = Infinity,\n firstDay,\n}: {\n from: Date | undefined;\n to: Date | undefined;\n timesFilled: boolean;\n maxRangeMs?: number;\n firstDay: Date | undefined;\n}): string | undefined {\n if (!timesFilled) return 'Enter a time for the start and end';\n if (from && to && from > to) return 'Start date/time must be before end date/time';\n if (from && to && to.getTime() - from.getTime() > maxRangeMs)\n return `Range cannot be longer than ${formatDays(maxRangeMs)}`;\n if (from && firstDay && from < firstDay) return `Range cannot start before ${format(firstDay, 'MMM d, yyyy')}`;\n return undefined;\n}\n\n/** The left month of the two: the start's month when the range spans months, else the month before the end. */\nfunction firstShownMonth(from: Date | undefined, to: Date | undefined): Date | undefined {\n if (from && to && differenceInCalendarMonths(to, from) >= 1) return from;\n if (to) return subMonths(to, 1);\n return from;\n}\n\nexport interface CustomRangeEditorProps {\n dateFrom?: Date;\n dateTo?: Date;\n disabled?: boolean;\n /** Widest range that can be applied, in milliseconds. */\n maxRangeMs?: number;\n /** Earliest day a range can start on. Days before it are disabled. */\n minDate?: Date;\n onApply: (from: Date | undefined, to: Date | undefined) => void;\n onShowPresets: () => void;\n}\n\n/**\n * The custom range popover body: one two-month calendar where the first click picks the\n * start and the second the end, with both ends and their times under it. It mounts each time the\n * popover opens, so its drafts start from the current range.\n */\nexport function CustomRangeEditor({\n dateFrom,\n dateTo,\n disabled,\n maxRangeMs,\n minDate,\n onApply,\n onShowPresets,\n}: CustomRangeEditorProps) {\n const [range, setRange] = useState<DateRange | undefined>(\n dateFrom || dateTo ? { from: dateFrom, to: dateTo } : undefined,\n );\n const [draftTimeFrom, setDraftTimeFrom] = useState(dateFrom ? format(dateFrom, 'HH:mm') : '00:00');\n const [draftTimeTo, setDraftTimeTo] = useState(dateTo ? format(dateTo, 'HH:mm') : '23:59');\n const [applyAttempted, setApplyAttempted] = useState(false);\n const errorId = useId();\n\n const fromDate = combineDateAndTime(range?.from, draftTimeFrom);\n const toDate = combineDateAndTime(range?.to, draftTimeTo);\n const firstDay = minDate ? startOfDay(minDate) : undefined;\n // A cleared time field would otherwise apply that end at midnight without saying so.\n const timesFilled = (!range?.from || isTime(draftTimeFrom)) && (!range?.to || isTime(draftTimeTo));\n const problem = rangeProblem({ from: fromDate, to: toDate, timesFilled, maxRangeMs, firstDay });\n // Shown after a failed Apply, and gone as soon as the drafts form a valid range again.\n const error = applyAttempted ? problem : undefined;\n\n const apply = () => {\n if (problem) {\n setApplyAttempted(true);\n return;\n }\n onApply(fromDate, toDate);\n };\n\n return (\n <div className=\"flex flex-col\">\n <div\n role=\"group\"\n aria-label=\"Custom date range\"\n aria-invalid={error ? true : undefined}\n aria-describedby={error ? errorId : undefined}\n >\n <DatePicker\n mode=\"range\"\n numberOfMonths={2}\n // Side by side, a month's spill-over days repeat its neighbour's, range and all.\n showOutsideDays={false}\n resetOnSelect\n selected={range}\n onSelect={setRange}\n defaultMonth={firstShownMonth(dateFrom, dateTo)}\n disabled={disabled || (firstDay ? { before: firstDay } : undefined)}\n startMonth={firstDay}\n />\n {/* Start and end share one grid: labels on the first row, values on the second, so\n the arrow centres on the values whatever the labels do. */}\n <div className=\"grid grid-cols-[1fr_auto_1fr] gap-x-2 gap-y-1 px-3 pb-3\">\n <RangeEnd\n label=\"Start\"\n date={range?.from}\n time={draftTimeFrom}\n onTimeChange={setDraftTimeFrom}\n disabled={disabled}\n />\n <ArrowRight aria-hidden className=\"col-start-2 row-start-2 size-4 self-center text-muted-foreground\" />\n <RangeEnd label=\"End\" date={range?.to} time={draftTimeTo} onTimeChange={setDraftTimeTo} disabled={disabled} />\n </div>\n </div>\n <Field invalid={Boolean(error)}>\n <FieldError id={errorId} className=\"px-4 pb-1\">\n {error}\n </FieldError>\n </Field>\n <div className=\"flex items-center gap-2 border-t border-border px-3 py-2\">\n <Button icon={<ChevronLeft />} variant=\"ghost\" size=\"sm\" disabled={disabled} onClick={onShowPresets}>\n Presets\n </Button>\n <Button className=\"ml-auto\" icon={<Check />} variant=\"primary\" size=\"sm\" onClick={apply} disabled={disabled}>\n Apply\n </Button>\n </div>\n </div>\n );\n}\n\nfunction RangeEnd({\n label,\n date,\n time,\n onTimeChange,\n disabled,\n}: {\n label: string;\n date: Date | undefined;\n time: string;\n onTimeChange: (value: string) => void;\n disabled?: boolean;\n}) {\n return (\n <div className=\"row-span-2 grid min-w-0 grid-rows-subgrid\">\n <Txt as=\"span\" variant=\"column\" tone=\"muted\" className=\"px-1\">\n {label}\n </Txt>\n <div className=\"flex items-center gap-1\">\n <Txt as=\"span\" variant=\"label\" tone={date ? undefined : 'muted'} className=\"min-w-0 flex-1 truncate px-1\">\n {date ? format(date, 'MMM d, yyyy') : 'Select a day'}\n </Txt>\n <Input\n type=\"time\"\n size=\"sm\"\n aria-label={`${label} time`}\n value={time}\n onChange={e => onTimeChange(e.target.value)}\n disabled={disabled}\n className=\"w-24 shrink-0 [&::-webkit-calendar-picker-indicator]:hidden\"\n />\n </div>\n </div>\n );\n}\n","import { startOfDay } from 'date-fns';\nimport { CalendarIcon, XIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport type { ReactNode, Ref } from 'react';\nimport { CustomRangeEditor } from './custom-range-editor';\nimport { Button, TriggerChevron } from '@/ds/components/Button/Button';\nimport type { TextButtonSize } from '@/ds/components/Button/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup/buttons-group';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\nimport { Popover, PopoverTrigger, PopoverContent } from '@/ds/components/Popover/popover';\nimport { cn } from '@/lib/utils';\n\nexport type DateRangePreset = 'all' | 'last-24h' | 'last-3d' | 'last-7d' | 'last-14d' | 'last-30d' | 'custom';\n\nconst DATE_PRESETS: { value: DateRangePreset; label: string; ms?: number }[] = [\n { value: 'all', label: 'All' },\n { value: 'last-24h', label: 'Last 24 hours', ms: 24 * 60 * 60 * 1000 },\n { value: 'last-3d', label: 'Last 3 days', ms: 3 * 24 * 60 * 60 * 1000 },\n { value: 'last-7d', label: 'Last 7 days', ms: 7 * 24 * 60 * 60 * 1000 },\n { value: 'last-14d', label: 'Last 14 days', ms: 14 * 24 * 60 * 60 * 1000 },\n { value: 'last-30d', label: 'Last 30 days', ms: 30 * 24 * 60 * 60 * 1000 },\n { value: 'custom', label: 'Custom range...' },\n];\n\nconst sameTime = (a: Date | undefined, b: Date | undefined) => a?.getTime() === b?.getTime();\n\n/**\n * Whether a named range breaks the limits the custom editor enforces: it starts before\n * `minDate`'s day, or spans more than `maxRangeMs` (an open end counts up to now).\n */\nfunction outsideLimits(range: DateTimeRangePickerNamedRange, minDate?: Date, maxRangeMs?: number) {\n const tooEarly = minDate !== undefined && range.from < startOfDay(minDate);\n const span = (range.to ?? new Date()).getTime() - range.from.getTime();\n const tooWide = maxRangeMs !== undefined && span > maxRangeMs;\n return tooEarly || tooWide;\n}\n\nconst fmtClock = (d: Date) =>\n d.toLocaleTimeString('en-US', d.getMinutes() === 0 ? { hour: 'numeric' } : { hour: 'numeric', minute: '2-digit' });\n\n/**\n * A custom range as day and time, kept short: `Oct 21, 2:05 PM – 4 PM` within one day,\n * `Oct 20, 12 AM – Oct 27, 9:30 AM` across days, with years only outside the current one.\n */\nfunction customRangeLabel(dateFrom: Date | undefined, dateTo: Date | undefined) {\n const thisYear = new Date().getFullYear();\n const withYear = [dateFrom, dateTo].some(d => d && d.getFullYear() !== thisYear);\n const fmtDay = (d: Date) =>\n d.toLocaleDateString('en-US', { month: 'short', day: 'numeric', ...(withYear && { year: 'numeric' }) });\n const fmtMoment = (d: Date) => `${fmtDay(d)}, ${fmtClock(d)}`;\n\n const start = dateFrom ? fmtMoment(dateFrom) : 'Start';\n if (!dateTo) return `${start} \\u2013 End`;\n const sameDay = dateFrom !== undefined && fmtDay(dateFrom) === fmtDay(dateTo);\n return `${start} \\u2013 ${sameDay ? fmtClock(dateTo) : fmtMoment(dateTo)}`;\n}\n\n/** A fixed range offered beside the presets, e.g. the current billing period. */\nexport type DateTimeRangePickerNamedRange = { label: string; from: Date; to?: Date };\n\nexport interface DateTimeRangePickerProps {\n preset?: DateRangePreset;\n onPresetChange?: (preset: DateRangePreset) => void;\n dateFrom?: Date;\n dateTo?: Date;\n onDateChange?: (value: Date | undefined, type: 'from' | 'to') => void;\n /**\n * Called once with both ends when a custom range is applied. When provided it replaces\n * the two `onDateChange` calls for that step, so consumers can write the range atomically.\n */\n onDateRangeChange?: (from: Date | undefined, to: Date | undefined) => void;\n disabled?: boolean;\n /** Widest custom range that can be applied, in milliseconds. Presets are unaffected. */\n maxRangeMs?: number;\n /** Earliest day a custom range can start on, e.g. the oldest data still kept. Earlier days are disabled. */\n minDate?: Date;\n /** Subset of presets to show. If omitted, all presets are shown. */\n presets?: readonly DateRangePreset[];\n /**\n * Fixed ranges listed above the presets, e.g. `{ label: 'This period', from: periodStart }`.\n * Picking one applies it as a custom range; while it's applied the trigger shows its label.\n */\n namedRanges?: readonly DateTimeRangePickerNamedRange[];\n /** Size of the trigger Button. Defaults to 'sm', the toolbar rung. */\n size?: TextButtonSize;\n /**\n * The preset a custom range resets to. While a custom range is applied, a × joined to the\n * trigger takes the chevron's place and switches back to it.\n */\n defaultPreset?: DateRangePreset;\n /** Replaces what the reset × does, e.g. to undo a histogram zoom before falling back to `defaultPreset`. */\n onReset?: () => void;\n /** The trigger Button. */\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function DateTimeRangePicker({\n preset = 'all',\n onPresetChange,\n dateFrom,\n dateTo,\n onDateChange,\n onDateRangeChange,\n disabled,\n maxRangeMs,\n minDate,\n presets,\n namedRanges = [],\n size = 'sm',\n defaultPreset,\n onReset,\n ref,\n}: DateTimeRangePickerProps) {\n const visiblePresets = presets ? DATE_PRESETS.filter(p => presets.includes(p.value)) : DATE_PRESETS;\n const [customRangeOpen, setCustomRangeOpen] = useState(false);\n const [presetMenuOpen, setPresetMenuOpen] = useState(false);\n // The preset active before \"Custom range...\" was picked, until a range is applied.\n // \"← Presets\" restores it instead of jumping to the first preset in the list.\n const [presetBeforeCustom, setPresetBeforeCustom] = useState<DateRangePreset | undefined>();\n\n // \"← Presets\" restores the previous preset through the parent, which may apply it a\n // render later (e.g. a router URL update). Show it right away instead of \"custom\".\n const restoringPreset = presetMenuOpen && preset === 'custom' ? presetBeforeCustom : undefined;\n const shownPreset = restoringPreset ?? preset;\n const datePresetLabel = DATE_PRESETS.find(p => p.value === shownPreset)?.label ?? 'All';\n\n const applyPreset = (value: DateRangePreset) => {\n onPresetChange?.(value);\n const entry = DATE_PRESETS.find(p => p.value === value);\n if (entry?.ms) {\n onDateChange?.(new Date(Date.now() - entry.ms), 'from');\n onDateChange?.(undefined, 'to');\n } else {\n onDateChange?.(undefined, 'from');\n onDateChange?.(undefined, 'to');\n }\n };\n\n const handlePresetSelect = (value: DateRangePreset) => {\n setPresetMenuOpen(false);\n if (value === 'custom') {\n if (preset !== 'custom') setPresetBeforeCustom(preset);\n onPresetChange?.(value);\n setCustomRangeOpen(true);\n return;\n }\n setPresetBeforeCustom(undefined);\n applyPreset(value);\n };\n\n const applyCustomRange = (fromDate: Date | undefined, toDate: Date | undefined) => {\n if (onDateRangeChange) {\n onDateRangeChange(fromDate, toDate);\n } else {\n onDateChange?.(fromDate, 'from');\n onDateChange?.(toDate, 'to');\n }\n setPresetBeforeCustom(undefined);\n setCustomRangeOpen(false);\n };\n\n // Back to the preset list. Restores the preset the user came from; an applied custom\n // range matches no preset, so it stays and the list shows \"Custom range...\" as current.\n const showPresets = () => {\n setCustomRangeOpen(false);\n if (presetBeforeCustom) applyPreset(presetBeforeCustom);\n setPresetMenuOpen(true);\n };\n\n // The applied custom range, when it is one of the named ranges.\n const namedIndex =\n shownPreset === 'custom' ? namedRanges.findIndex(r => sameTime(r.from, dateFrom) && sameTime(r.to, dateTo)) : -1;\n const named = namedRanges[namedIndex];\n const canReset = defaultPreset !== undefined && shownPreset === 'custom' && !named;\n // A named range shows the preset list, unless \"Custom range...\" was picked to edit it.\n const editingCustomRange = shownPreset === 'custom' && !presetMenuOpen && (!named || customRangeOpen);\n const label = named ? named.label : shownPreset === 'custom' ? customRangeLabel(dateFrom, dateTo) : datePresetLabel;\n\n const applyNamedRange = (range: DateTimeRangePickerNamedRange) => {\n setPresetMenuOpen(false);\n onPresetChange?.('custom');\n applyCustomRange(range.from, range.to);\n };\n const trigger = (\n <Button\n ref={ref}\n size={size}\n disabled={disabled}\n icon={<CalendarIcon />}\n iconEnd={canReset ? undefined : <TriggerChevron />}\n >\n {label}\n </Button>\n );\n\n return (\n <JoinReset\n size={size}\n reset={\n canReset && (\n <ResetRangeButton size={size} disabled={disabled} onReset={onReset ?? (() => applyPreset(defaultPreset))} />\n )\n }\n >\n {editingCustomRange && (\n <Popover open={customRangeOpen} onOpenChange={setCustomRangeOpen}>\n <PopoverTrigger render={trigger} />\n <PopoverContent align=\"start\" className={cn('w-auto p-0')}>\n <CustomRangeEditor\n dateFrom={dateFrom}\n dateTo={dateTo}\n disabled={disabled}\n maxRangeMs={maxRangeMs}\n minDate={minDate}\n onApply={applyCustomRange}\n onShowPresets={showPresets}\n />\n </PopoverContent>\n </Popover>\n )}\n {!editingCustomRange && (\n <DropdownMenu open={presetMenuOpen} onOpenChange={setPresetMenuOpen}>\n <DropdownMenu.Trigger render={trigger} />\n <DropdownMenu.Content align=\"start\">\n {/* Items select on click (not onValueChange) so re-picking the checked\n \"Custom range...\" still reopens the range editor. */}\n <DropdownMenu.RadioGroup value={named ? `named-${namedIndex}` : shownPreset}>\n {namedRanges.map((r, i) => (\n <DropdownMenu.RadioItem\n key={`named-${i}`}\n value={`named-${i}`}\n disabled={outsideLimits(r, minDate, maxRangeMs)}\n closeOnClick\n onClick={() => applyNamedRange(r)}\n >\n {r.label}\n </DropdownMenu.RadioItem>\n ))}\n {namedRanges.length > 0 && <DropdownMenu.Separator />}\n {visiblePresets.map(p => (\n <DropdownMenu.RadioItem\n key={p.value}\n value={p.value}\n closeOnClick\n onClick={() => handlePresetSelect(p.value)}\n >\n {p.label}\n </DropdownMenu.RadioItem>\n ))}\n </DropdownMenu.RadioGroup>\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </JoinReset>\n );\n}\n\n/** Switches a custom range back to the picker's default preset. */\nfunction ResetRangeButton({\n size,\n disabled,\n onReset,\n}: {\n size: TextButtonSize;\n disabled?: boolean;\n onReset: () => void;\n}) {\n return (\n <Button\n type=\"button\"\n size={`icon-${size}` as const}\n tooltip=\"Reset time range\"\n disabled={disabled}\n onClick={onReset}\n >\n <XIcon />\n </Button>\n );\n}\n\n/** The trigger alone, or joined with the reset × as one pill. */\nfunction JoinReset({ reset, size, children }: { reset: ReactNode; size: TextButtonSize; children: ReactNode }) {\n if (!reset) return children;\n return (\n <ButtonsGroup size={size}>\n {children}\n {reset}\n </ButtonsGroup>\n );\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_Composer = require("../../../Composer-u1K6edoZ.cjs");
2
+ const require_Composer = require("../../../Composer-D2BqRyb5.cjs");
3
3
  const require_scroll_area = require("../../../scroll-area-BU_TorPW.cjs");
4
4
  const require_utils = require("../../../utils-uDc1ofX1.cjs");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -1,4 +1,4 @@
1
- import { d as ComposerAttachments } from "../../../Composer-bVE8qK52.js";
1
+ import { d as ComposerAttachments } from "../../../Composer-kjwmlIgL.js";
2
2
  import { t as ScrollArea } from "../../../scroll-area-9-S7wfSs.js";
3
3
  import { t as cn } from "../../../utils-DQx8TpNT.js";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_Button = require("../../../Button-BfICfyxD.cjs");
3
- const require_CodeEditor = require("../../../CodeEditor-DHIDfP5g.cjs");
3
+ const require_CodeEditor = require("../../../CodeEditor-zMSUzPdX.cjs");
4
4
  const require_Dialog = require("../../../Dialog-Duy3M1ny.cjs");
5
5
  const require_Txt = require("../../../Txt-_00wWxTd.cjs");
6
6
  let react = require("react");
@@ -1,5 +1,5 @@
1
1
  import { t as Button } from "../../../Button-Bi7aXd_G.js";
2
- import { t as CodeEditor } from "../../../CodeEditor-ZoBu3Gjw.js";
2
+ import { t as CodeEditor } from "../../../CodeEditor-BqAM9L7t.js";
3
3
  import { a as DialogContent, c as DialogHeader, d as DialogTitle, n as DialogBody, o as DialogDescription, t as Dialog } from "../../../Dialog-OBPu3rl2.js";
4
4
  import { t as Txt } from "../../../Txt-5efBsb2p.js";
5
5
  import { useState } from "react";
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_domains_chat_context_dataset_save_context_value = require("../context/dataset-save-context-value.cjs.js");
3
3
  const require_Button = require("../../../Button-BfICfyxD.cjs");
4
- const require_CodeEditor = require("../../../CodeEditor-DHIDfP5g.cjs");
4
+ const require_CodeEditor = require("../../../CodeEditor-zMSUzPdX.cjs");
5
5
  const require_Dialog = require("../../../Dialog-Duy3M1ny.cjs");
6
6
  const require_components_Field = require("../../../components/Field.cjs.js");
7
7
  const require_select = require("../../../select-CeukeSn_.cjs");
@@ -1,7 +1,7 @@
1
1
  import { useDatasetSaveContext } from "../context/dataset-save-context-value.es.js";
2
2
  import { useDatasetMutations, useDatasets } from "../../datasets.es.js";
3
3
  import { t as Button } from "../../../Button-Bi7aXd_G.js";
4
- import { t as CodeEditor } from "../../../CodeEditor-ZoBu3Gjw.js";
4
+ import { t as CodeEditor } from "../../../CodeEditor-BqAM9L7t.js";
5
5
  import { a as DialogContent, c as DialogHeader, d as DialogTitle, n as DialogBody, o as DialogDescription, p as DialogAction, r as DialogCancel, s as DialogFooter, t as Dialog } from "../../../Dialog-OBPu3rl2.js";
6
6
  import { Field, FieldLabel } from "../../../components/Field.es.js";
7
7
  import { i as SelectItem, n as SelectContent, o as SelectTrigger, s as SelectValue, t as Select } from "../../../select-dNX9If-s.js";
@@ -16,7 +16,7 @@ const require_domains_chat_messages_signal_data = require("./signal-data.cjs.js"
16
16
  const require_domains_chat_messages_skill_activation = require("./skill-activation.cjs.js");
17
17
  const require_domains_chat_messages_skill_message = require("./skill-message.cjs.js");
18
18
  const require_domains_chat_tools_tool_call_effects = require("../tools/tool-call-effects.cjs.js");
19
- const require_tool_card = require("../../../tool-card-CO_3C_Bn.cjs");
19
+ const require_tool_card = require("../../../tool-card-xDlCD0m6.cjs");
20
20
  const require_domains_chat_tools_tool_card_kind = require("../tools/tool-card-kind.cjs.js");
21
21
  const require_domains_chat_tools_tool_groups = require("../tools/tool-groups.cjs.js");
22
22
  const require_components_ai_message_reveal = require("../../../components/ai/message-reveal.cjs.js");
@@ -15,7 +15,7 @@ import { getSignalType, isRecord, isSignalData, isUserSignalType, toReactiveSign
15
15
  import { parseSkillActivation } from "./skill-activation.es.js";
16
16
  import { SkillMessage } from "./skill-message.es.js";
17
17
  import { ToolCallEffects } from "../tools/tool-call-effects.es.js";
18
- import { t as ToolCard } from "../../../tool-card-BjOV2sXi.js";
18
+ import { t as ToolCard } from "../../../tool-card-CM0aHG3p.js";
19
19
  import { badgeStatus, isSettledState } from "../tools/tool-card-kind.es.js";
20
20
  import { collectToolGroups } from "../tools/tool-groups.es.js";
21
21
  import { useRevealedParts } from "../../../components/ai/message-reveal.es.js";
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_tool_card = require("../../../../tool-card-CO_3C_Bn.cjs");
2
+ const require_tool_card = require("../../../../tool-card-xDlCD0m6.cjs");
3
3
  exports.AgentBadgeWrapper = require_tool_card.AgentBadgeWrapper;
@@ -1 +1 @@
1
- export { r as AgentBadgeWrapper } from "../../../../tool-card-BjOV2sXi.js";
1
+ export { r as AgentBadgeWrapper } from "../../../../tool-card-CM0aHG3p.js";
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_tool_card = require("../../../../tool-card-CO_3C_Bn.cjs");
2
+ const require_tool_card = require("../../../../tool-card-xDlCD0m6.cjs");
3
3
  exports.AgentBadge = require_tool_card.AgentBadge;
@@ -1 +1 @@
1
- export { i as AgentBadge } from "../../../../tool-card-BjOV2sXi.js";
1
+ export { i as AgentBadge } from "../../../../tool-card-CM0aHG3p.js";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_domains_chat_context_tool_call_context = require("../../context/tool-call-context.cjs.js");
3
- const require_ask_user = require("../../../../ask-user-DcnUNMM5.cjs");
3
+ const require_ask_user = require("../../../../ask-user-DIYcPkoX.cjs");
4
4
  let react_jsx_runtime = require("react/jsx-runtime");
5
5
  // src/domains/chat/tools/badges/ask-user-badge.tsx
6
6
  var AskUserBadge = ({ toolCallId, suspendPayload, result }) => {
@@ -1,5 +1,5 @@
1
1
  import { useToolCall } from "../../context/tool-call-context.es.js";
2
- import { t as AskUser } from "../../../../ask-user-D4ezQ6pt.js";
2
+ import { t as AskUser } from "../../../../ask-user-CqzPUD9E.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  // src/domains/chat/tools/badges/ask-user-badge.tsx
5
5
  var AskUserBadge = ({ toolCallId, suspendPayload, result }) => {
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_Button = require("../../../../Button-BfICfyxD.cjs");
3
- const require_CodeEditor = require("../../../../CodeEditor-DHIDfP5g.cjs");
3
+ const require_CodeEditor = require("../../../../CodeEditor-zMSUzPdX.cjs");
4
4
  const require_Dialog = require("../../../../Dialog-Duy3M1ny.cjs");
5
5
  const require_Txt = require("../../../../Txt-_00wWxTd.cjs");
6
6
  const require_hooks_use_time_diff = require("../../../../hooks/use-time-diff.cjs.js");
@@ -1,5 +1,5 @@
1
1
  import { t as Button } from "../../../../Button-Bi7aXd_G.js";
2
- import { t as CodeEditor } from "../../../../CodeEditor-ZoBu3Gjw.js";
2
+ import { t as CodeEditor } from "../../../../CodeEditor-BqAM9L7t.js";
3
3
  import { a as DialogContent, c as DialogHeader, d as DialogTitle, n as DialogBody, o as DialogDescription, t as Dialog } from "../../../../Dialog-OBPu3rl2.js";
4
4
  import { t as Txt } from "../../../../Txt-5efBsb2p.js";
5
5
  import { useTimeDiff } from "../../../../hooks/use-time-diff.es.js";
@@ -4,7 +4,7 @@ const require_domains_chat_tools_badges_tool_approval_badge = require("./tool-ap
4
4
  const require_AgentIndicator = require("../../../../AgentIndicator-zCokR2zb.cjs");
5
5
  const require_code = require("../../../../code-CqgfD-cP.cjs");
6
6
  const require_components_CodeBlock = require("../../../../components/CodeBlock.cjs.js");
7
- const require_CodeEditor = require("../../../../CodeEditor-DHIDfP5g.cjs");
7
+ const require_CodeEditor = require("../../../../CodeEditor-zMSUzPdX.cjs");
8
8
  const require_formatting = require("../../../../formatting-BcPMU2NY.cjs");
9
9
  let react = require("react");
10
10
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -3,7 +3,7 @@ import { ToolApprovalBadge } from "./tool-approval-badge.es.js";
3
3
  import { t as agentGlyph } from "../../../../AgentIndicator-Dnv_1hvF.js";
4
4
  import { t as Code } from "../../../../code-B7cFirk4.js";
5
5
  import { CodeBlock } from "../../../../components/CodeBlock.es.js";
6
- import { t as CodeEditor } from "../../../../CodeEditor-ZoBu3Gjw.js";
6
+ import { t as CodeEditor } from "../../../../CodeEditor-BqAM9L7t.js";
7
7
  import { n as formatTypeScript } from "../../../../formatting-FU4kOXPG.js";
8
8
  import { useEffect, useState } from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -9,7 +9,7 @@ const require_domains_chat_tools_badges_awaits_tool_approval = require("./awaits
9
9
  const require_domains_chat_tools_badges_tool_approval_badge = require("./tool-approval-badge.cjs.js");
10
10
  const require_tool_presentation = require("../../../../tool-presentation-DPp9h-n2.cjs");
11
11
  const require_tool_call = require("../../../../tool-call-C4TBpJ6Y.cjs");
12
- const require_CodeEditor = require("../../../../CodeEditor-DHIDfP5g.cjs");
12
+ const require_CodeEditor = require("../../../../CodeEditor-zMSUzPdX.cjs");
13
13
  let react_jsx_runtime = require("react/jsx-runtime");
14
14
  // src/domains/chat/tools/badges/tool-badge.tsx
15
15
  function formatArgs(args) {
@@ -8,7 +8,7 @@ import { awaitsToolApproval } from "./awaits-tool-approval.es.js";
8
8
  import { ToolApprovalBadge } from "./tool-approval-badge.es.js";
9
9
  import { a as stringifyToolValue, i as presentTool } from "../../../../tool-presentation-C2bYQ7gB.js";
10
10
  import { a as ToolCallBody, c as ToolCallOutput, o as toolCallHasBody } from "../../../../tool-call-BLzYTI-x.js";
11
- import { t as CodeEditor } from "../../../../CodeEditor-ZoBu3Gjw.js";
11
+ import { t as CodeEditor } from "../../../../CodeEditor-BqAM9L7t.js";
12
12
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
13
  // src/domains/chat/tools/badges/tool-badge.tsx
14
14
  function formatArgs(args) {
@@ -16,7 +16,7 @@ const require_domains_workflows_context_playground_workflow_run_provider = requi
16
16
  const require_AgentIndicator = require("../../../../AgentIndicator-zCokR2zb.cjs");
17
17
  const require_tool_call = require("../../../../tool-call-C4TBpJ6Y.cjs");
18
18
  const require_Button = require("../../../../Button-BfICfyxD.cjs");
19
- const require_CodeEditor = require("../../../../CodeEditor-DHIDfP5g.cjs");
19
+ const require_CodeEditor = require("../../../../CodeEditor-zMSUzPdX.cjs");
20
20
  const require_icons_WorkflowIcon = require("../../../../icons/WorkflowIcon.cjs.js");
21
21
  const require_lib_framework = require("../../../../lib/framework.cjs.js");
22
22
  let react = require("react");
@@ -15,7 +15,7 @@ import { PlaygroundWorkflowRunProvider } from "../../../workflows/context/playgr
15
15
  import { t as agentGlyph } from "../../../../AgentIndicator-Dnv_1hvF.js";
16
16
  import { f as ToolCallMono } from "../../../../tool-call-BLzYTI-x.js";
17
17
  import { t as Button } from "../../../../Button-Bi7aXd_G.js";
18
- import { t as CodeEditor } from "../../../../CodeEditor-ZoBu3Gjw.js";
18
+ import { t as CodeEditor } from "../../../../CodeEditor-BqAM9L7t.js";
19
19
  import { WorkflowIcon as WorkflowIcon$1 } from "../../../../icons/WorkflowIcon.es.js";
20
20
  import { useLinkComponent } from "../../../../lib/framework.es.js";
21
21
  import { useContext, useEffect } from "react";
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_domains_chat_tools_mcp_input_request = require("./mcp-input-request.cjs.js");
3
- const require_ask_user = require("../../../ask-user-DcnUNMM5.cjs");
3
+ const require_ask_user = require("../../../ask-user-DIYcPkoX.cjs");
4
4
  const require_Button = require("../../../Button-BfICfyxD.cjs");
5
- const require_CodeEditor = require("../../../CodeEditor-DHIDfP5g.cjs");
5
+ const require_CodeEditor = require("../../../CodeEditor-zMSUzPdX.cjs");
6
6
  const require_Notice = require("../../../Notice-B_KjMmA6.cjs");
7
7
  const require_Txt = require("../../../Txt-_00wWxTd.cjs");
8
8
  const require_lib_form_dynamic_form = require("../../../lib/form/dynamic-form.cjs.js");
@@ -1,7 +1,7 @@
1
1
  import { inputRequestTooLarge } from "./mcp-input-request.es.js";
2
- import { c as AskUserBody, l as AskUserContainer, u as AskUserLabel } from "../../../ask-user-D4ezQ6pt.js";
2
+ import { c as AskUserBody, l as AskUserContainer, u as AskUserLabel } from "../../../ask-user-CqzPUD9E.js";
3
3
  import { t as Button } from "../../../Button-Bi7aXd_G.js";
4
- import { t as CodeEditor } from "../../../CodeEditor-ZoBu3Gjw.js";
4
+ import { t as CodeEditor } from "../../../CodeEditor-BqAM9L7t.js";
5
5
  import { t as Notice } from "../../../Notice-OSlG42lD.js";
6
6
  import { t as Txt } from "../../../Txt-5efBsb2p.js";
7
7
  import { DynamicForm } from "../../../lib/form/dynamic-form.es.js";
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_tool_card = require("../../../tool-card-CO_3C_Bn.cjs");
2
+ const require_tool_card = require("../../../tool-card-xDlCD0m6.cjs");
3
3
  exports.ToolCard = require_tool_card.ToolCard;
4
4
  exports.ToolCardInner = require_tool_card.ToolCardInner;
@@ -1 +1 @@
1
- export { t as ToolCard, n as ToolCardInner } from "../../../tool-card-BjOV2sXi.js";
1
+ export { t as ToolCard, n as ToolCardInner } from "../../../tool-card-CM0aHG3p.js";
@@ -9,7 +9,7 @@ const require_domains_datasets_components_add_dataset_item_dialog_trajectory_typ
9
9
  const require_domains_datasets_components_add_dataset_item_dialog_use_target_agent_tools = require("./use-target-agent-tools.cjs.js");
10
10
  const require_Badge = require("../../../../Badge-DqaMg7Gy.cjs");
11
11
  const require_Button = require("../../../../Button-BfICfyxD.cjs");
12
- const require_CodeEditor = require("../../../../CodeEditor-DHIDfP5g.cjs");
12
+ const require_CodeEditor = require("../../../../CodeEditor-zMSUzPdX.cjs");
13
13
  const require_Dialog = require("../../../../Dialog-Duy3M1ny.cjs");
14
14
  const require_components_Field = require("../../../../components/Field.cjs.js");
15
15
  const require_Txt = require("../../../../Txt-_00wWxTd.cjs");
@@ -8,7 +8,7 @@ import { toTrajectoryStepRow } from "./trajectory-types.es.js";
8
8
  import { useTargetAgentTools } from "./use-target-agent-tools.es.js";
9
9
  import { t as Badge } from "../../../../Badge-C7NnqmMx.js";
10
10
  import { t as Button } from "../../../../Button-Bi7aXd_G.js";
11
- import { t as CodeEditor } from "../../../../CodeEditor-ZoBu3Gjw.js";
11
+ import { t as CodeEditor } from "../../../../CodeEditor-BqAM9L7t.js";
12
12
  import { a as DialogContent, c as DialogHeader, d as DialogTitle, n as DialogBody, o as DialogDescription, p as DialogAction, r as DialogCancel, s as DialogFooter, t as Dialog } from "../../../../Dialog-OBPu3rl2.js";
13
13
  import { Field, FieldDescription, FieldError, FieldLabel } from "../../../../components/Field.es.js";
14
14
  import { t as Txt } from "../../../../Txt-5efBsb2p.js";
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_domains_datasets_components_add_dataset_item_dialog_trajectory_types = require("./trajectory-types.cjs.js");
3
3
  const require_Button = require("../../../../Button-BfICfyxD.cjs");
4
- const require_CodeEditor = require("../../../../CodeEditor-DHIDfP5g.cjs");
4
+ const require_CodeEditor = require("../../../../CodeEditor-zMSUzPdX.cjs");
5
5
  const require_components_Collapsible = require("../../../../components/Collapsible.cjs.js");
6
6
  const require_components_DisclosureChevron = require("../../../../components/DisclosureChevron.cjs.js");
7
- const require_input = require("../../../../input-BpnUsQSt.cjs");
7
+ const require_input = require("../../../../input-D_V0m95F.cjs");
8
8
  const require_components_SegmentedControl = require("../../../../components/SegmentedControl.cjs.js");
9
9
  const require_select = require("../../../../select-CeukeSn_.cjs");
10
10
  const require_Txt = require("../../../../Txt-_00wWxTd.cjs");
@@ -1,9 +1,9 @@
1
1
  import { ORDERING_LABELS, STEP_TYPE_OPTIONS, isStepTypeOption, isToolStepType, isTrajectoryOrdering, newTrajectoryStep, recordedDetails } from "./trajectory-types.es.js";
2
2
  import { t as Button } from "../../../../Button-Bi7aXd_G.js";
3
- import { t as CodeEditor } from "../../../../CodeEditor-ZoBu3Gjw.js";
3
+ import { t as CodeEditor } from "../../../../CodeEditor-BqAM9L7t.js";
4
4
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../../../components/Collapsible.es.js";
5
5
  import { DisclosureChevron } from "../../../../components/DisclosureChevron.es.js";
6
- import { t as Input } from "../../../../input-Cyit5ZSc.js";
6
+ import { t as Input } from "../../../../input-BNykbvOz.js";
7
7
  import { SegmentedControl, SegmentedControlItem } from "../../../../components/SegmentedControl.es.js";
8
8
  import { i as SelectItem, n as SelectContent, o as SelectTrigger, s as SelectValue, t as Select } from "../../../../select-dNX9If-s.js";
9
9
  import { t as Txt } from "../../../../Txt-5efBsb2p.js";
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_Button = require("../../../Button-BfICfyxD.cjs");
4
- const require_CodeEditor = require("../../../CodeEditor-DHIDfP5g.cjs");
5
- const require_DataPanel = require("../../../DataPanel-BRRAvWYQ.cjs");
4
+ const require_CodeEditor = require("../../../CodeEditor-zMSUzPdX.cjs");
5
+ const require_DataPanel = require("../../../DataPanel-LfExjFpP.cjs");
6
6
  const require_components_Field = require("../../../components/Field.cjs.js");
7
7
  const require_components_Form = require("../../../components/Form.cjs.js");
8
8
  const require_select = require("../../../select-CeukeSn_.cjs");
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { t as Button } from "../../../Button-Bi7aXd_G.js";
3
- import { t as CodeEditor } from "../../../CodeEditor-ZoBu3Gjw.js";
4
- import { t as DataPanel } from "../../../DataPanel-pVr5LVaK.js";
3
+ import { t as CodeEditor } from "../../../CodeEditor-BqAM9L7t.js";
4
+ import { t as DataPanel } from "../../../DataPanel-Rv5Mb_pf.js";
5
5
  import { Field, FieldLabel } from "../../../components/Field.es.js";
6
6
  import { Form } from "../../../components/Form.es.js";
7
7
  import { i as SelectItem, n as SelectContent, o as SelectTrigger, s as SelectValue, t as Select } from "../../../select-dNX9If-s.js";
@@ -13,13 +13,13 @@ const require_domains_knowledge_components_KnowledgeTooltip = require("./Knowled
13
13
  const require_ActionRow = require("../../../ActionRow-BlC9GAef.cjs");
14
14
  const require_Button = require("../../../Button-BfICfyxD.cjs");
15
15
  const require_buttons_group = require("../../../buttons-group-DM6_Kohs.cjs");
16
- const require_DataPanel = require("../../../DataPanel-BRRAvWYQ.cjs");
16
+ const require_DataPanel = require("../../../DataPanel-LfExjFpP.cjs");
17
17
  const require_EmptyState = require("../../../EmptyState-Dc-sP95H.cjs");
18
18
  const require_scroll_area = require("../../../scroll-area-BU_TorPW.cjs");
19
19
  const require_components_SearchInput = require("../../../components/SearchInput.cjs.js");
20
20
  const require_components_Skeleton = require("../../../components/Skeleton.cjs.js");
21
21
  const require_tabs_tab = require("../../../tabs-tab-Dj2huH5T.cjs");
22
- const require_Tree = require("../../../Tree-kgLG4IbP.cjs");
22
+ const require_Tree = require("../../../Tree-6pubDJLQ.cjs");
23
23
  const require_Txt = require("../../../Txt-_00wWxTd.cjs");
24
24
  const require_icons_Icon = require("../../../icons/Icon.cjs.js");
25
25
  const require_primitives_menu_item = require("../../../primitives/menu-item.cjs.js");
@@ -12,13 +12,13 @@ import { KnowledgeTooltip } from "./KnowledgeTooltip.es.js";
12
12
  import { t as ActionRow } from "../../../ActionRow-DCrRCvBq.js";
13
13
  import { t as Button } from "../../../Button-Bi7aXd_G.js";
14
14
  import { t as ButtonsGroup } from "../../../buttons-group-DA_wORqQ.js";
15
- import { t as DataPanel } from "../../../DataPanel-pVr5LVaK.js";
15
+ import { t as DataPanel } from "../../../DataPanel-Rv5Mb_pf.js";
16
16
  import { n as EmptyState } from "../../../EmptyState-i88y1x75.js";
17
17
  import { t as ScrollArea } from "../../../scroll-area-9-S7wfSs.js";
18
18
  import { SearchInput } from "../../../components/SearchInput.es.js";
19
19
  import { Skeleton, SkeletonText } from "../../../components/Skeleton.es.js";
20
20
  import { n as Tabs, r as TabList, t as Tab } from "../../../tabs-tab-CJVS0WED.js";
21
- import { t as Tree } from "../../../Tree-D1_VJClB.js";
21
+ import { t as Tree } from "../../../Tree-DpRLmis3.js";
22
22
  import { t as Txt } from "../../../Txt-5efBsb2p.js";
23
23
  import { Icon } from "../../../icons/Icon.es.js";
24
24
  import { menuItemButtonClass } from "../../../primitives/menu-item.es.js";
@@ -3,7 +3,7 @@ const require_Button = require("../../../Button-BfICfyxD.cjs");
3
3
  const require_buttons_group = require("../../../buttons-group-DM6_Kohs.cjs");
4
4
  const require_copy_button = require("../../../copy-button-DuEUYvS2.cjs");
5
5
  const require_DataKeysAndValues = require("../../../DataKeysAndValues-BbKeVxrQ.cjs");
6
- const require_DataPanel = require("../../../DataPanel-BRRAvWYQ.cjs");
6
+ const require_DataPanel = require("../../../DataPanel-LfExjFpP.cjs");
7
7
  const require_Txt = require("../../../Txt-_00wWxTd.cjs");
8
8
  const require_utils_date_format = require("../../../utils/date-format.cjs.js");
9
9
  let react = require("react");
@@ -2,7 +2,7 @@ import { t as Button } from "../../../Button-Bi7aXd_G.js";
2
2
  import { t as ButtonsGroup } from "../../../buttons-group-DA_wORqQ.js";
3
3
  import { t as CopyButton } from "../../../copy-button-B-_Z6N6y.js";
4
4
  import { t as DataKeysAndValues } from "../../../DataKeysAndValues-B56je3sK.js";
5
- import { t as DataPanel } from "../../../DataPanel-pVr5LVaK.js";
5
+ import { t as DataPanel } from "../../../DataPanel-Rv5Mb_pf.js";
6
6
  import { t as Txt } from "../../../Txt-5efBsb2p.js";
7
7
  import { formatTimestampPrecise } from "../../../utils/date-format.es.js";
8
8
  import { Fragment } from "react";
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_observability_saved_views = require("../../../observability-saved-views-UM8HBJ6J.cjs");
2
+ const require_observability_saved_views = require("../../../observability-saved-views-CzRPN_9m.cjs");
3
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
4
  // src/domains/logs/components/logs-saved-views.tsx
5
5
  /** Saved views of the logs page, placed by the host next to `LogsToolbar`. Renders nothing without a `SavedViewsProvider`. */
@@ -1,4 +1,4 @@
1
- import { t as ObservabilitySavedViews } from "../../../observability-saved-views-lLWk1w0g.js";
1
+ import { t as ObservabilitySavedViews } from "../../../observability-saved-views-hu_hkXVY.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  // src/domains/logs/components/logs-saved-views.tsx
4
4
  /** Saved views of the logs page, placed by the host next to `LogsToolbar`. Renders nothing without a `SavedViewsProvider`. */
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_property_filter_applied = require("../../../property-filter-applied-iYDdM1hb.cjs");
2
+ const require_property_filter_applied = require("../../../property-filter-applied-ML84st6J.cjs");
3
3
  const require_utils = require("../../../utils-uDc1ofX1.cjs");
4
4
  let react_jsx_runtime = require("react/jsx-runtime");
5
5
  // src/domains/logs/components/logs-toolbar.tsx
@@ -1,4 +1,4 @@
1
- import { r as PropertyFilterActions, t as PropertyFilterApplied } from "../../../property-filter-applied-BBVmWRsC.js";
1
+ import { r as PropertyFilterActions, t as PropertyFilterApplied } from "../../../property-filter-applied-PaJ7sLsM.js";
2
2
  import { t as cn } from "../../../utils-DQx8TpNT.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  // src/domains/logs/components/logs-toolbar.tsx
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_date_time_range_picker = require("../../../date-time-range-picker-2a-wUBTk.cjs");
2
+ const require_date_time_range_picker = require("../../../date-time-range-picker-Dhnuwa-U.cjs");
3
3
  const require_domains_metrics_hooks_use_metrics = require("../hooks/use-metrics.cjs.js");
4
4
  const require_domains_metrics_metrics_date_presets = require("../metrics-date-presets.cjs.js");
5
5
  let react = require("react");
@@ -1,4 +1,4 @@
1
- import { t as DateTimeRangePicker } from "../../../date-time-range-picker-BUjjjvo8.js";
1
+ import { t as DateTimeRangePicker } from "../../../date-time-range-picker-CJyhcug7.js";
2
2
  import { useMetrics } from "../hooks/use-metrics.es.js";
3
3
  import { METRICS_PICKER_PRESETS, fromPickerPreset, toPickerPreset } from "../metrics-date-presets.es.js";
4
4
  import { useRef } from "react";
@@ -2,7 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_domains_metrics_hooks_use_metrics = require("../hooks/use-metrics.cjs.js");
3
3
  const require_domains_metrics_hooks_use_trace_retention_min_date = require("../hooks/use-trace-retention-min-date.cjs.js");
4
4
  const require_domains_metrics_metrics_date_presets = require("../metrics-date-presets.cjs.js");
5
- const require_filter_bar_time_range = require("../../../filter-bar-time-range-CEgdThCy.cjs");
5
+ const require_filter_bar_time_range = require("../../../filter-bar-time-range-D4C3kU0J.cjs");
6
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
7
  // src/domains/metrics/components/metrics-time-range-chip.tsx
8
8
  /**
@@ -1,7 +1,7 @@
1
1
  import { useMetrics } from "../hooks/use-metrics.es.js";
2
2
  import { useTraceRetentionMinDate } from "../hooks/use-trace-retention-min-date.es.js";
3
3
  import { METRICS_PICKER_PRESETS, fromPickerPreset, toPickerPreset } from "../metrics-date-presets.es.js";
4
- import { i as FilterBarTimeRange } from "../../../filter-bar-time-range-CHSMbpPd.js";
4
+ import { i as FilterBarTimeRange } from "../../../filter-bar-time-range-ao2YiYEJ.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  // src/domains/metrics/components/metrics-time-range-chip.tsx
7
7
  /**
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_observability_saved_views = require("../../../observability-saved-views-UM8HBJ6J.cjs");
2
+ const require_observability_saved_views = require("../../../observability-saved-views-CzRPN_9m.cjs");
3
3
  exports.ObservabilitySavedViews = require_observability_saved_views.ObservabilitySavedViews;