@mastra/playground-ui 60.1.0 → 60.2.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 (729) hide show
  1. package/dist/{ask-user-Dlz2346n.js → ask-user-DE8TaPhb.js} +62 -53
  2. package/dist/ask-user-DE8TaPhb.js.map +1 -0
  3. package/dist/{ask-user-CXu4b7Jw.cjs → ask-user-XYY0fUoI.cjs} +61 -52
  4. package/dist/ask-user-XYY0fUoI.cjs.map +1 -0
  5. package/dist/{checkbox-CI8JtZKS.cjs → checkbox-Bkobte27.cjs} +3 -1
  6. package/dist/checkbox-Bkobte27.cjs.map +1 -0
  7. package/dist/{checkbox-CQedzgsi.js → checkbox-DcNIsz5L.js} +3 -1
  8. package/dist/checkbox-DcNIsz5L.js.map +1 -0
  9. package/dist/{code-block-DY5KsTGY.js → code-block-Bnz7Pq0Q.js} +3 -3
  10. package/dist/code-block-Bnz7Pq0Q.js.map +1 -0
  11. package/dist/{code-block-BzoMjjtf.cjs → code-block-C3DbSINk.cjs} +3 -3
  12. package/dist/code-block-C3DbSINk.cjs.map +1 -0
  13. package/dist/{code-editor-B_wPmKPf.cjs → code-editor-Btr1qm_5.cjs} +26 -6
  14. package/dist/code-editor-Btr1qm_5.cjs.map +1 -0
  15. package/dist/{code-editor-28chVxHw.js → code-editor-DzhYz1fH.js} +26 -6
  16. package/dist/code-editor-DzhYz1fH.js.map +1 -0
  17. package/dist/{combobox-B15qTrWO.js → combobox-DKFPbNMB.js} +13 -11
  18. package/dist/combobox-DKFPbNMB.js.map +1 -0
  19. package/dist/{combobox-DJ0c4o4S.cjs → combobox-RzEkcOuu.cjs} +14 -12
  20. package/dist/combobox-RzEkcOuu.cjs.map +1 -0
  21. package/dist/{combobox-styles-C2MEEpaG.js → combobox-styles-mbcWlNZQ.js} +6 -7
  22. package/dist/combobox-styles-mbcWlNZQ.js.map +1 -0
  23. package/dist/{combobox-styles-DLflBH-G.cjs → combobox-styles-qL3FSgmU.cjs} +5 -6
  24. package/dist/combobox-styles-qL3FSgmU.cjs.map +1 -0
  25. package/dist/components/Checkbox.cjs.js +1 -1
  26. package/dist/components/Checkbox.es.js +1 -1
  27. package/dist/components/CodeBlock.cjs.js +1 -1
  28. package/dist/components/CodeBlock.es.js +1 -1
  29. package/dist/components/CodeEditor.cjs.js +1 -1
  30. package/dist/components/CodeEditor.es.js +1 -1
  31. package/dist/components/Combobox.cjs.js +2 -2
  32. package/dist/components/Combobox.es.js +2 -2
  33. package/dist/components/Comment.cjs.js +7 -9
  34. package/dist/components/Comment.cjs.js.map +1 -1
  35. package/dist/components/Comment.es.js +8 -10
  36. package/dist/components/Comment.es.js.map +1 -1
  37. package/dist/components/DataCodeSection.cjs.js +1 -1
  38. package/dist/components/DataCodeSection.es.js +1 -1
  39. package/dist/components/DataList.cjs.js +5 -5
  40. package/dist/components/DataList.es.js +5 -5
  41. package/dist/components/DataPanel.cjs.js +1 -1
  42. package/dist/components/DataPanel.es.js +1 -1
  43. package/dist/components/DateTimePicker.cjs.js +9 -14
  44. package/dist/components/DateTimePicker.cjs.js.map +1 -1
  45. package/dist/components/DateTimePicker.es.js +9 -14
  46. package/dist/components/DateTimePicker.es.js.map +1 -1
  47. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  48. package/dist/components/DateTimeRangePicker.es.js +1 -1
  49. package/dist/components/EnvironmentVariablesEditor.cjs.js +12 -22
  50. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  51. package/dist/components/EnvironmentVariablesEditor.es.js +12 -22
  52. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  53. package/dist/components/Field.cjs.js +19 -0
  54. package/dist/components/Field.cjs.js.map +1 -0
  55. package/dist/components/Field.d.ts +2 -0
  56. package/dist/components/Field.es.js +3 -0
  57. package/dist/components/Field.es.js.map +1 -0
  58. package/dist/components/FilterBar.cjs.js +2 -2
  59. package/dist/components/FilterBar.es.js +3 -3
  60. package/dist/components/Form.cjs.js +10 -0
  61. package/dist/components/Form.cjs.js.map +1 -0
  62. package/dist/components/Form.d.ts +2 -0
  63. package/dist/components/Form.es.js +2 -0
  64. package/dist/components/Form.es.js.map +1 -0
  65. package/dist/components/FormFieldBlocks.cjs.js +270 -11
  66. package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
  67. package/dist/components/FormFieldBlocks.es.js +267 -8
  68. package/dist/components/FormFieldBlocks.es.js.map +1 -1
  69. package/dist/components/Input.cjs.js +1 -1
  70. package/dist/components/Input.es.js +1 -1
  71. package/dist/components/InputGroup.cjs.js +1 -1
  72. package/dist/components/InputGroup.es.js +1 -1
  73. package/dist/components/JSONSchemaForm.cjs.js +51 -52
  74. package/dist/components/JSONSchemaForm.cjs.js.map +1 -1
  75. package/dist/components/JSONSchemaForm.es.js +44 -45
  76. package/dist/components/JSONSchemaForm.es.js.map +1 -1
  77. package/dist/components/Label.cjs.js +33 -2
  78. package/dist/components/Label.cjs.js.map +1 -1
  79. package/dist/components/Label.es.js +17 -1
  80. package/dist/components/Label.es.js.map +1 -1
  81. package/dist/components/ListSearch.cjs.js +1 -1
  82. package/dist/components/ListSearch.es.js +1 -1
  83. package/dist/components/LogsDataList.cjs.js +2 -2
  84. package/dist/components/LogsDataList.es.js +2 -2
  85. package/dist/components/MainSidebar.cjs.js +11 -125
  86. package/dist/components/MainSidebar.cjs.js.map +1 -1
  87. package/dist/components/MainSidebar.es.js +1 -120
  88. package/dist/components/MainSidebar.es.js.map +1 -1
  89. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  90. package/dist/components/MarkdownRenderer.es.js +1 -1
  91. package/dist/components/PropertyFilter.cjs.js +24 -21
  92. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  93. package/dist/components/PropertyFilter.es.js +25 -22
  94. package/dist/components/PropertyFilter.es.js.map +1 -1
  95. package/dist/components/RadioGroup.cjs.js +1 -1
  96. package/dist/components/RadioGroup.es.js +1 -1
  97. package/dist/components/RuleBuilder.cjs.js +2 -2
  98. package/dist/components/RuleBuilder.es.js +2 -2
  99. package/dist/components/SearchInput.cjs.js +10 -0
  100. package/dist/components/SearchInput.cjs.js.map +1 -0
  101. package/dist/components/SearchInput.d.ts +2 -0
  102. package/dist/components/SearchInput.es.js +2 -0
  103. package/dist/components/SearchInput.es.js.map +1 -0
  104. package/dist/components/Section.cjs.js +1 -1
  105. package/dist/components/Section.es.js +1 -1
  106. package/dist/components/SegmentedControl.cjs.js +1 -1
  107. package/dist/components/SegmentedControl.es.js +1 -1
  108. package/dist/components/Select.cjs.js +1 -1
  109. package/dist/components/Select.es.js +1 -1
  110. package/dist/components/SideDialog.cjs.js +1 -1
  111. package/dist/components/SideDialog.es.js +1 -1
  112. package/dist/components/Switch.cjs.js +1 -1
  113. package/dist/components/Switch.es.js +1 -1
  114. package/dist/components/Textarea.cjs.js +1 -1
  115. package/dist/components/Textarea.es.js +1 -1
  116. package/dist/components/ThemeToggle.cjs.js +1 -1
  117. package/dist/components/ThemeToggle.es.js +1 -1
  118. package/dist/components/Workflow.cjs.js +3 -3
  119. package/dist/components/Workflow.es.js +3 -3
  120. package/dist/components/ai/activity.cjs.js +1 -1
  121. package/dist/components/ai/activity.es.js +1 -1
  122. package/dist/components/ai/ask-user.cjs.js +1 -1
  123. package/dist/components/ai/ask-user.es.js +1 -1
  124. package/dist/components/ai/plan.cjs.js +1 -1
  125. package/dist/components/ai/plan.es.js +1 -1
  126. package/dist/components/ai/tool-call.cjs.js +1 -1
  127. package/dist/components/ai/tool-call.es.js +1 -1
  128. package/dist/{custom-auto-form-field-yEMBGXu-.js → custom-auto-form-field-BvEhSH73.js} +2 -6
  129. package/dist/custom-auto-form-field-BvEhSH73.js.map +1 -0
  130. package/dist/{custom-auto-form-field-Brfb-0Te.cjs → custom-auto-form-field-DVse5pih.cjs} +2 -6
  131. package/dist/custom-auto-form-field-DVse5pih.cjs.map +1 -0
  132. package/dist/{data-code-section-It6myyvZ.js → data-code-section-DFxE6ckH.js} +22 -19
  133. package/dist/data-code-section-DFxE6ckH.js.map +1 -0
  134. package/dist/{data-code-section-DWBfkrmO.cjs → data-code-section-Ds79F6W-.cjs} +21 -18
  135. package/dist/data-code-section-Ds79F6W-.cjs.map +1 -0
  136. package/dist/{data-list-Y42KyuI1.cjs → data-list-Bqf-fhMx.cjs} +3 -3
  137. package/dist/{data-list-Y42KyuI1.cjs.map → data-list-Bqf-fhMx.cjs.map} +1 -1
  138. package/dist/{data-list-CyeD_u-6.js → data-list-CEIYm7FY.js} +3 -3
  139. package/dist/{data-list-CyeD_u-6.js.map → data-list-CEIYm7FY.js.map} +1 -1
  140. package/dist/{data-list-skeleton-Bk9LI0J0.js → data-list-skeleton-CeyLefM5.js} +2 -2
  141. package/dist/{data-list-skeleton-Bk9LI0J0.js.map → data-list-skeleton-CeyLefM5.js.map} +1 -1
  142. package/dist/{data-list-skeleton-BXPfL0s7.cjs → data-list-skeleton-DuqQkzwC.cjs} +2 -2
  143. package/dist/{data-list-skeleton-BXPfL0s7.cjs.map → data-list-skeleton-DuqQkzwC.cjs.map} +1 -1
  144. package/dist/{data-list-spacer-C8z32twc.js → data-list-spacer-BH2DjRdk.js} +2 -2
  145. package/dist/{data-list-spacer-C8z32twc.js.map → data-list-spacer-BH2DjRdk.js.map} +1 -1
  146. package/dist/{data-list-spacer-BSg2hCx7.cjs → data-list-spacer-DFvaAEqo.cjs} +2 -2
  147. package/dist/{data-list-spacer-BSg2hCx7.cjs.map → data-list-spacer-DFvaAEqo.cjs.map} +1 -1
  148. package/dist/{data-list-top-C-pLBax7.cjs → data-list-top-CvD3KI8R.cjs} +2 -2
  149. package/dist/{data-list-top-C-pLBax7.cjs.map → data-list-top-CvD3KI8R.cjs.map} +1 -1
  150. package/dist/{data-list-top-DheFgb0M.js → data-list-top-CxUWL8gh.js} +2 -2
  151. package/dist/{data-list-top-DheFgb0M.js.map → data-list-top-CxUWL8gh.js.map} +1 -1
  152. package/dist/{data-panel-DuLf5j8S.js → data-panel-CbomKGJt.js} +2 -2
  153. package/dist/{data-panel-DuLf5j8S.js.map → data-panel-CbomKGJt.js.map} +1 -1
  154. package/dist/{data-panel-D7Qk4iwZ.cjs → data-panel-o-QLWuFV.cjs} +2 -2
  155. package/dist/{data-panel-D7Qk4iwZ.cjs.map → data-panel-o-QLWuFV.cjs.map} +1 -1
  156. package/dist/{date-time-range-picker-BDylIIzt.js → date-time-range-picker-B1zYIQTC.js} +56 -55
  157. package/dist/date-time-range-picker-B1zYIQTC.js.map +1 -0
  158. package/dist/{date-time-range-picker-UheN070q.cjs → date-time-range-picker-Bb-CGVEL.cjs} +56 -55
  159. package/dist/date-time-range-picker-Bb-CGVEL.cjs.map +1 -0
  160. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  161. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  162. package/dist/domains/chat/messages/dataset-save-action.cjs.js +11 -10
  163. package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
  164. package/dist/domains/chat/messages/dataset-save-action.es.js +11 -10
  165. package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
  166. package/dist/domains/chat/messages/message-row.cjs.js +1 -1
  167. package/dist/domains/chat/messages/message-row.es.js +1 -1
  168. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  169. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  170. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  171. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  172. package/dist/domains/chat/messages/skill-message.cjs.js +1 -1
  173. package/dist/domains/chat/messages/skill-message.es.js +1 -1
  174. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  175. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  176. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +2 -2
  177. package/dist/domains/chat/tools/badges/agent-badge.es.js +2 -2
  178. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  179. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  180. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
  181. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
  182. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  183. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  184. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
  185. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  186. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
  187. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
  188. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  189. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  190. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +2 -2
  191. package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
  192. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
  193. package/dist/domains/chat/tools/badges/workflow-badge.es.js +2 -2
  194. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  195. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  196. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  197. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  198. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +18 -16
  199. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js.map +1 -1
  200. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +18 -16
  201. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js.map +1 -1
  202. package/dist/domains/feedback/utils/feedback-refetch-interval.cjs.js +1 -1
  203. package/dist/domains/feedback/utils/feedback-refetch-interval.cjs.js.map +1 -1
  204. package/dist/domains/feedback/utils/feedback-refetch-interval.es.js +1 -1
  205. package/dist/domains/feedback/utils/feedback-refetch-interval.es.js.map +1 -1
  206. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  207. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  208. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
  209. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  210. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  211. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  212. package/dist/domains/memory/components/observation-detail-view.cjs.js +5 -3
  213. package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
  214. package/dist/domains/memory/components/observation-detail-view.es.js +5 -3
  215. package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
  216. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  217. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  218. package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
  219. package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
  220. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
  221. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
  222. package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
  223. package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
  224. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +16 -15
  225. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
  226. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +16 -15
  227. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
  228. package/dist/domains/request-context/components/request-context-label.cjs.js +4 -3
  229. package/dist/domains/request-context/components/request-context-label.cjs.js.map +1 -1
  230. package/dist/domains/request-context/components/request-context-label.es.js +4 -3
  231. package/dist/domains/request-context/components/request-context-label.es.js.map +1 -1
  232. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  233. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  234. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  235. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  236. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
  237. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  238. package/dist/domains/scores/hooks/use-scorers.cjs.js +1 -1
  239. package/dist/domains/scores/hooks/use-scorers.cjs.js.map +1 -1
  240. package/dist/domains/scores/hooks/use-scorers.es.js +1 -1
  241. package/dist/domains/scores/hooks/use-scorers.es.js.map +1 -1
  242. package/dist/domains/scores/hooks/use-trace-span-scores.cjs.js +1 -1
  243. package/dist/domains/scores/hooks/use-trace-span-scores.cjs.js.map +1 -1
  244. package/dist/domains/scores/hooks/use-trace-span-scores.es.js +1 -1
  245. package/dist/domains/scores/hooks/use-trace-span-scores.es.js.map +1 -1
  246. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  247. package/dist/domains/traces/components/feedback-thread.es.js +1 -1
  248. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  249. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  250. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  251. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  252. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  253. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  254. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  255. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  256. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  257. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  258. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  259. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  260. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  261. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  262. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  263. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  264. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
  265. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  266. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  267. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  268. package/dist/domains/traces/components/thread-trace/thread-trace-context.cjs.js.map +1 -1
  269. package/dist/domains/traces/components/thread-trace/thread-trace-context.es.js.map +1 -1
  270. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  271. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  272. package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js +7 -8
  273. package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js.map +1 -1
  274. package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js +7 -8
  275. package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js.map +1 -1
  276. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  277. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  278. package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js +23 -16
  279. package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js.map +1 -1
  280. package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js +23 -16
  281. package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js.map +1 -1
  282. package/dist/domains/traces/components/thread-trace/thread-trace-row-context.cjs.js.map +1 -1
  283. package/dist/domains/traces/components/thread-trace/thread-trace-row-context.es.js.map +1 -1
  284. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +3 -9
  285. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js.map +1 -1
  286. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +3 -9
  287. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js.map +1 -1
  288. package/dist/domains/traces/components/thread-trace.cjs.js +0 -2
  289. package/dist/domains/traces/components/thread-trace.cjs.js.map +1 -1
  290. package/dist/domains/traces/components/thread-trace.es.js +0 -2
  291. package/dist/domains/traces/components/thread-trace.es.js.map +1 -1
  292. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +20 -53
  293. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  294. package/dist/domains/traces/components/thread-view-by-trace.es.js +21 -54
  295. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  296. package/dist/domains/traces/components/trace-columns-menu.cjs.js +10 -11
  297. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  298. package/dist/domains/traces/components/trace-columns-menu.es.js +10 -11
  299. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  300. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +5 -9
  301. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  302. package/dist/domains/traces/components/trace-data-panel-view.es.js +6 -10
  303. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  304. package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -0
  305. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  306. package/dist/domains/traces/components/trace-data-panel.es.js +1 -0
  307. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  308. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  309. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  310. package/dist/domains/traces/components/trace-span-panel.cjs.js +0 -1
  311. package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
  312. package/dist/domains/traces/components/trace-span-panel.es.js +0 -1
  313. package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
  314. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  315. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  316. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -3
  317. package/dist/domains/traces/components/trace-thread-panel.cjs.js.map +1 -1
  318. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -3
  319. package/dist/domains/traces/components/trace-thread-panel.es.js.map +1 -1
  320. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  321. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  322. package/dist/domains/traces/components/traces-list-view.cjs.js +3 -3
  323. package/dist/domains/traces/components/traces-list-view.es.js +3 -3
  324. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
  325. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
  326. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +2 -0
  327. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -1
  328. package/dist/domains/traces/hooks/use-traces-list-source.es.js +2 -0
  329. package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -1
  330. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  331. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  332. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
  333. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  334. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  335. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  336. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  337. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  338. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +1 -1
  339. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
  340. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +7 -14
  341. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js.map +1 -1
  342. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +7 -14
  343. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js.map +1 -1
  344. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +39 -42
  345. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
  346. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +40 -43
  347. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
  348. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
  349. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  350. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  351. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  352. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  353. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  354. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +8 -16
  355. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js.map +1 -1
  356. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +9 -17
  357. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js.map +1 -1
  358. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +1 -1
  359. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
  360. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
  361. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  362. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  363. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  364. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
  365. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
  366. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
  367. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  368. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +1 -1
  369. package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
  370. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  371. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  372. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
  373. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +1 -1
  374. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
  375. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  376. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +8 -21
  377. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
  378. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +9 -22
  379. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
  380. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  381. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  382. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +3 -3
  383. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +3 -3
  384. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +62 -68
  385. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
  386. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +62 -68
  387. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
  388. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  389. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  390. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +13 -16
  391. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js.map +1 -1
  392. package/dist/ee/topics/components/topic-trace-summary-list.es.js +14 -17
  393. package/dist/ee/topics/components/topic-trace-summary-list.es.js.map +1 -1
  394. package/dist/field-BtvEQ68O.js +170 -0
  395. package/dist/field-BtvEQ68O.js.map +1 -0
  396. package/dist/field-control-aria-DB6y41tQ.js +26 -0
  397. package/dist/field-control-aria-DB6y41tQ.js.map +1 -0
  398. package/dist/field-control-aria-WzMGs0A4.cjs +31 -0
  399. package/dist/field-control-aria-WzMGs0A4.cjs.map +1 -0
  400. package/dist/{field-block-DtaPqBa3.cjs → field-error-id-4DYu4KZ2.cjs} +24 -4
  401. package/dist/field-error-id-4DYu4KZ2.cjs.map +1 -0
  402. package/dist/{field-block--PeppIRb.js → field-error-id-BSQLcfHo.js} +22 -3
  403. package/dist/field-error-id-BSQLcfHo.js.map +1 -0
  404. package/dist/field-ip9xiOVa.cjs +198 -0
  405. package/dist/field-ip9xiOVa.cjs.map +1 -0
  406. package/dist/{filter-bar-chip-CBlHsz4A.cjs → filter-bar-chip-BsWm7SQr.cjs} +2 -2
  407. package/dist/{filter-bar-chip-CBlHsz4A.cjs.map → filter-bar-chip-BsWm7SQr.cjs.map} +1 -1
  408. package/dist/{filter-bar-chip-DFOtEvpW.js → filter-bar-chip-Dmboyu1t.js} +2 -2
  409. package/dist/{filter-bar-chip-DFOtEvpW.js.map → filter-bar-chip-Dmboyu1t.js.map} +1 -1
  410. package/dist/form-ChOlos7g.cjs +12 -0
  411. package/dist/form-ChOlos7g.cjs.map +1 -0
  412. package/dist/form-uj2xap-j.js +10 -0
  413. package/dist/form-uj2xap-j.js.map +1 -0
  414. package/dist/{input-bd223EJW.cjs → input-D0UPyj6A.cjs} +16 -45
  415. package/dist/input-D0UPyj6A.cjs.map +1 -0
  416. package/dist/{input-CHghVv3k.js → input-D5_B67_r.js} +17 -27
  417. package/dist/input-D5_B67_r.js.map +1 -0
  418. package/dist/{input-group-BRhBfeHC.cjs → input-group-BgCXLSRV.cjs} +77 -96
  419. package/dist/input-group-BgCXLSRV.cjs.map +1 -0
  420. package/dist/{input-group-0G9ZX_cM.js → input-group-wzirc-1k.js} +78 -97
  421. package/dist/input-group-wzirc-1k.js.map +1 -0
  422. package/dist/keyboard/keyboard-dispatcher.cjs.js +2 -0
  423. package/dist/keyboard/keyboard-dispatcher.cjs.js.map +1 -1
  424. package/dist/keyboard/keyboard-dispatcher.es.js +2 -0
  425. package/dist/keyboard/keyboard-dispatcher.es.js.map +1 -1
  426. package/dist/keyboard/use-keydown.cjs.js +7 -1
  427. package/dist/keyboard/use-keydown.cjs.js.map +1 -1
  428. package/dist/keyboard/use-keydown.es.js +7 -1
  429. package/dist/keyboard/use-keydown.es.js.map +1 -1
  430. package/dist/layout/tabbed-container.cjs.js +3 -3
  431. package/dist/layout/tabbed-container.es.js +3 -3
  432. package/dist/lib/form/components/boolean-field.cjs.js +6 -6
  433. package/dist/lib/form/components/boolean-field.cjs.js.map +1 -1
  434. package/dist/lib/form/components/boolean-field.es.js +5 -5
  435. package/dist/lib/form/components/boolean-field.es.js.map +1 -1
  436. package/dist/lib/form/components/custom-array-field.cjs.js +1 -1
  437. package/dist/lib/form/components/custom-array-field.es.js +1 -1
  438. package/dist/lib/form/components/custom-auto-form-field.cjs.js +1 -2
  439. package/dist/lib/form/components/custom-auto-form-field.cjs.js.map +1 -1
  440. package/dist/lib/form/components/custom-auto-form-field.es.js +1 -2
  441. package/dist/lib/form/components/custom-auto-form-field.es.js.map +1 -1
  442. package/dist/lib/form/components/custom-object-field.cjs.js +1 -1
  443. package/dist/lib/form/components/custom-object-field.es.js +1 -1
  444. package/dist/lib/form/components/date-field.cjs.js +6 -3
  445. package/dist/lib/form/components/date-field.cjs.js.map +1 -1
  446. package/dist/lib/form/components/date-field.es.js +6 -3
  447. package/dist/lib/form/components/date-field.es.js.map +1 -1
  448. package/dist/lib/form/components/discriminated-union-field.cjs.js +1 -1
  449. package/dist/lib/form/components/discriminated-union-field.es.js +1 -1
  450. package/dist/lib/form/components/field-wrapper.cjs.js +30 -9
  451. package/dist/lib/form/components/field-wrapper.cjs.js.map +1 -1
  452. package/dist/lib/form/components/field-wrapper.es.js +30 -9
  453. package/dist/lib/form/components/field-wrapper.es.js.map +1 -1
  454. package/dist/lib/form/components/form.cjs.js +4 -4
  455. package/dist/lib/form/components/form.cjs.js.map +1 -1
  456. package/dist/lib/form/components/form.es.js +4 -4
  457. package/dist/lib/form/components/form.es.js.map +1 -1
  458. package/dist/lib/form/components/number-field.cjs.js +3 -4
  459. package/dist/lib/form/components/number-field.cjs.js.map +1 -1
  460. package/dist/lib/form/components/number-field.es.js +3 -4
  461. package/dist/lib/form/components/number-field.es.js.map +1 -1
  462. package/dist/lib/form/components/record-field.cjs.js +13 -2
  463. package/dist/lib/form/components/record-field.cjs.js.map +1 -1
  464. package/dist/lib/form/components/record-field.es.js +13 -2
  465. package/dist/lib/form/components/record-field.es.js.map +1 -1
  466. package/dist/lib/form/components/select-field.cjs.js +4 -19
  467. package/dist/lib/form/components/select-field.cjs.js.map +1 -1
  468. package/dist/lib/form/components/select-field.es.js +4 -19
  469. package/dist/lib/form/components/select-field.es.js.map +1 -1
  470. package/dist/lib/form/components/string-field.cjs.js +2 -4
  471. package/dist/lib/form/components/string-field.cjs.js.map +1 -1
  472. package/dist/lib/form/components/string-field.es.js +2 -4
  473. package/dist/lib/form/components/string-field.es.js.map +1 -1
  474. package/dist/lib/form/components/union-field.cjs.js +1 -1
  475. package/dist/lib/form/components/union-field.es.js +1 -1
  476. package/dist/lib/form/custom-auto-form.cjs.js +1 -1
  477. package/dist/lib/form/custom-auto-form.es.js +1 -1
  478. package/dist/lib/form/dynamic-form.cjs.js +0 -5
  479. package/dist/lib/form/dynamic-form.cjs.js.map +1 -1
  480. package/dist/lib/form/dynamic-form.es.js +0 -5
  481. package/dist/lib/form/dynamic-form.es.js.map +1 -1
  482. package/dist/{list-search-BzAIj0DB.cjs → list-search-CTGQJCh1.cjs} +14 -21
  483. package/dist/list-search-CTGQJCh1.cjs.map +1 -0
  484. package/dist/{list-search-DI1DH7vU.js → list-search-CmOCmTwL.js} +15 -22
  485. package/dist/list-search-CmOCmTwL.js.map +1 -0
  486. package/dist/{logs-data-list-CtHern11.cjs → logs-data-list-B9CAqAHD.cjs} +3 -3
  487. package/dist/{logs-data-list-CtHern11.cjs.map → logs-data-list-B9CAqAHD.cjs.map} +1 -1
  488. package/dist/{logs-data-list-ButZV-2H.js → logs-data-list-DfzdzgXB.js} +3 -3
  489. package/dist/{logs-data-list-ButZV-2H.js.map → logs-data-list-DfzdzgXB.js.map} +1 -1
  490. package/dist/{main-sidebar-link-active-buZAhlHo.js → main-sidebar-B0ivY7lW.js} +118 -6
  491. package/dist/main-sidebar-B0ivY7lW.js.map +1 -0
  492. package/dist/{main-sidebar-link-active-D8VSuJKx.cjs → main-sidebar-BWKVSRoQ.cjs} +117 -4
  493. package/dist/main-sidebar-BWKVSRoQ.cjs.map +1 -0
  494. package/dist/{markdown-renderer-CZV6neya.cjs → markdown-renderer-DPwN7Vtm.cjs} +2 -2
  495. package/dist/{markdown-renderer-CZV6neya.cjs.map → markdown-renderer-DPwN7Vtm.cjs.map} +1 -1
  496. package/dist/{markdown-renderer-Cy7Iwy1c.js → markdown-renderer-zvB6a8uj.js} +2 -2
  497. package/dist/{markdown-renderer-Cy7Iwy1c.js.map → markdown-renderer-zvB6a8uj.js.map} +1 -1
  498. package/dist/new/settings.cjs.js +2 -1
  499. package/dist/new/settings.cjs.js.map +1 -1
  500. package/dist/new/settings.es.js +1 -1
  501. package/dist/new/sidebar.cjs.js +34 -34
  502. package/dist/new/sidebar.cjs.js.map +1 -1
  503. package/dist/new/sidebar.es.js +2 -2
  504. package/dist/{plan-CvTAGIWv.js → plan-BtOryfz5.js} +2 -2
  505. package/dist/{plan-CvTAGIWv.js.map → plan-BtOryfz5.js.map} +1 -1
  506. package/dist/{plan-DsfNN3a0.cjs → plan-D8rM4i4S.cjs} +2 -2
  507. package/dist/{plan-DsfNN3a0.cjs.map → plan-D8rM4i4S.cjs.map} +1 -1
  508. package/dist/primitives/form-element.cjs.js +9 -1
  509. package/dist/primitives/form-element.cjs.js.map +1 -1
  510. package/dist/primitives/form-element.es.js +7 -2
  511. package/dist/primitives/form-element.es.js.map +1 -1
  512. package/dist/primitives/textarea-control.cjs.js +24 -0
  513. package/dist/primitives/textarea-control.cjs.js.map +1 -0
  514. package/dist/primitives/textarea-control.d.ts +2 -0
  515. package/dist/primitives/textarea-control.es.js +20 -0
  516. package/dist/primitives/textarea-control.es.js.map +1 -0
  517. package/dist/{property-filter-applied-C9verwDR.js → property-filter-applied-B_nfBryj.js} +2 -2
  518. package/dist/{property-filter-applied-C9verwDR.js.map → property-filter-applied-B_nfBryj.js.map} +1 -1
  519. package/dist/{property-filter-applied-Bp2z4KBv.cjs → property-filter-applied-CSLLo3VJ.cjs} +2 -2
  520. package/dist/{property-filter-applied-Bp2z4KBv.cjs.map → property-filter-applied-CSLLo3VJ.cjs.map} +1 -1
  521. package/dist/{radio-group-BdEPWGzi.cjs → radio-group-QV7yVrSX.cjs} +13 -2
  522. package/dist/radio-group-QV7yVrSX.cjs.map +1 -0
  523. package/dist/{radio-group-CFZXUXZ5.js → radio-group-bvm7Sqq_.js} +13 -2
  524. package/dist/radio-group-bvm7Sqq_.js.map +1 -0
  525. package/dist/{reasoning-activity-OM1-hbCV.js → reasoning-activity-6VkIbDT4.js} +2 -2
  526. package/dist/{reasoning-activity-OM1-hbCV.js.map → reasoning-activity-6VkIbDT4.js.map} +1 -1
  527. package/dist/{reasoning-activity-BVviIdMe.cjs → reasoning-activity-DaXMgyr3.cjs} +2 -2
  528. package/dist/{reasoning-activity-BVviIdMe.cjs.map → reasoning-activity-DaXMgyr3.cjs.map} +1 -1
  529. package/dist/search-input-BKXiYeed.js +48 -0
  530. package/dist/search-input-BKXiYeed.js.map +1 -0
  531. package/dist/search-input-T0orZ7Jf.cjs +50 -0
  532. package/dist/search-input-T0orZ7Jf.cjs.map +1 -0
  533. package/dist/{section-dBeXxS69.cjs → section-Byml9qxH.cjs} +2 -2
  534. package/dist/{section-dBeXxS69.cjs.map → section-Byml9qxH.cjs.map} +1 -1
  535. package/dist/{section-BfEsNViI.js → section-DTooysg2.js} +2 -2
  536. package/dist/{section-BfEsNViI.js.map → section-DTooysg2.js.map} +1 -1
  537. package/dist/{segmented-control-BxeiypPR.js → segmented-control-ClbeK8DF.js} +4 -1
  538. package/dist/segmented-control-ClbeK8DF.js.map +1 -0
  539. package/dist/{segmented-control--I3IgW21.cjs → segmented-control-DwLkp3TP.cjs} +4 -1
  540. package/dist/segmented-control-DwLkp3TP.cjs.map +1 -0
  541. package/dist/{select-DZeNf-kI.js → select--ArpXYDc.js} +6 -3
  542. package/dist/select--ArpXYDc.js.map +1 -0
  543. package/dist/{select-DBY9LQFQ.cjs → select-DJQYAVcm.cjs} +5 -2
  544. package/dist/select-DJQYAVcm.cjs.map +1 -0
  545. package/dist/{settings-row-C1JZDdz_.js → settings-row-B0jGFpVw.js} +46 -39
  546. package/dist/settings-row-B0jGFpVw.js.map +1 -0
  547. package/dist/{settings-row-C7YKfUgY.cjs → settings-row-Dt4WnnRf.cjs} +47 -39
  548. package/dist/settings-row-Dt4WnnRf.cjs.map +1 -0
  549. package/dist/{side-dialog-DCzCcZs6.js → side-dialog-DZJc85m3.js} +2 -2
  550. package/dist/{side-dialog-DCzCcZs6.js.map → side-dialog-DZJc85m3.js.map} +1 -1
  551. package/dist/{side-dialog-DFnD1498.cjs → side-dialog-lQUx6B_M.cjs} +2 -2
  552. package/dist/{side-dialog-DFnD1498.cjs.map → side-dialog-lQUx6B_M.cjs.map} +1 -1
  553. package/dist/{span-payload-primitives-DL1Kr0cu.js → span-payload-primitives-CGamdu2t.js} +2 -2
  554. package/dist/{span-payload-primitives-DL1Kr0cu.js.map → span-payload-primitives-CGamdu2t.js.map} +1 -1
  555. package/dist/{span-payload-primitives-D0mhsndj.cjs → span-payload-primitives-SkL3U9hR.cjs} +2 -2
  556. package/dist/{span-payload-primitives-D0mhsndj.cjs.map → span-payload-primitives-SkL3U9hR.cjs.map} +1 -1
  557. package/dist/src/domains/feedback/utils/feedback-refetch-interval.d.ts +2 -2
  558. package/dist/src/domains/request-context/components/request-context-label.d.ts +1 -2
  559. package/dist/src/domains/scores/hooks/use-scorers.d.ts +1 -1
  560. package/dist/src/domains/scores/hooks/use-trace-span-scores.d.ts +1 -1
  561. package/dist/src/domains/traces/components/thread-trace/index.d.ts +1 -5
  562. package/dist/src/domains/traces/components/thread-trace/thread-trace-context.d.ts +0 -2
  563. package/dist/src/domains/traces/components/thread-trace/thread-trace-root.d.ts +3 -6
  564. package/dist/src/domains/traces/components/thread-trace/thread-trace-row-context.d.ts +0 -1
  565. package/dist/src/domains/traces/components/thread-view-by-trace.d.ts +7 -6
  566. package/dist/src/domains/traces/components/trace-thread-panel.d.ts +2 -4
  567. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +3 -1
  568. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +3 -4
  569. package/dist/src/ds/components/Combobox/combobox.d.ts +4 -2
  570. package/dist/src/ds/components/Comment/comment-composer.d.ts +2 -2
  571. package/dist/src/ds/components/DateTimePicker/time-picker.d.ts +2 -1
  572. package/dist/src/ds/components/Field/field-control-aria.d.ts +30 -0
  573. package/dist/src/ds/components/Field/field.d.ts +39 -0
  574. package/dist/src/ds/components/Field/field.stories.d.ts +12 -0
  575. package/dist/src/ds/components/Field/index.d.ts +2 -0
  576. package/dist/src/ds/components/Form/form.d.ts +7 -0
  577. package/dist/src/ds/components/Form/form.stories.d.ts +7 -0
  578. package/dist/src/ds/components/Form/index.d.ts +1 -0
  579. package/dist/src/ds/components/FormFieldBlocks/block/field-block.d.ts +1 -0
  580. package/dist/src/ds/components/FormFieldBlocks/block/field-error-id.d.ts +1 -5
  581. package/dist/src/ds/components/FormFieldBlocks/fields/search-field-block.d.ts +1 -0
  582. package/dist/src/ds/components/FormFieldBlocks/fields/select-field-block.d.ts +1 -0
  583. package/dist/src/ds/components/FormFieldBlocks/fields/text-field-block.d.ts +1 -0
  584. package/dist/src/ds/components/FormFieldBlocks/fields/textarea-field-block.d.ts +1 -0
  585. package/dist/src/ds/components/FormFieldBlocks/layout/field-blocks-layout.d.ts +1 -0
  586. package/dist/src/ds/components/Input/input.d.ts +3 -10
  587. package/dist/src/ds/components/InputGroup/input-group.d.ts +15 -25
  588. package/dist/src/ds/components/JSONSchemaForm/json-schema-form-field-description.d.ts +6 -3
  589. package/dist/src/ds/components/JSONSchemaForm/json-schema-form-field-name.d.ts +6 -3
  590. package/dist/src/ds/components/JSONSchemaForm/json-schema-form-field-type.d.ts +10 -3
  591. package/dist/src/ds/components/Label/label.d.ts +1 -0
  592. package/dist/src/ds/components/ListSearch/list-search.d.ts +2 -2
  593. package/dist/src/ds/components/SearchInput/index.d.ts +1 -0
  594. package/dist/src/ds/components/SearchInput/search-input.d.ts +12 -0
  595. package/dist/src/ds/components/SearchInput/search-input.stories.d.ts +8 -0
  596. package/dist/src/ds/components/Textarea/textarea.d.ts +3 -10
  597. package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +2 -1
  598. package/dist/src/ds/new/settings/index.d.ts +1 -1
  599. package/dist/src/ds/new/settings/settings-row.d.ts +11 -3
  600. package/dist/src/ds/new/settings/settings-row.stories.d.ts +321 -0
  601. package/dist/src/ds/primitives/form-element.d.ts +6 -1
  602. package/dist/src/ds/primitives/textarea-control.d.ts +3 -0
  603. package/dist/src/lib/form/components/form.d.ts +1 -1
  604. package/dist/src/lib/keyboard/keyboard-dispatcher.d.ts +2 -0
  605. package/dist/src/lib/keyboard/use-keydown.d.ts +6 -0
  606. package/dist/style.css +50 -16
  607. package/dist/{switch-Swt75_Sb.cjs → switch-BlE5ReVZ.cjs} +3 -2
  608. package/dist/switch-BlE5ReVZ.cjs.map +1 -0
  609. package/dist/{switch-88fWFfVz.js → switch-MZ1oHrmp.js} +4 -3
  610. package/dist/switch-MZ1oHrmp.js.map +1 -0
  611. package/dist/{textarea-B6wvS_CQ.js → textarea-CxPNKg2q.js} +14 -22
  612. package/dist/textarea-CxPNKg2q.js.map +1 -0
  613. package/dist/{textarea-gUBUqpol.cjs → textarea-DNV5Gs9A.cjs} +13 -40
  614. package/dist/textarea-DNV5Gs9A.cjs.map +1 -0
  615. package/dist/{time-picker-BElZALzM.js → time-picker-DRSAkFuj.js} +18 -21
  616. package/dist/time-picker-DRSAkFuj.js.map +1 -0
  617. package/dist/{time-picker-_QJdolkZ.cjs → time-picker-KE48KlpH.cjs} +18 -21
  618. package/dist/time-picker-KE48KlpH.cjs.map +1 -0
  619. package/dist/{tool-call-arguments-CQYR65FB.cjs → tool-call-arguments-BemKsB9v.cjs} +2 -2
  620. package/dist/{tool-call-arguments-CQYR65FB.cjs.map → tool-call-arguments-BemKsB9v.cjs.map} +1 -1
  621. package/dist/{tool-call-arguments-B1MghuMZ.js → tool-call-arguments-CtUKj7IB.js} +2 -2
  622. package/dist/{tool-call-arguments-B1MghuMZ.js.map → tool-call-arguments-CtUKj7IB.js.map} +1 -1
  623. package/dist/{tool-card-rxo27sve.cjs → tool-card-D9nDQgpg.cjs} +2 -2
  624. package/dist/{tool-card-rxo27sve.cjs.map → tool-card-D9nDQgpg.cjs.map} +1 -1
  625. package/dist/{tool-card-C_K5PwrK.js → tool-card-tK9zedNb.js} +2 -2
  626. package/dist/{tool-card-C_K5PwrK.js.map → tool-card-tK9zedNb.js.map} +1 -1
  627. package/dist/{traces-data-list-BsAYYJ9t.cjs → traces-data-list-Dd8vMPQK.cjs} +4 -4
  628. package/dist/{traces-data-list-BsAYYJ9t.cjs.map → traces-data-list-Dd8vMPQK.cjs.map} +1 -1
  629. package/dist/{traces-data-list-CnNpGVRN.js → traces-data-list-Fvl8mlih.js} +4 -4
  630. package/dist/{traces-data-list-CnNpGVRN.js.map → traces-data-list-Fvl8mlih.js.map} +1 -1
  631. package/dist/{use-workflow-graph-runtime-CIs2HzoP.cjs → use-workflow-graph-runtime-BNAtEa06.cjs} +2 -2
  632. package/dist/{use-workflow-graph-runtime-CIs2HzoP.cjs.map → use-workflow-graph-runtime-BNAtEa06.cjs.map} +1 -1
  633. package/dist/{use-workflow-graph-runtime-CexS1ECI.js → use-workflow-graph-runtime-JQwLwNBD.js} +2 -2
  634. package/dist/{use-workflow-graph-runtime-CexS1ECI.js.map → use-workflow-graph-runtime-JQwLwNBD.js.map} +1 -1
  635. package/dist/{workflow-code-dialog-content-BM4ZnrUr.js → workflow-code-dialog-content-3AcgitHa.js} +2 -2
  636. package/dist/{workflow-code-dialog-content-BM4ZnrUr.js.map → workflow-code-dialog-content-3AcgitHa.js.map} +1 -1
  637. package/dist/{workflow-code-dialog-content-BFm2IWDl.cjs → workflow-code-dialog-content-DyoN3850.cjs} +2 -2
  638. package/dist/{workflow-code-dialog-content-BFm2IWDl.cjs.map → workflow-code-dialog-content-DyoN3850.cjs.map} +1 -1
  639. package/dist/{workflow-data-edge-view-BpGLV-at.js → workflow-data-edge-view-C4nbA2Fa.js} +2 -2
  640. package/dist/{workflow-data-edge-view-BpGLV-at.js.map → workflow-data-edge-view-C4nbA2Fa.js.map} +1 -1
  641. package/dist/{workflow-data-edge-view-7f8O6pVW.cjs → workflow-data-edge-view-aHAZkZOH.cjs} +2 -2
  642. package/dist/{workflow-data-edge-view-7f8O6pVW.cjs.map → workflow-data-edge-view-aHAZkZOH.cjs.map} +1 -1
  643. package/dist/{workflow-edge-data-button-C6eyWbcG.js → workflow-edge-data-button-2aIkzgev.js} +2 -2
  644. package/dist/{workflow-edge-data-button-C6eyWbcG.js.map → workflow-edge-data-button-2aIkzgev.js.map} +1 -1
  645. package/dist/{workflow-edge-data-button-BOVRo4xO.cjs → workflow-edge-data-button-BFNO-TRL.cjs} +2 -2
  646. package/dist/{workflow-edge-data-button-BOVRo4xO.cjs.map → workflow-edge-data-button-BFNO-TRL.cjs.map} +1 -1
  647. package/package.json +9 -9
  648. package/dist/ask-user-CXu4b7Jw.cjs.map +0 -1
  649. package/dist/ask-user-Dlz2346n.js.map +0 -1
  650. package/dist/checkbox-CI8JtZKS.cjs.map +0 -1
  651. package/dist/checkbox-CQedzgsi.js.map +0 -1
  652. package/dist/code-block-BzoMjjtf.cjs.map +0 -1
  653. package/dist/code-block-DY5KsTGY.js.map +0 -1
  654. package/dist/code-editor-28chVxHw.js.map +0 -1
  655. package/dist/code-editor-B_wPmKPf.cjs.map +0 -1
  656. package/dist/combobox-B15qTrWO.js.map +0 -1
  657. package/dist/combobox-DJ0c4o4S.cjs.map +0 -1
  658. package/dist/combobox-styles-C2MEEpaG.js.map +0 -1
  659. package/dist/combobox-styles-DLflBH-G.cjs.map +0 -1
  660. package/dist/custom-auto-form-field-Brfb-0Te.cjs.map +0 -1
  661. package/dist/custom-auto-form-field-yEMBGXu-.js.map +0 -1
  662. package/dist/data-code-section-DWBfkrmO.cjs.map +0 -1
  663. package/dist/data-code-section-It6myyvZ.js.map +0 -1
  664. package/dist/date-time-range-picker-BDylIIzt.js.map +0 -1
  665. package/dist/date-time-range-picker-UheN070q.cjs.map +0 -1
  666. package/dist/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.cjs.js +0 -12
  667. package/dist/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.cjs.js.map +0 -1
  668. package/dist/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.d.ts +0 -2
  669. package/dist/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.es.js +0 -8
  670. package/dist/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.es.js.map +0 -1
  671. package/dist/field-block--PeppIRb.js.map +0 -1
  672. package/dist/field-block-DtaPqBa3.cjs.map +0 -1
  673. package/dist/field-block-error-msg-CkhEN6nU.cjs +0 -26
  674. package/dist/field-block-error-msg-CkhEN6nU.cjs.map +0 -1
  675. package/dist/field-block-error-msg-LXwhKzIq.js +0 -24
  676. package/dist/field-block-error-msg-LXwhKzIq.js.map +0 -1
  677. package/dist/field-error-id-B3Z2Zu5y.cjs +0 -6
  678. package/dist/field-error-id-B3Z2Zu5y.cjs.map +0 -1
  679. package/dist/field-error-id-D3yg1nBh.js +0 -4
  680. package/dist/field-error-id-D3yg1nBh.js.map +0 -1
  681. package/dist/input-CHghVv3k.js.map +0 -1
  682. package/dist/input-bd223EJW.cjs.map +0 -1
  683. package/dist/input-group-0G9ZX_cM.js.map +0 -1
  684. package/dist/input-group-BRhBfeHC.cjs.map +0 -1
  685. package/dist/label-DfAhywj_.cjs +0 -39
  686. package/dist/label-DfAhywj_.cjs.map +0 -1
  687. package/dist/label-Dxsz0dFs.js +0 -18
  688. package/dist/label-Dxsz0dFs.js.map +0 -1
  689. package/dist/list-search-BzAIj0DB.cjs.map +0 -1
  690. package/dist/list-search-DI1DH7vU.js.map +0 -1
  691. package/dist/main-sidebar-link-active-D8VSuJKx.cjs.map +0 -1
  692. package/dist/main-sidebar-link-active-buZAhlHo.js.map +0 -1
  693. package/dist/radio-group-BdEPWGzi.cjs.map +0 -1
  694. package/dist/radio-group-CFZXUXZ5.js.map +0 -1
  695. package/dist/search-field-block-BPJh5yuW.js +0 -125
  696. package/dist/search-field-block-BPJh5yuW.js.map +0 -1
  697. package/dist/search-field-block-DRa-ZNQj.cjs +0 -127
  698. package/dist/search-field-block-DRa-ZNQj.cjs.map +0 -1
  699. package/dist/segmented-control--I3IgW21.cjs.map +0 -1
  700. package/dist/segmented-control-BxeiypPR.js.map +0 -1
  701. package/dist/select-DBY9LQFQ.cjs.map +0 -1
  702. package/dist/select-DZeNf-kI.js.map +0 -1
  703. package/dist/select-field-block-C_x9wNpU.js +0 -59
  704. package/dist/select-field-block-C_x9wNpU.js.map +0 -1
  705. package/dist/select-field-block-D8AMzoQT.cjs +0 -61
  706. package/dist/select-field-block-D8AMzoQT.cjs.map +0 -1
  707. package/dist/settings-row-C1JZDdz_.js.map +0 -1
  708. package/dist/settings-row-C7YKfUgY.cjs.map +0 -1
  709. package/dist/src/domains/traces/components/thread-trace/thread-trace-load-more-sentinel.d.ts +0 -8
  710. package/dist/src/ds/components/FormFieldBlocks/block/field-block.stories.d.ts +0 -8
  711. package/dist/src/ds/components/FormFieldBlocks/fields/search-field-block.stories.d.ts +0 -15
  712. package/dist/src/ds/components/FormFieldBlocks/fields/select-field-block.stories.d.ts +0 -15
  713. package/dist/src/ds/components/FormFieldBlocks/fields/text-field-block.stories.d.ts +0 -16
  714. package/dist/src/ds/components/FormFieldBlocks/layout/field-blocks-layout.stories.d.ts +0 -6
  715. package/dist/src/ds/components/Label/label.stories.d.ts +0 -8
  716. package/dist/switch-88fWFfVz.js.map +0 -1
  717. package/dist/switch-Swt75_Sb.cjs.map +0 -1
  718. package/dist/text-field-block-DUntfMPu.cjs +0 -58
  719. package/dist/text-field-block-DUntfMPu.cjs.map +0 -1
  720. package/dist/text-field-block-DZaGiu5D.js +0 -56
  721. package/dist/text-field-block-DZaGiu5D.js.map +0 -1
  722. package/dist/textarea-B6wvS_CQ.js.map +0 -1
  723. package/dist/textarea-field-block-BscOSlvI.js +0 -52
  724. package/dist/textarea-field-block-BscOSlvI.js.map +0 -1
  725. package/dist/textarea-field-block-CKAhmLrz.cjs +0 -54
  726. package/dist/textarea-field-block-CKAhmLrz.cjs.map +0 -1
  727. package/dist/textarea-gUBUqpol.cjs.map +0 -1
  728. package/dist/time-picker-BElZALzM.js.map +0 -1
  729. package/dist/time-picker-_QJdolkZ.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-renderer-Cy7Iwy1c.js","sources":["../src/ds/components/MarkdownRenderer/arriving.ts","../src/ds/components/MarkdownRenderer/blocks.ts","../src/ds/components/MarkdownRenderer/table-csv.ts","../src/ds/components/MarkdownRenderer/markdown-table.tsx","../src/ds/components/MarkdownRenderer/table-markdown.ts","../src/ds/components/MarkdownRenderer/use-settled.ts","../src/ds/components/MarkdownRenderer/markdown-renderer.tsx"],"sourcesContent":["import type { ExtraProps } from 'react-markdown';\n\nimport { ARRIVING_CLASS } from '@/ds/tokens';\n\nimport '@/ds/components/Arrival/arrival.css';\n\ntype MarkdownElement = NonNullable<ExtraProps['node']>;\ntype MarkdownChild = MarkdownElement['children'][number];\n\n/** Fades whole: a fence renders through `CodeBlock`, and inline code carries a background. */\nconst UNBROKEN = new Set(['pre', 'code']);\n\nconst wrap = (value: string, arriving: boolean): MarkdownChild => ({\n type: 'element',\n tagName: 'span',\n properties: arriving ? { className: [ARRIVING_CLASS] } : {},\n children: [{ type: 'text', value }],\n});\n\nfunction markArriving(node: MarkdownElement): void {\n const classes = node.properties.className;\n\n node.properties.className = Array.isArray(classes) ? [...classes, ARRIVING_CLASS] : [ARRIVING_CLASS];\n}\n\nfunction rebuild(nodes: MarkdownChild[], arriving: () => boolean): MarkdownChild[] {\n const out: MarkdownChild[] = [];\n\n for (const node of nodes) {\n if (node.type === 'text') {\n for (const piece of node.value.match(/\\S+|\\s+/g) ?? []) {\n if (/\\S/.test(piece)) out.push(wrap(piece, arriving()));\n else out.push({ type: 'text', value: piece });\n }\n\n continue;\n }\n\n out.push(node);\n\n if (node.type !== 'element') continue;\n\n if (!UNBROKEN.has(node.tagName)) node.children = rebuild(node.children, arriving);\n else if (arriving()) markArriving(node);\n }\n\n return out;\n}\n\n/**\n * Gives every word of a block an element of its own, and the entrance class to\n * those past the first `settled` — the words that were not on screen yet when\n * the reader joined this reply.\n *\n * Every word, not just the arriving ones: react-markdown parses afresh on each\n * landing and React matches the children it already mounted by position, so a\n * wrapper that came and went would land where a bare text node used to be and\n * remount half the paragraph, replaying entrances that had long finished.\n * Wrapping the lot keeps every position fixed — a new word only ever appends —\n * and a word never gains the class it did not mount with, so nothing replays.\n */\nexport function rehypeArriving(settled: number) {\n return function attach() {\n return (tree: { children: MarkdownChild[] }) => {\n let word = 0;\n\n tree.children = rebuild(tree.children, () => word++ >= settled);\n };\n };\n}\n","const FENCE_OPEN = /^ {0,3}(`{3,}|~{3,})/;\nconst FENCE_CLOSE = /^ {0,3}(`{3,}|~{3,})[ \\t]*$/;\nconst LIST_ITEM = /^ {0,3}(?:[-*+]|\\d{1,9}[.)])(?:[ \\t]|$)/;\nconst INDENTED = /^(?:\\t| {2,})/;\nconst DEFINITION = /^ {0,3}\\[[^\\]]+\\]:/;\n\nfunction fenceOpenedBy(line: string): string | undefined {\n return FENCE_OPEN.exec(line)?.[1];\n}\n\n// Both are runs of one character, so `startsWith` is \"same marker, at least as long\".\nfunction closesFence(line: string, marker: string): boolean {\n return FENCE_CLOSE.exec(line)?.[1]?.startsWith(marker) ?? false;\n}\n\nfunction startsBlock(line: string, inList: boolean): boolean {\n if (INDENTED.test(line)) return false;\n\n return !(inList && LIST_ITEM.test(line));\n}\n\n/**\n * Cuts markdown into top-level blocks so a growing reply re-parses its last\n * block instead of all of them. Rejoining the result returns the input, and\n * every block renders as it would have inside the whole.\n *\n * Each rule only ever merges: over-merging costs a re-parse, while cutting a\n * construct in two changes what it renders as. Link reference and footnote\n * definitions resolve across blank lines, which no line-level rule can see, so\n * reaching one outside a fence abandons the split for the whole text.\n */\nexport function splitBlocks(markdown: string): string[] {\n const lines = markdown.split('\\n');\n const starts = [0];\n let fence: string | undefined;\n let started = false;\n let broken = false;\n let inList = false;\n\n for (const [index, line] of lines.entries()) {\n if (fence) {\n if (closesFence(line, fence)) fence = undefined;\n continue;\n }\n\n if (line.trim() === '') {\n broken = started;\n continue;\n }\n\n if (DEFINITION.test(line)) return [markdown];\n\n if (broken && startsBlock(line, inList)) {\n starts.push(index);\n started = false;\n }\n\n if (!started) inList = LIST_ITEM.test(line);\n\n started = true;\n broken = false;\n fence = fenceOpenedBy(line);\n }\n\n return starts.map((start, position) => {\n const end = starts[position + 1];\n const block = lines.slice(start, end ?? lines.length).join('\\n');\n\n return end === undefined ? block : `${block}\\n`;\n });\n}\n","function spreadsheetCell(value: string): string {\n // Quoting alone does not stop spreadsheet apps from evaluating formulas.\n const numeric = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i.test(value.trim());\n const formula = /^[\\s\\uFEFF]*[=+\\-@=+-@]/u.test(value);\n const controlPrefix = /^[\\t\\r\\n]/.test(value);\n const safe = controlPrefix || (formula && !numeric) ? `'${value}` : value;\n return `\"${safe.replaceAll('\"', '\"\"')}\"`;\n}\n\nexport function tableToCsv(rows: string[][]): string {\n return rows.map(row => row.map(spreadsheetCell).join(',')).join('\\r\\n');\n}\n\nexport function downloadTableCsv(csv: string): void {\n const blob = new Blob(['\\uFEFF', csv], { type: 'text/csv;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = 'table.csv';\n document.body.appendChild(anchor);\n anchor.click();\n anchor.remove();\n URL.revokeObjectURL(url);\n}\n","import { CheckIcon, ChevronDownIcon, CopyIcon, DownloadIcon } from 'lucide-react';\nimport type { ComponentProps } from 'react';\nimport type { ExtraProps } from 'react-markdown';\nimport { downloadTableCsv } from './table-csv';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\n\nexport function MarkdownTable({ node, children }: ComponentProps<'table'> & ExtraProps) {\n const markdown = node?.properties.tableMarkdown;\n const csv = node?.properties.tableCsv;\n const { isCopied, copyToClipboard } = useCopyToClipboard({ copyMessage: 'Copied table markdown' });\n\n return (\n <div className=\"my-3 w-fit max-w-full min-w-0\">\n <div className=\"flex justify-end\">\n <ButtonsGroup size=\"sm\" aria-label=\"Table actions\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n disabled={typeof markdown !== 'string'}\n onClick={() => {\n if (typeof markdown === 'string') copyToClipboard(markdown);\n }}\n aria-label=\"Copy table as markdown\"\n >\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n {isCopied ? 'Copied!' : 'Copy table as markdown'}\n </Button>\n <DropdownMenu>\n <DropdownMenu.Trigger\n disabled={typeof csv !== 'string'}\n render={\n <Button type=\"button\" size=\"icon-sm\" variant=\"ghost\" aria-label=\"More table options\">\n <ChevronDownIcon />\n </Button>\n }\n />\n <DropdownMenu.Content align=\"end\" size=\"sm\" className=\"w-max min-w-0\">\n <DropdownMenu.Item\n size=\"sm\"\n onClick={() => {\n if (typeof csv === 'string') downloadTableCsv(csv);\n }}\n >\n <DownloadIcon />\n Download CSV\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n </ButtonsGroup>\n </div>\n <div className=\"max-w-full overflow-x-auto\">\n <table className=\"table min-w-full\">{children}</table>\n </div>\n </div>\n );\n}\n","import type { Definition, FootnoteDefinition, Nodes, Root, Table } from 'mdast';\nimport { gfmToMarkdown } from 'mdast-util-gfm';\nimport { toMarkdown } from 'mdast-util-to-markdown';\nimport { tableToCsv } from './table-csv';\n\nfunction cellText(node: Nodes): string {\n if (node.type === 'footnoteReference') return `[^${node.label ?? node.identifier}]`;\n if ('value' in node) return node.value;\n if (node.type === 'image' || node.type === 'imageReference') return node.alt ?? '';\n return 'children' in node ? node.children.map(cellText).join('') : '';\n}\n\nfunction walk(node: Nodes, visit: (node: Nodes) => void): void {\n visit(node);\n if ('children' in node) node.children.forEach(child => walk(child, visit));\n}\n\nconst SERIALIZE_OPTIONS = { extensions: [gfmToMarkdown()] };\n\n/** Capture table exports before rehype replaces text with animation spans. */\nexport function remarkTableMarkdown() {\n return (tree: Root, file: { value: unknown }) => {\n const source = String(file.value);\n const definitions = new Map<string, Definition | FootnoteDefinition>();\n const tables: Table[] = [];\n walk(tree, node => {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const key = `${node.type}:${node.identifier}`;\n if (!definitions.has(key)) definitions.set(key, node);\n }\n if (node.type === 'table') tables.push(node);\n });\n\n const lines = source.split(/\\r\\n|\\r|\\n/);\n for (const table of tables) {\n const header = table.children[0];\n if (!header?.position) continue;\n const rows = table.children.map(row => {\n const start = row.position?.start.offset;\n const end = row.position?.end.offset;\n return start === undefined || end === undefined ? undefined : source.slice(start, end);\n });\n // Only offer exports when the parser supplied the original row locations.\n if (!rows.every(row => row !== undefined)) continue;\n // Row positions exclude list/blockquote prefixes. The delimiter has no AST node.\n const delimiter = lines[header.position.start.line]?.replace(/^[\\t >]*/, '');\n if (delimiter === undefined) continue;\n const markdown = [rows[0], delimiter, ...rows.slice(1)];\n const used = new Set<string>();\n const collectReference = (node: Nodes) => {\n if (node.type === 'linkReference' || node.type === 'imageReference') {\n used.add(`definition:${node.identifier}`);\n } else if (node.type === 'footnoteReference') {\n used.add(`footnoteDefinition:${node.identifier}`);\n }\n };\n walk(table, collectReference);\n // Visiting appended definitions also collects links/footnotes they depend on.\n // The set prevents duplicates and cycles, including self-referencing footnotes.\n for (const key of used) {\n const definition = definitions.get(key);\n if (!definition) continue;\n markdown.push('', toMarkdown(definition, SERIALIZE_OPTIONS).trimEnd());\n walk(definition, collectReference);\n }\n const cells = table.children.map(row =>\n Array.from({ length: header.children.length }, (_, index) => {\n const cell = row.children[index];\n return cell ? cellText(cell) : '';\n }),\n );\n table.data = {\n ...table.data,\n hProperties: {\n ...table.data?.hProperties,\n tableMarkdown: markdown.join('\\n'),\n tableCsv: tableToCsv(cells),\n },\n };\n }\n };\n}\n","import { useEffect, useRef, useState } from 'react';\n\nimport { useWatched } from '@/ds/components/Arrival';\nimport { ARRIVING_MS } from '@/ds/tokens';\n\ninterface Landing {\n words: number;\n at: number;\n}\n\n/**\n * How many of a reply's words have been on screen long enough that their entrance is over.\n *\n * The entrance plays on whatever mounts carrying the class, so it replays every time a\n * word's element is rebuilt — and markdown rebuilds a growing tail constantly: a `-`\n * turns a paragraph into a list item, a closing `**` splits it around a `<strong>`, the\n * stream ends and the mend comes off. Each of those swaps the element a settled word\n * lives in, which is what makes a word already read fade in again.\n *\n * Ageing them out is the whole answer: a word carries the class only while it is new,\n * so however often the tail is rebuilt, only what is genuinely arriving animates.\n *\n * What counts as new at mount is not this hook's call. A reply the reader was handed\n * is already there, and a block that mounts complete — a card's output, an expanded\n * body — enters with its container. Only a passage born streaming under the reader's\n * eyes is new from its first word: the reveal often lands several words in its first\n * commit, and they enter like every word after them.\n */\nexport function useSettledWords(words: number, streaming: boolean): number {\n const watched = useWatched();\n const [settled, setSettled] = useState(() => (watched && streaming ? 0 : words));\n const landings = useRef<Landing[]>([]);\n const recorded = useRef(settled);\n\n useEffect(() => {\n if (recorded.current !== words) {\n landings.current.push({ words, at: performance.now() });\n recorded.current = words;\n }\n\n const waiting = landings.current[0];\n if (!waiting) return;\n\n const timer = setTimeout(\n () => {\n landings.current.shift();\n setSettled(waiting.words);\n },\n Math.max(0, waiting.at + ARRIVING_MS - performance.now()),\n );\n\n return () => clearTimeout(timer);\n }, [settled, words]);\n\n // A shorter reply replacing the one on screen settles at once: nothing of it is new.\n return Math.min(settled, words);\n}\n","import { memo, useMemo } from 'react';\nimport type { MouseEvent, MouseEventHandler, ReactNode } from 'react';\nimport Markdown from 'react-markdown';\nimport type { Components, ExtraProps, Options } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport remend from 'remend';\n\nimport { rehypeArriving } from './arriving';\nimport { splitBlocks } from './blocks';\nimport { MarkdownTable } from './markdown-table';\nimport { remarkTableMarkdown } from './table-markdown';\nimport { useSettledWords } from './use-settled';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { cn } from '@/lib/utils';\n\nimport './markdown-renderer.css';\n\nexport type MarkdownExternalLinkTarget = 'tab' | 'window';\n\nexport interface MarkdownRendererProps {\n children: string;\n className?: string;\n externalLinkTarget?: MarkdownExternalLinkTarget;\n /** The text is a prefix of one still being written: close the markers the stream has not reached. */\n streaming?: boolean;\n /** Opt in to table copy/download controls; disabled while this text is streaming. */\n tableActions?: boolean;\n}\n\n/**\n * Renders a markdown string. Agent output can carry attacker-influenced text\n * (file contents, tool output, web pages): react-markdown escapes raw HTML and\n * drops dangerous link schemes, so nothing here reaches the DOM as markup.\n *\n * react-markdown re-parses on every render, and a streaming reply re-renders\n * its whole transcript on every delta. Memoizing spares the settled messages;\n * rendering block by block — streaming or not — spares every block of the live\n * one but the last, and lets a reply settle without remounting what is already\n * on screen.\n *\n * The text is drawn as given: pacing a stream is `useRevealedText`, and belongs to\n * whoever owns the whole of what is being laid down — a reply is prose, tool rows\n * and cards, and they have to arrive in the order they were written. Only what\n * lands after the reader joined plays an entrance, and only while it is still new:\n * a reply opened part-written is already there, and fading in what someone is\n * halfway through reading would be both a lie and a screenful of animations at\n * once.\n */\nexport const MarkdownRenderer = memo(function MarkdownRenderer({\n children,\n className,\n externalLinkTarget = 'tab',\n streaming = false,\n tableActions = false,\n}: MarkdownRendererProps) {\n const shown = decodeEscapedNewlines(children);\n const blocks = useMemo(() => splitBlocks(shown), [shown]);\n const last = blocks.length - 1;\n const components = (tableActions ? TABLE_COMPONENTS : DEFAULT_COMPONENTS)[externalLinkTarget];\n\n const spans = wordSpans(blocks);\n const settled = useSettledWords(spans.at(-1)?.end ?? 0, streaming);\n\n // A block whose words have all finished their entrance has nothing left to play,\n // which is what `undefined` says: leave it as plain text, no spans at all.\n const settledWords = (span: WordSpan | undefined): number | undefined =>\n !span || settled >= span.end ? undefined : Math.max(0, settled - span.start);\n\n const tail = blocks[last] ?? '';\n const mended = useMemo(() => (streaming ? remend(tail, REMEND_OPTIONS) : tail), [streaming, tail]);\n\n return (\n <div className={cn('mastra-markdown', className)}>\n {blocks.map((block, index) => (\n <MarkdownBlock\n key={index}\n content={index === last ? mended : block}\n settledWords={settledWords(spans[index])}\n components={components}\n streaming={streaming}\n tableActions={tableActions}\n />\n ))}\n </div>\n );\n});\n\n/** Keyed by position at the call site: a content key remounts on every character. */\nconst MarkdownBlock = memo(function MarkdownBlock({\n components,\n content,\n settledWords,\n streaming,\n tableActions,\n}: {\n components: Components;\n content: string;\n settledWords?: number;\n streaming: boolean;\n tableActions: boolean;\n}) {\n const rehypePlugins = useMemo(\n () => (settledWords === undefined ? SETTLED : [rehypeArriving(settledWords)]),\n [settledWords],\n );\n\n return (\n <Markdown\n remarkPlugins={tableActions && !streaming ? COPYABLE_REMARK_PLUGINS : REMARK_PLUGINS}\n rehypePlugins={rehypePlugins}\n components={components}\n >\n {content}\n </Markdown>\n );\n});\n\nconst SETTLED: Options['rehypePlugins'] = [];\n\ninterface WordSpan {\n start: number;\n end: number;\n}\n\n/**\n * Where each block's words fall in the reply's own count, so one settled count covers\n * them all. Counting the source counts its markers too, so the boundary only ever errs\n * towards leaving a word unanimated.\n */\nfunction wordSpans(blocks: string[]): WordSpan[] {\n let read = 0;\n\n return blocks.map(block => {\n const span = { start: read, end: read + countWords(block) };\n read = span.end;\n\n return span;\n });\n}\n\nfunction countWords(text: string): number {\n return text.match(/\\S+/g)?.length ?? 0;\n}\n\n// Agent networks emit their text with literal `\\n`. Only unescape when the text\n// has no real newline, otherwise a `\"a\\nb\"` inside a code fence gets shredded.\nfunction decodeEscapedNewlines(text: string): string {\n return text.includes('\\n') ? text : text.replace(/\\\\n/g, '\\n');\n}\n\ntype MarkdownNode = NonNullable<ExtraProps['node']>;\n\nfunction languageOf(node: MarkdownNode): string | undefined {\n const classNames = node.properties.className;\n if (!Array.isArray(classNames)) return undefined;\n\n const language = classNames.find(entry => typeof entry === 'string' && entry.startsWith('language-'));\n return typeof language === 'string' ? language.slice('language-'.length) : undefined;\n}\n\nfunction fencedCode(node: MarkdownNode | undefined): { code: string; language?: string } | undefined {\n const child = node?.children.find(entry => entry.type === 'element' && entry.tagName === 'code');\n if (child?.type !== 'element') return undefined;\n\n const code = child.children.map(entry => (entry.type === 'text' ? entry.value : '')).join('');\n return { code: code.replace(/\\n$/, ''), language: languageOf(child) };\n}\n\nfunction MarkdownCodeBlock({\n node,\n children,\n className,\n}: {\n node?: MarkdownNode;\n children?: ReactNode;\n className?: string;\n}) {\n const fenced = fencedCode(node);\n if (!fenced) return <pre className={className}>{children}</pre>;\n\n return (\n <CodeBlock\n code={fenced.code}\n lang={fenced.language}\n overflow=\"scroll\"\n className={cn('my-3 bg-sidebar', className)}\n copyMessage=\"Copied code to clipboard\"\n />\n );\n}\n\nconst POPUP_WINDOW_FEATURES = 'popup=yes,width=720,height=800,resizable=yes,scrollbars=yes';\n\nfunction isPlainLeftClick(event: MouseEvent): boolean {\n return event.button === 0 && !event.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey;\n}\n\nfunction markdownLink(externalLinkTarget: MarkdownExternalLinkTarget): NonNullable<Components['a']> {\n return function MarkdownLink({ href, title, children }) {\n const isExternal = /^https?:\\/\\//i.test(href ?? '');\n\n const openInPopup: MouseEventHandler<HTMLAnchorElement> = event => {\n if (!isExternal || externalLinkTarget !== 'window' || !isPlainLeftClick(event)) return;\n\n const popup = window.open(href, '_blank', POPUP_WINDOW_FEATURES);\n if (!popup) return;\n\n popup.opener = null;\n event.preventDefault();\n };\n\n return (\n <a\n href={href}\n title={title}\n onClick={openInPopup}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n >\n {children}\n </a>\n );\n };\n}\n\nconst REMARK_PLUGINS = [remarkGfm];\nconst COPYABLE_REMARK_PLUGINS = [remarkGfm, remarkTableMarkdown];\n\n// Links stay text until their URL lands: remend's placeholder href would render\n// a live anchor to nowhere. No math is rendered here, so pairing `$$` would only\n// turn one literal into another.\nconst REMEND_OPTIONS = { katex: false, linkMode: 'text-only' } as const;\n\n// Elements are listed one by one: react-markdown also passes its `node`, which\n// React would forward to the DOM as a stray attribute. Everything else is\n// styled from markdown-renderer.css.\nconst COMPONENTS: Components = {\n pre: MarkdownCodeBlock,\n a: markdownLink('tab'),\n};\n\nconst WINDOW_COMPONENTS: Components = {\n ...COMPONENTS,\n a: markdownLink('window'),\n};\n\nconst DEFAULT_COMPONENTS = { tab: COMPONENTS, window: WINDOW_COMPONENTS };\nconst TABLE_COMPONENTS = {\n tab: { ...COMPONENTS, table: MarkdownTable },\n window: { ...WINDOW_COMPONENTS, table: MarkdownTable },\n};\n"],"names":["MarkdownRenderer","MarkdownBlock"],"mappings":"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"}
1
+ {"version":3,"file":"markdown-renderer-zvB6a8uj.js","sources":["../src/ds/components/MarkdownRenderer/arriving.ts","../src/ds/components/MarkdownRenderer/blocks.ts","../src/ds/components/MarkdownRenderer/table-csv.ts","../src/ds/components/MarkdownRenderer/markdown-table.tsx","../src/ds/components/MarkdownRenderer/table-markdown.ts","../src/ds/components/MarkdownRenderer/use-settled.ts","../src/ds/components/MarkdownRenderer/markdown-renderer.tsx"],"sourcesContent":["import type { ExtraProps } from 'react-markdown';\n\nimport { ARRIVING_CLASS } from '@/ds/tokens';\n\nimport '@/ds/components/Arrival/arrival.css';\n\ntype MarkdownElement = NonNullable<ExtraProps['node']>;\ntype MarkdownChild = MarkdownElement['children'][number];\n\n/** Fades whole: a fence renders through `CodeBlock`, and inline code carries a background. */\nconst UNBROKEN = new Set(['pre', 'code']);\n\nconst wrap = (value: string, arriving: boolean): MarkdownChild => ({\n type: 'element',\n tagName: 'span',\n properties: arriving ? { className: [ARRIVING_CLASS] } : {},\n children: [{ type: 'text', value }],\n});\n\nfunction markArriving(node: MarkdownElement): void {\n const classes = node.properties.className;\n\n node.properties.className = Array.isArray(classes) ? [...classes, ARRIVING_CLASS] : [ARRIVING_CLASS];\n}\n\nfunction rebuild(nodes: MarkdownChild[], arriving: () => boolean): MarkdownChild[] {\n const out: MarkdownChild[] = [];\n\n for (const node of nodes) {\n if (node.type === 'text') {\n for (const piece of node.value.match(/\\S+|\\s+/g) ?? []) {\n if (/\\S/.test(piece)) out.push(wrap(piece, arriving()));\n else out.push({ type: 'text', value: piece });\n }\n\n continue;\n }\n\n out.push(node);\n\n if (node.type !== 'element') continue;\n\n if (!UNBROKEN.has(node.tagName)) node.children = rebuild(node.children, arriving);\n else if (arriving()) markArriving(node);\n }\n\n return out;\n}\n\n/**\n * Gives every word of a block an element of its own, and the entrance class to\n * those past the first `settled` — the words that were not on screen yet when\n * the reader joined this reply.\n *\n * Every word, not just the arriving ones: react-markdown parses afresh on each\n * landing and React matches the children it already mounted by position, so a\n * wrapper that came and went would land where a bare text node used to be and\n * remount half the paragraph, replaying entrances that had long finished.\n * Wrapping the lot keeps every position fixed — a new word only ever appends —\n * and a word never gains the class it did not mount with, so nothing replays.\n */\nexport function rehypeArriving(settled: number) {\n return function attach() {\n return (tree: { children: MarkdownChild[] }) => {\n let word = 0;\n\n tree.children = rebuild(tree.children, () => word++ >= settled);\n };\n };\n}\n","const FENCE_OPEN = /^ {0,3}(`{3,}|~{3,})/;\nconst FENCE_CLOSE = /^ {0,3}(`{3,}|~{3,})[ \\t]*$/;\nconst LIST_ITEM = /^ {0,3}(?:[-*+]|\\d{1,9}[.)])(?:[ \\t]|$)/;\nconst INDENTED = /^(?:\\t| {2,})/;\nconst DEFINITION = /^ {0,3}\\[[^\\]]+\\]:/;\n\nfunction fenceOpenedBy(line: string): string | undefined {\n return FENCE_OPEN.exec(line)?.[1];\n}\n\n// Both are runs of one character, so `startsWith` is \"same marker, at least as long\".\nfunction closesFence(line: string, marker: string): boolean {\n return FENCE_CLOSE.exec(line)?.[1]?.startsWith(marker) ?? false;\n}\n\nfunction startsBlock(line: string, inList: boolean): boolean {\n if (INDENTED.test(line)) return false;\n\n return !(inList && LIST_ITEM.test(line));\n}\n\n/**\n * Cuts markdown into top-level blocks so a growing reply re-parses its last\n * block instead of all of them. Rejoining the result returns the input, and\n * every block renders as it would have inside the whole.\n *\n * Each rule only ever merges: over-merging costs a re-parse, while cutting a\n * construct in two changes what it renders as. Link reference and footnote\n * definitions resolve across blank lines, which no line-level rule can see, so\n * reaching one outside a fence abandons the split for the whole text.\n */\nexport function splitBlocks(markdown: string): string[] {\n const lines = markdown.split('\\n');\n const starts = [0];\n let fence: string | undefined;\n let started = false;\n let broken = false;\n let inList = false;\n\n for (const [index, line] of lines.entries()) {\n if (fence) {\n if (closesFence(line, fence)) fence = undefined;\n continue;\n }\n\n if (line.trim() === '') {\n broken = started;\n continue;\n }\n\n if (DEFINITION.test(line)) return [markdown];\n\n if (broken && startsBlock(line, inList)) {\n starts.push(index);\n started = false;\n }\n\n if (!started) inList = LIST_ITEM.test(line);\n\n started = true;\n broken = false;\n fence = fenceOpenedBy(line);\n }\n\n return starts.map((start, position) => {\n const end = starts[position + 1];\n const block = lines.slice(start, end ?? lines.length).join('\\n');\n\n return end === undefined ? block : `${block}\\n`;\n });\n}\n","function spreadsheetCell(value: string): string {\n // Quoting alone does not stop spreadsheet apps from evaluating formulas.\n const numeric = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i.test(value.trim());\n const formula = /^[\\s\\uFEFF]*[=+\\-@=+-@]/u.test(value);\n const controlPrefix = /^[\\t\\r\\n]/.test(value);\n const safe = controlPrefix || (formula && !numeric) ? `'${value}` : value;\n return `\"${safe.replaceAll('\"', '\"\"')}\"`;\n}\n\nexport function tableToCsv(rows: string[][]): string {\n return rows.map(row => row.map(spreadsheetCell).join(',')).join('\\r\\n');\n}\n\nexport function downloadTableCsv(csv: string): void {\n const blob = new Blob(['\\uFEFF', csv], { type: 'text/csv;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = 'table.csv';\n document.body.appendChild(anchor);\n anchor.click();\n anchor.remove();\n URL.revokeObjectURL(url);\n}\n","import { CheckIcon, ChevronDownIcon, CopyIcon, DownloadIcon } from 'lucide-react';\nimport type { ComponentProps } from 'react';\nimport type { ExtraProps } from 'react-markdown';\nimport { downloadTableCsv } from './table-csv';\nimport { Button } from '@/ds/components/Button';\nimport { ButtonsGroup } from '@/ds/components/ButtonsGroup';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\n\nexport function MarkdownTable({ node, children }: ComponentProps<'table'> & ExtraProps) {\n const markdown = node?.properties.tableMarkdown;\n const csv = node?.properties.tableCsv;\n const { isCopied, copyToClipboard } = useCopyToClipboard({ copyMessage: 'Copied table markdown' });\n\n return (\n <div className=\"my-3 w-fit max-w-full min-w-0\">\n <div className=\"flex justify-end\">\n <ButtonsGroup size=\"sm\" aria-label=\"Table actions\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n disabled={typeof markdown !== 'string'}\n onClick={() => {\n if (typeof markdown === 'string') copyToClipboard(markdown);\n }}\n aria-label=\"Copy table as markdown\"\n >\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n {isCopied ? 'Copied!' : 'Copy table as markdown'}\n </Button>\n <DropdownMenu>\n <DropdownMenu.Trigger\n disabled={typeof csv !== 'string'}\n render={\n <Button type=\"button\" size=\"icon-sm\" variant=\"ghost\" aria-label=\"More table options\">\n <ChevronDownIcon />\n </Button>\n }\n />\n <DropdownMenu.Content align=\"end\" size=\"sm\" className=\"w-max min-w-0\">\n <DropdownMenu.Item\n size=\"sm\"\n onClick={() => {\n if (typeof csv === 'string') downloadTableCsv(csv);\n }}\n >\n <DownloadIcon />\n Download CSV\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n </ButtonsGroup>\n </div>\n <div className=\"max-w-full overflow-x-auto\">\n <table className=\"table min-w-full\">{children}</table>\n </div>\n </div>\n );\n}\n","import type { Definition, FootnoteDefinition, Nodes, Root, Table } from 'mdast';\nimport { gfmToMarkdown } from 'mdast-util-gfm';\nimport { toMarkdown } from 'mdast-util-to-markdown';\nimport { tableToCsv } from './table-csv';\n\nfunction cellText(node: Nodes): string {\n if (node.type === 'footnoteReference') return `[^${node.label ?? node.identifier}]`;\n if ('value' in node) return node.value;\n if (node.type === 'image' || node.type === 'imageReference') return node.alt ?? '';\n return 'children' in node ? node.children.map(cellText).join('') : '';\n}\n\nfunction walk(node: Nodes, visit: (node: Nodes) => void): void {\n visit(node);\n if ('children' in node) node.children.forEach(child => walk(child, visit));\n}\n\nconst SERIALIZE_OPTIONS = { extensions: [gfmToMarkdown()] };\n\n/** Capture table exports before rehype replaces text with animation spans. */\nexport function remarkTableMarkdown() {\n return (tree: Root, file: { value: unknown }) => {\n const source = String(file.value);\n const definitions = new Map<string, Definition | FootnoteDefinition>();\n const tables: Table[] = [];\n walk(tree, node => {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const key = `${node.type}:${node.identifier}`;\n if (!definitions.has(key)) definitions.set(key, node);\n }\n if (node.type === 'table') tables.push(node);\n });\n\n const lines = source.split(/\\r\\n|\\r|\\n/);\n for (const table of tables) {\n const header = table.children[0];\n if (!header?.position) continue;\n const rows = table.children.map(row => {\n const start = row.position?.start.offset;\n const end = row.position?.end.offset;\n return start === undefined || end === undefined ? undefined : source.slice(start, end);\n });\n // Only offer exports when the parser supplied the original row locations.\n if (!rows.every(row => row !== undefined)) continue;\n // Row positions exclude list/blockquote prefixes. The delimiter has no AST node.\n const delimiter = lines[header.position.start.line]?.replace(/^[\\t >]*/, '');\n if (delimiter === undefined) continue;\n const markdown = [rows[0], delimiter, ...rows.slice(1)];\n const used = new Set<string>();\n const collectReference = (node: Nodes) => {\n if (node.type === 'linkReference' || node.type === 'imageReference') {\n used.add(`definition:${node.identifier}`);\n } else if (node.type === 'footnoteReference') {\n used.add(`footnoteDefinition:${node.identifier}`);\n }\n };\n walk(table, collectReference);\n // Visiting appended definitions also collects links/footnotes they depend on.\n // The set prevents duplicates and cycles, including self-referencing footnotes.\n for (const key of used) {\n const definition = definitions.get(key);\n if (!definition) continue;\n markdown.push('', toMarkdown(definition, SERIALIZE_OPTIONS).trimEnd());\n walk(definition, collectReference);\n }\n const cells = table.children.map(row =>\n Array.from({ length: header.children.length }, (_, index) => {\n const cell = row.children[index];\n return cell ? cellText(cell) : '';\n }),\n );\n table.data = {\n ...table.data,\n hProperties: {\n ...table.data?.hProperties,\n tableMarkdown: markdown.join('\\n'),\n tableCsv: tableToCsv(cells),\n },\n };\n }\n };\n}\n","import { useEffect, useRef, useState } from 'react';\n\nimport { useWatched } from '@/ds/components/Arrival';\nimport { ARRIVING_MS } from '@/ds/tokens';\n\ninterface Landing {\n words: number;\n at: number;\n}\n\n/**\n * How many of a reply's words have been on screen long enough that their entrance is over.\n *\n * The entrance plays on whatever mounts carrying the class, so it replays every time a\n * word's element is rebuilt — and markdown rebuilds a growing tail constantly: a `-`\n * turns a paragraph into a list item, a closing `**` splits it around a `<strong>`, the\n * stream ends and the mend comes off. Each of those swaps the element a settled word\n * lives in, which is what makes a word already read fade in again.\n *\n * Ageing them out is the whole answer: a word carries the class only while it is new,\n * so however often the tail is rebuilt, only what is genuinely arriving animates.\n *\n * What counts as new at mount is not this hook's call. A reply the reader was handed\n * is already there, and a block that mounts complete — a card's output, an expanded\n * body — enters with its container. Only a passage born streaming under the reader's\n * eyes is new from its first word: the reveal often lands several words in its first\n * commit, and they enter like every word after them.\n */\nexport function useSettledWords(words: number, streaming: boolean): number {\n const watched = useWatched();\n const [settled, setSettled] = useState(() => (watched && streaming ? 0 : words));\n const landings = useRef<Landing[]>([]);\n const recorded = useRef(settled);\n\n useEffect(() => {\n if (recorded.current !== words) {\n landings.current.push({ words, at: performance.now() });\n recorded.current = words;\n }\n\n const waiting = landings.current[0];\n if (!waiting) return;\n\n const timer = setTimeout(\n () => {\n landings.current.shift();\n setSettled(waiting.words);\n },\n Math.max(0, waiting.at + ARRIVING_MS - performance.now()),\n );\n\n return () => clearTimeout(timer);\n }, [settled, words]);\n\n // A shorter reply replacing the one on screen settles at once: nothing of it is new.\n return Math.min(settled, words);\n}\n","import { memo, useMemo } from 'react';\nimport type { MouseEvent, MouseEventHandler, ReactNode } from 'react';\nimport Markdown from 'react-markdown';\nimport type { Components, ExtraProps, Options } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport remend from 'remend';\n\nimport { rehypeArriving } from './arriving';\nimport { splitBlocks } from './blocks';\nimport { MarkdownTable } from './markdown-table';\nimport { remarkTableMarkdown } from './table-markdown';\nimport { useSettledWords } from './use-settled';\nimport { CodeBlock } from '@/ds/components/CodeBlock';\nimport { cn } from '@/lib/utils';\n\nimport './markdown-renderer.css';\n\nexport type MarkdownExternalLinkTarget = 'tab' | 'window';\n\nexport interface MarkdownRendererProps {\n children: string;\n className?: string;\n externalLinkTarget?: MarkdownExternalLinkTarget;\n /** The text is a prefix of one still being written: close the markers the stream has not reached. */\n streaming?: boolean;\n /** Opt in to table copy/download controls; disabled while this text is streaming. */\n tableActions?: boolean;\n}\n\n/**\n * Renders a markdown string. Agent output can carry attacker-influenced text\n * (file contents, tool output, web pages): react-markdown escapes raw HTML and\n * drops dangerous link schemes, so nothing here reaches the DOM as markup.\n *\n * react-markdown re-parses on every render, and a streaming reply re-renders\n * its whole transcript on every delta. Memoizing spares the settled messages;\n * rendering block by block — streaming or not — spares every block of the live\n * one but the last, and lets a reply settle without remounting what is already\n * on screen.\n *\n * The text is drawn as given: pacing a stream is `useRevealedText`, and belongs to\n * whoever owns the whole of what is being laid down — a reply is prose, tool rows\n * and cards, and they have to arrive in the order they were written. Only what\n * lands after the reader joined plays an entrance, and only while it is still new:\n * a reply opened part-written is already there, and fading in what someone is\n * halfway through reading would be both a lie and a screenful of animations at\n * once.\n */\nexport const MarkdownRenderer = memo(function MarkdownRenderer({\n children,\n className,\n externalLinkTarget = 'tab',\n streaming = false,\n tableActions = false,\n}: MarkdownRendererProps) {\n const shown = decodeEscapedNewlines(children);\n const blocks = useMemo(() => splitBlocks(shown), [shown]);\n const last = blocks.length - 1;\n const components = (tableActions ? TABLE_COMPONENTS : DEFAULT_COMPONENTS)[externalLinkTarget];\n\n const spans = wordSpans(blocks);\n const settled = useSettledWords(spans.at(-1)?.end ?? 0, streaming);\n\n // A block whose words have all finished their entrance has nothing left to play,\n // which is what `undefined` says: leave it as plain text, no spans at all.\n const settledWords = (span: WordSpan | undefined): number | undefined =>\n !span || settled >= span.end ? undefined : Math.max(0, settled - span.start);\n\n const tail = blocks[last] ?? '';\n const mended = useMemo(() => (streaming ? remend(tail, REMEND_OPTIONS) : tail), [streaming, tail]);\n\n return (\n <div className={cn('mastra-markdown', className)}>\n {blocks.map((block, index) => (\n <MarkdownBlock\n key={index}\n content={index === last ? mended : block}\n settledWords={settledWords(spans[index])}\n components={components}\n streaming={streaming}\n tableActions={tableActions}\n />\n ))}\n </div>\n );\n});\n\n/** Keyed by position at the call site: a content key remounts on every character. */\nconst MarkdownBlock = memo(function MarkdownBlock({\n components,\n content,\n settledWords,\n streaming,\n tableActions,\n}: {\n components: Components;\n content: string;\n settledWords?: number;\n streaming: boolean;\n tableActions: boolean;\n}) {\n const rehypePlugins = useMemo(\n () => (settledWords === undefined ? SETTLED : [rehypeArriving(settledWords)]),\n [settledWords],\n );\n\n return (\n <Markdown\n remarkPlugins={tableActions && !streaming ? COPYABLE_REMARK_PLUGINS : REMARK_PLUGINS}\n rehypePlugins={rehypePlugins}\n components={components}\n >\n {content}\n </Markdown>\n );\n});\n\nconst SETTLED: Options['rehypePlugins'] = [];\n\ninterface WordSpan {\n start: number;\n end: number;\n}\n\n/**\n * Where each block's words fall in the reply's own count, so one settled count covers\n * them all. Counting the source counts its markers too, so the boundary only ever errs\n * towards leaving a word unanimated.\n */\nfunction wordSpans(blocks: string[]): WordSpan[] {\n let read = 0;\n\n return blocks.map(block => {\n const span = { start: read, end: read + countWords(block) };\n read = span.end;\n\n return span;\n });\n}\n\nfunction countWords(text: string): number {\n return text.match(/\\S+/g)?.length ?? 0;\n}\n\n// Agent networks emit their text with literal `\\n`. Only unescape when the text\n// has no real newline, otherwise a `\"a\\nb\"` inside a code fence gets shredded.\nfunction decodeEscapedNewlines(text: string): string {\n return text.includes('\\n') ? text : text.replace(/\\\\n/g, '\\n');\n}\n\ntype MarkdownNode = NonNullable<ExtraProps['node']>;\n\nfunction languageOf(node: MarkdownNode): string | undefined {\n const classNames = node.properties.className;\n if (!Array.isArray(classNames)) return undefined;\n\n const language = classNames.find(entry => typeof entry === 'string' && entry.startsWith('language-'));\n return typeof language === 'string' ? language.slice('language-'.length) : undefined;\n}\n\nfunction fencedCode(node: MarkdownNode | undefined): { code: string; language?: string } | undefined {\n const child = node?.children.find(entry => entry.type === 'element' && entry.tagName === 'code');\n if (child?.type !== 'element') return undefined;\n\n const code = child.children.map(entry => (entry.type === 'text' ? entry.value : '')).join('');\n return { code: code.replace(/\\n$/, ''), language: languageOf(child) };\n}\n\nfunction MarkdownCodeBlock({\n node,\n children,\n className,\n}: {\n node?: MarkdownNode;\n children?: ReactNode;\n className?: string;\n}) {\n const fenced = fencedCode(node);\n if (!fenced) return <pre className={className}>{children}</pre>;\n\n return (\n <CodeBlock\n code={fenced.code}\n lang={fenced.language}\n overflow=\"scroll\"\n className={cn('my-3 bg-sidebar', className)}\n copyMessage=\"Copied code to clipboard\"\n />\n );\n}\n\nconst POPUP_WINDOW_FEATURES = 'popup=yes,width=720,height=800,resizable=yes,scrollbars=yes';\n\nfunction isPlainLeftClick(event: MouseEvent): boolean {\n return event.button === 0 && !event.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey;\n}\n\nfunction markdownLink(externalLinkTarget: MarkdownExternalLinkTarget): NonNullable<Components['a']> {\n return function MarkdownLink({ href, title, children }) {\n const isExternal = /^https?:\\/\\//i.test(href ?? '');\n\n const openInPopup: MouseEventHandler<HTMLAnchorElement> = event => {\n if (!isExternal || externalLinkTarget !== 'window' || !isPlainLeftClick(event)) return;\n\n const popup = window.open(href, '_blank', POPUP_WINDOW_FEATURES);\n if (!popup) return;\n\n popup.opener = null;\n event.preventDefault();\n };\n\n return (\n <a\n href={href}\n title={title}\n onClick={openInPopup}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n >\n {children}\n </a>\n );\n };\n}\n\nconst REMARK_PLUGINS = [remarkGfm];\nconst COPYABLE_REMARK_PLUGINS = [remarkGfm, remarkTableMarkdown];\n\n// Links stay text until their URL lands: remend's placeholder href would render\n// a live anchor to nowhere. No math is rendered here, so pairing `$$` would only\n// turn one literal into another.\nconst REMEND_OPTIONS = { katex: false, linkMode: 'text-only' } as const;\n\n// Elements are listed one by one: react-markdown also passes its `node`, which\n// React would forward to the DOM as a stray attribute. Everything else is\n// styled from markdown-renderer.css.\nconst COMPONENTS: Components = {\n pre: MarkdownCodeBlock,\n a: markdownLink('tab'),\n};\n\nconst WINDOW_COMPONENTS: Components = {\n ...COMPONENTS,\n a: markdownLink('window'),\n};\n\nconst DEFAULT_COMPONENTS = { tab: COMPONENTS, window: WINDOW_COMPONENTS };\nconst TABLE_COMPONENTS = {\n tab: { ...COMPONENTS, table: MarkdownTable },\n window: { ...WINDOW_COMPONENTS, table: MarkdownTable },\n};\n"],"names":["MarkdownRenderer","MarkdownBlock"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const settingsRow = require('../settings-row-C7YKfUgY.cjs');
5
+ const settingsRow = require('../settings-row-Dt4WnnRf.cjs');
6
6
  const jsxRuntime = require('react/jsx-runtime');
7
7
  const React = require('react');
8
8
  const Txt = require('../Txt-DPmEpNbp.cjs');
@@ -95,6 +95,7 @@ function SettingsLayout({
95
95
  }
96
96
 
97
97
  exports.SettingsContainer = settingsRow.SettingsContainer;
98
+ exports.SettingsFieldsetRow = settingsRow.SettingsFieldsetRow;
98
99
  exports.SettingsRow = settingsRow.SettingsRow;
99
100
  exports.SettingsDescription = SettingsDescription;
100
101
  exports.SettingsGroup = SettingsGroup;
@@ -1 +1 @@
1
- {"version":3,"file":"settings.cjs.js","sources":["../../src/ds/new/settings/settings-header.tsx","../../src/ds/new/settings/settings-layout.tsx"],"sourcesContent":["import { createContext, useContext, useId } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst SettingsTitleIdContext = createContext<string | undefined>(undefined);\n\nexport function SettingsGroup({ className, ...props }: ComponentProps<'section'>) {\n const titleId = useId();\n\n return (\n <SettingsTitleIdContext.Provider value={titleId}>\n <section\n aria-labelledby={titleId}\n className={cn('flex min-w-0 scroll-mt-4 flex-col gap-2', className)}\n {...props}\n />\n </SettingsTitleIdContext.Provider>\n );\n}\n\nexport function SettingsHeader({\n action,\n children,\n className,\n ...props\n}: ComponentProps<'header'> & { action?: ReactNode }) {\n return (\n <header\n className={cn('flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4', className)}\n {...props}\n >\n <div className=\"flex min-w-0 flex-col gap-1\">{children}</div>\n {action != null && <div className=\"shrink-0\">{action}</div>}\n </header>\n );\n}\n\nexport function SettingsTitle({\n accessory,\n className,\n ...props\n}: Omit<ComponentProps<'h2'>, 'id'> & { accessory?: ReactNode }) {\n const titleId = useContext(SettingsTitleIdContext);\n\n return (\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <Txt as=\"h2\" id={titleId} variant=\"subheading\" tone=\"ink\" className={className} {...props} />\n {accessory}\n </div>\n );\n}\n\nexport function SettingsDescription({ className, ...props }: ComponentProps<'p'>) {\n return <Txt as=\"p\" variant=\"caption\" tone=\"muted\" className={className} {...props} />;\n}\n","import type { ReactNode } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport interface SettingsLayoutProps {\n title?: ReactNode;\n titleAccessory?: ReactNode;\n description?: ReactNode;\n action?: ReactNode;\n inset?: boolean;\n variant?: 'default' | 'header';\n children: ReactNode;\n}\n\nexport function SettingsLayout({\n title,\n titleAccessory,\n description,\n action,\n inset = false,\n variant,\n children,\n}: SettingsLayoutProps) {\n if (title === undefined || title === null) {\n return variant === 'header' ? (\n children\n ) : (\n <div data-slot=\"settings-layout-content\" className=\"mx-auto w-full max-w-5xl min-w-0 overflow-x-hidden px-4 py-5\">\n <div className=\"min-w-0 space-y-8\">{children}</div>\n </div>\n );\n }\n\n return (\n <>\n <div\n data-slot=\"settings-page-header\"\n className=\"mx-auto w-full max-w-5xl min-w-0 overflow-x-clip px-4 pt-5 pb-0 sm:pt-6\"\n >\n <div className={cn('flex min-w-0 flex-wrap items-start justify-between gap-4', inset && 'pl-4')}>\n <div className=\"grid min-w-0 gap-2\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <Txt as=\"h1\" variant=\"heading\" tone=\"muted\" className=\"min-w-0 truncate font-body tracking-normal\">\n {title}\n </Txt>\n {titleAccessory !== undefined && titleAccessory !== null ? (\n <div className=\"shrink-0\">{titleAccessory}</div>\n ) : null}\n </div>\n {description !== undefined && description !== null ? (\n <Txt as=\"p\" variant=\"body\" tone=\"muted\" className=\"m-0 wrap-break-word\">\n {description}\n </Txt>\n ) : null}\n </div>\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </div>\n </div>\n {variant === 'header' ? (\n children\n ) : (\n <div\n data-slot=\"settings-layout-content\"\n className=\"mx-auto w-full max-w-5xl min-w-0 overflow-x-hidden px-4 py-5\"\n >\n <div className=\"min-w-0 space-y-6\">{children}</div>\n </div>\n )}\n </>\n );\n}\n"],"names":["createContext","useId","jsx","cn","jsxs","useContext","Txt","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"settings.cjs.js","sources":["../../src/ds/new/settings/settings-header.tsx","../../src/ds/new/settings/settings-layout.tsx"],"sourcesContent":["import { createContext, useContext, useId } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst SettingsTitleIdContext = createContext<string | undefined>(undefined);\n\nexport function SettingsGroup({ className, ...props }: ComponentProps<'section'>) {\n const titleId = useId();\n\n return (\n <SettingsTitleIdContext.Provider value={titleId}>\n <section\n aria-labelledby={titleId}\n className={cn('flex min-w-0 scroll-mt-4 flex-col gap-2', className)}\n {...props}\n />\n </SettingsTitleIdContext.Provider>\n );\n}\n\nexport function SettingsHeader({\n action,\n children,\n className,\n ...props\n}: ComponentProps<'header'> & { action?: ReactNode }) {\n return (\n <header\n className={cn('flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4', className)}\n {...props}\n >\n <div className=\"flex min-w-0 flex-col gap-1\">{children}</div>\n {action != null && <div className=\"shrink-0\">{action}</div>}\n </header>\n );\n}\n\nexport function SettingsTitle({\n accessory,\n className,\n ...props\n}: Omit<ComponentProps<'h2'>, 'id'> & { accessory?: ReactNode }) {\n const titleId = useContext(SettingsTitleIdContext);\n\n return (\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <Txt as=\"h2\" id={titleId} variant=\"subheading\" tone=\"ink\" className={className} {...props} />\n {accessory}\n </div>\n );\n}\n\nexport function SettingsDescription({ className, ...props }: ComponentProps<'p'>) {\n return <Txt as=\"p\" variant=\"caption\" tone=\"muted\" className={className} {...props} />;\n}\n","import type { ReactNode } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport interface SettingsLayoutProps {\n title?: ReactNode;\n titleAccessory?: ReactNode;\n description?: ReactNode;\n action?: ReactNode;\n inset?: boolean;\n variant?: 'default' | 'header';\n children: ReactNode;\n}\n\nexport function SettingsLayout({\n title,\n titleAccessory,\n description,\n action,\n inset = false,\n variant,\n children,\n}: SettingsLayoutProps) {\n if (title === undefined || title === null) {\n return variant === 'header' ? (\n children\n ) : (\n <div data-slot=\"settings-layout-content\" className=\"mx-auto w-full max-w-5xl min-w-0 overflow-x-hidden px-4 py-5\">\n <div className=\"min-w-0 space-y-8\">{children}</div>\n </div>\n );\n }\n\n return (\n <>\n <div\n data-slot=\"settings-page-header\"\n className=\"mx-auto w-full max-w-5xl min-w-0 overflow-x-clip px-4 pt-5 pb-0 sm:pt-6\"\n >\n <div className={cn('flex min-w-0 flex-wrap items-start justify-between gap-4', inset && 'pl-4')}>\n <div className=\"grid min-w-0 gap-2\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <Txt as=\"h1\" variant=\"heading\" tone=\"muted\" className=\"min-w-0 truncate font-body tracking-normal\">\n {title}\n </Txt>\n {titleAccessory !== undefined && titleAccessory !== null ? (\n <div className=\"shrink-0\">{titleAccessory}</div>\n ) : null}\n </div>\n {description !== undefined && description !== null ? (\n <Txt as=\"p\" variant=\"body\" tone=\"muted\" className=\"m-0 wrap-break-word\">\n {description}\n </Txt>\n ) : null}\n </div>\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </div>\n </div>\n {variant === 'header' ? (\n children\n ) : (\n <div\n data-slot=\"settings-layout-content\"\n className=\"mx-auto w-full max-w-5xl min-w-0 overflow-x-hidden px-4 py-5\"\n >\n <div className=\"min-w-0 space-y-6\">{children}</div>\n </div>\n )}\n </>\n );\n}\n"],"names":["createContext","useId","jsx","cn","jsxs","useContext","Txt","Fragment"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { S as SettingsContainer, a as SettingsRow } from '../settings-row-C1JZDdz_.js';
1
+ export { S as SettingsContainer, a as SettingsFieldsetRow, b as SettingsRow } from '../settings-row-B0jGFpVw.js';
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import { useId, useContext, createContext } from 'react';
4
4
  import { T as Txt } from '../Txt-BP1SRHmL.js';
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  require('../sidebar.css');const jsxRuntime = require('react/jsx-runtime');
6
- const mainSidebarLinkActive = require('../main-sidebar-link-active-D8VSuJKx.cjs');
6
+ const mainSidebar = require('../main-sidebar-BWKVSRoQ.cjs');
7
7
  const Txt = require('../Txt-DPmEpNbp.cjs');
8
8
  const reactVisuallyHidden = require('@radix-ui/react-visually-hidden');
9
9
  const utils_cn = require('../cn-DG0X1KEP.cjs');
@@ -17,7 +17,7 @@ const v4 = require('zod/v4');
17
17
  const hooks_useLocalStorageState = require('../hooks/use-local-storage-state.cjs.js');
18
18
 
19
19
  function SidebarNewBrand({ logo, title, className, ...props }) {
20
- const { state } = mainSidebarLinkActive.useMainSidebar();
20
+ const { state } = mainSidebar.useMainSidebar();
21
21
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-slot": "sidebar-new-brand", className: utils_cn.cn("flex min-w-0 flex-1 items-center gap-2", className), ...props, children: [
22
22
  logo ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", children: logo }) : null,
23
23
  state === "collapsed" ? /* @__PURE__ */ jsxRuntime.jsx(reactVisuallyHidden.VisuallyHidden, { children: title }) : /* @__PURE__ */ jsxRuntime.jsx(Txt.Txt, { as: "span", variant: "subheading", tone: "ink", className: "truncate font-body tracking-tight", children: title })
@@ -26,7 +26,7 @@ function SidebarNewBrand({ logo, title, className, ...props }) {
26
26
 
27
27
  const SidebarNewCommandHeader = React.forwardRef(
28
28
  function SidebarNewCommandHeader2({ className, children, ...props }, ref) {
29
- const { state, isMobile } = mainSidebarLinkActive.useMainSidebar();
29
+ const { state, isMobile } = mainSidebar.useMainSidebar();
30
30
  return /* @__PURE__ */ jsxRuntime.jsx(
31
31
  "header",
32
32
  {
@@ -52,7 +52,7 @@ function SidebarNewFooter({ className, children, ...props }) {
52
52
  }
53
53
 
54
54
  const SidebarNewFooterMeta = React.forwardRef(function SidebarNewFooterMeta2({ className, children, action, ...props }, ref) {
55
- const { state } = mainSidebarLinkActive.useMainSidebar();
55
+ const { state } = mainSidebar.useMainSidebar();
56
56
  return /* @__PURE__ */ jsxRuntime.jsxs(
57
57
  "div",
58
58
  {
@@ -86,14 +86,14 @@ const SidebarNewFooterMeta = React.forwardRef(function SidebarNewFooterMeta2({ c
86
86
  });
87
87
 
88
88
  function SidebarNewTrigger(props) {
89
- const context = mainSidebarLinkActive.useMaybeSidebarState();
89
+ const context = mainSidebar.useMaybeSidebarState();
90
90
  if (context?.isMobile) return null;
91
- return /* @__PURE__ */ jsxRuntime.jsx(mainSidebarLinkActive.MainSidebarTrigger, { ...props });
91
+ return /* @__PURE__ */ jsxRuntime.jsx(mainSidebar.MainSidebarTrigger, { ...props });
92
92
  }
93
93
 
94
94
  const hold = "animate-[sidebar-hold_var(--resize-dur)] motion-reduce:animate-none";
95
95
  function SidebarNewHeader({ className, children, collapsedLogo, ...props }) {
96
- const sidebar = mainSidebarLinkActive.useMaybeSidebarState();
96
+ const sidebar = mainSidebar.useMaybeSidebarState();
97
97
  const collapsed = sidebar?.state === "collapsed";
98
98
  const isMobile = sidebar?.isMobile ?? false;
99
99
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -223,7 +223,7 @@ const SidebarNewMeter = React.forwardRef(function SidebarNewMeter2({
223
223
  className,
224
224
  ...props
225
225
  }, ref) {
226
- const ctx = mainSidebarLinkActive.useMaybeSidebarState();
226
+ const ctx = mainSidebar.useMaybeSidebarState();
227
227
  const state = stateProp ?? ctx?.state ?? "default";
228
228
  const Link = LinkProp ?? ctx?.LinkComponent ?? "a";
229
229
  const isCollapsed = state === "collapsed";
@@ -281,9 +281,9 @@ const SidebarNewMeter = React.forwardRef(function SidebarNewMeter2({
281
281
  });
282
282
 
283
283
  function SidebarNewNav({ children, className, ...props }) {
284
- const isMobile = mainSidebarLinkActive.useMaybeSidebarState()?.isMobile ?? false;
284
+ const isMobile = mainSidebar.useMaybeSidebarState()?.isMobile ?? false;
285
285
  return /* @__PURE__ */ jsxRuntime.jsx(
286
- mainSidebarLinkActive.MainSidebarNav,
286
+ mainSidebar.MainSidebarNav,
287
287
  {
288
288
  className: utils_cn.cn(
289
289
  "-mr-1.5",
@@ -307,7 +307,7 @@ function SidebarNewNavHeader({
307
307
  LinkComponent: LinkProp,
308
308
  ...props
309
309
  }) {
310
- const context = mainSidebarLinkActive.useMaybeSidebarState();
310
+ const context = mainSidebar.useMaybeSidebarState();
311
311
  const state = stateProp ?? context?.state ?? "default";
312
312
  const showTitle = state === "default";
313
313
  const Link = LinkProp ?? context?.LinkComponent ?? "a";
@@ -386,7 +386,7 @@ function sidebarNewNavStackPageClasses(active, page, className) {
386
386
  }
387
387
 
388
388
  function SidebarNewNavStackRootView({ children, className, ...props }) {
389
- const { state } = mainSidebarLinkActive.useMainSidebar();
389
+ const { state } = mainSidebar.useMainSidebar();
390
390
  const { activeValue, rootValue } = useSidebarNewNavStack();
391
391
  const active = state === "collapsed" || activeValue === rootValue;
392
392
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -412,7 +412,7 @@ function SidebarNewNavStackView({
412
412
  className,
413
413
  ...props
414
414
  }) {
415
- const { state } = mainSidebarLinkActive.useMainSidebar();
415
+ const { state } = mainSidebar.useMainSidebar();
416
416
  const { activeValue, closeView } = useSidebarNewNavStack();
417
417
  const active = state !== "collapsed" && activeValue === value;
418
418
  const backRef = React.useRef(null);
@@ -453,7 +453,7 @@ function SidebarNewNavStackView({
453
453
  type: "button",
454
454
  "aria-label": `${backLabel}: ${title}`,
455
455
  onClick: handleBack,
456
- className: utils_cn.cn(mainSidebarLinkActive.navItemClasses(), "mb-2 grid grid-cols-[2rem_1fr_2rem] px-1"),
456
+ className: utils_cn.cn(mainSidebar.navItemClasses(), "mb-2 grid grid-cols-[2rem_1fr_2rem] px-1"),
457
457
  children: [
458
458
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeftIcon, { className: "justify-self-center", "aria-hidden": "true" }),
459
459
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate text-center", children: title }),
@@ -479,9 +479,9 @@ function SidebarNewRoot({
479
479
  children,
480
480
  ...props
481
481
  }) {
482
- const sidebar = mainSidebarLinkActive.useMaybeSidebarState();
482
+ const sidebar = mainSidebar.useMaybeSidebarState();
483
483
  const isRaised = variant === "raised" && !sidebar?.isMobile;
484
- return /* @__PURE__ */ jsxRuntime.jsx("aside", { "aria-label": ariaLabel, className: "contents", children: /* @__PURE__ */ jsxRuntime.jsx(mainSidebarLinkActive.MainSidebarRoot, { mobileMode, ...props, children: isRaised ? /* @__PURE__ */ jsxRuntime.jsx(
484
+ return /* @__PURE__ */ jsxRuntime.jsx("aside", { "aria-label": ariaLabel, className: "contents", children: /* @__PURE__ */ jsxRuntime.jsx(mainSidebar.MainSidebarRoot, { mobileMode, ...props, children: isRaised ? /* @__PURE__ */ jsxRuntime.jsx(
485
485
  "div",
486
486
  {
487
487
  "data-slot": "sidebar-new-surface",
@@ -534,7 +534,7 @@ function SidebarNewSectionLink({
534
534
  }) {
535
535
  const childLinks = link.children ?? [];
536
536
  return /* @__PURE__ */ jsxRuntime.jsx(
537
- mainSidebarLinkActive.MainSidebarNavLink,
537
+ mainSidebar.MainSidebarNavLink,
538
538
  {
539
539
  link,
540
540
  isActive: isActive?.(link, activeCandidates) ?? link.isActive,
@@ -543,7 +543,7 @@ function SidebarNewSectionLink({
543
543
  if (event.target instanceof Element && event.target.closest("li") !== event.currentTarget) return;
544
544
  onSelect?.(link);
545
545
  },
546
- subItems: childLinks.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(mainSidebarLinkActive.MainSidebarNavList, { className: "mt-0.5", children: childLinks.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
546
+ subItems: childLinks.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(mainSidebar.MainSidebarNavList, { className: "mt-0.5", children: childLinks.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
547
547
  SidebarNewSectionLink,
548
548
  {
549
549
  link: child,
@@ -585,7 +585,7 @@ function SidebarNewMoreLinks({
585
585
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
586
586
  surfacedLinks.map(renderLink),
587
587
  foldedLinks.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
588
- mainSidebarLinkActive.MainSidebarNavLink,
588
+ mainSidebar.MainSidebarNavLink,
589
589
  {
590
590
  link: { name: "More", url: "", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontalIcon, {}) },
591
591
  render: /* @__PURE__ */ jsxRuntime.jsxs(
@@ -597,7 +597,7 @@ function SidebarNewMoreLinks({
597
597
  onClick: () => setExpanded((current) => !current),
598
598
  children: [
599
599
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontalIcon, { "aria-hidden": "true" }),
600
- /* @__PURE__ */ jsxRuntime.jsx(mainSidebarLinkActive.MainSidebarNavLabel, { children: "More" })
600
+ /* @__PURE__ */ jsxRuntime.jsx(mainSidebar.MainSidebarNavLabel, { children: "More" })
601
601
  ]
602
602
  }
603
603
  ),
@@ -645,15 +645,15 @@ function SidebarNewSections({
645
645
  const headerId = section.title ? `${baseId}-${section.key}` : void 0;
646
646
  const activeCandidates = [...section.links, ...section.moreLinks ?? []];
647
647
  return /* @__PURE__ */ jsxRuntime.jsxs(
648
- mainSidebarLinkActive.MainSidebarNavSection,
648
+ mainSidebar.MainSidebarNavSection,
649
649
  {
650
650
  className,
651
651
  "aria-labelledby": headerId,
652
652
  "aria-label": !headerId ? section.key : void 0,
653
653
  children: [
654
- showSeparator ? /* @__PURE__ */ jsxRuntime.jsx(mainSidebarLinkActive.MainSidebarNavSeparator, { className: "[&:after]:border-border" }) : null,
654
+ showSeparator ? /* @__PURE__ */ jsxRuntime.jsx(mainSidebar.MainSidebarNavSeparator, { className: "[&:after]:border-border" }) : null,
655
655
  section.title ? /* @__PURE__ */ jsxRuntime.jsx(SidebarNewNavHeader, { id: headerId, href: section.href, isActive: section.isHeaderActive, children: section.title }) : null,
656
- /* @__PURE__ */ jsxRuntime.jsxs(mainSidebarLinkActive.MainSidebarNavList, { children: [
656
+ /* @__PURE__ */ jsxRuntime.jsxs(mainSidebar.MainSidebarNavList, { children: [
657
657
  section.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx(
658
658
  SidebarNewSectionLink,
659
659
  {
@@ -689,25 +689,25 @@ const SidebarNew = Object.assign(SidebarNewRoot, {
689
689
  FooterMeta: SidebarNewFooterMeta,
690
690
  Header: SidebarNewHeader,
691
691
  Meter: SidebarNewMeter,
692
- MobileTrigger: mainSidebarLinkActive.MainSidebarMobileTrigger,
692
+ MobileTrigger: mainSidebar.MainSidebarMobileTrigger,
693
693
  Nav: SidebarNewNav,
694
694
  NavHeader: SidebarNewNavHeader,
695
- NavLabel: mainSidebarLinkActive.MainSidebarNavLabel,
696
- NavLink: mainSidebarLinkActive.MainSidebarNavLink,
697
- NavList: mainSidebarLinkActive.MainSidebarNavList,
698
- NavSection: mainSidebarLinkActive.MainSidebarNavSection,
699
- NavSeparator: mainSidebarLinkActive.MainSidebarNavSeparator,
695
+ NavLabel: mainSidebar.MainSidebarNavLabel,
696
+ NavLink: mainSidebar.MainSidebarNavLink,
697
+ NavList: mainSidebar.MainSidebarNavList,
698
+ NavSection: mainSidebar.MainSidebarNavSection,
699
+ NavSeparator: mainSidebar.MainSidebarNavSeparator,
700
700
  NavStack: SidebarNewNavStack,
701
- Provider: mainSidebarLinkActive.MainSidebarProvider,
701
+ Provider: mainSidebar.MainSidebarProvider,
702
702
  SearchTrigger: SidebarNewSearchTrigger,
703
703
  Sections: SidebarNewSections,
704
704
  Trigger: SidebarNewTrigger
705
705
  });
706
706
 
707
- exports.SidebarNewProvider = mainSidebarLinkActive.MainSidebarProvider;
708
- exports.getIsLinkActive = mainSidebarLinkActive.getIsLinkActive;
709
- exports.navItemClasses = mainSidebarLinkActive.navItemClasses;
710
- exports.useSidebarNew = mainSidebarLinkActive.useMainSidebar;
707
+ exports.SidebarNewProvider = mainSidebar.MainSidebarProvider;
708
+ exports.getIsLinkActive = mainSidebar.getIsLinkActive;
709
+ exports.navItemClasses = mainSidebar.navItemClasses;
710
+ exports.useSidebarNew = mainSidebar.useMainSidebar;
711
711
  exports.SidebarNew = SidebarNew;
712
712
  exports.SidebarNewBrand = SidebarNewBrand;
713
713
  exports.SidebarNewCommandHeader = SidebarNewCommandHeader;