@mastra/playground-ui 65.0.0-alpha.7 → 65.0.0-alpha.9

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 (528) hide show
  1. package/dist/{code-block-CAV4Flrx.cjs → code-block-BSJzgBt1.cjs} +2 -2
  2. package/dist/{code-block-CAV4Flrx.cjs.map → code-block-BSJzgBt1.cjs.map} +1 -1
  3. package/dist/{code-block-BB-5HSl3.js → code-block-JWCkGm3Q.js} +2 -2
  4. package/dist/{code-block-BB-5HSl3.js.map → code-block-JWCkGm3Q.js.map} +1 -1
  5. package/dist/{code-editor-CbyCb7CW.cjs → code-editor-4ukTuvqG.cjs} +18 -2
  6. package/dist/code-editor-4ukTuvqG.cjs.map +1 -0
  7. package/dist/{code-editor-DOv4jc-0.js → code-editor-8qu58Npy.js} +18 -2
  8. package/dist/code-editor-8qu58Npy.js.map +1 -0
  9. package/dist/{combobox-BCoCVZHs.js → combobox-Cff50hgT.js} +37 -49
  10. package/dist/combobox-Cff50hgT.js.map +1 -0
  11. package/dist/{combobox-DbZAWh8q.cjs → combobox-RlGW9Erz.cjs} +37 -49
  12. package/dist/combobox-RlGW9Erz.cjs.map +1 -0
  13. package/dist/components/BillingIllustration.cjs.js +524 -1
  14. package/dist/components/BillingIllustration.cjs.js.map +1 -1
  15. package/dist/components/BillingIllustration.es.js +524 -1
  16. package/dist/components/BillingIllustration.es.js.map +1 -1
  17. package/dist/components/CodeBlock.cjs.js +1 -1
  18. package/dist/components/CodeBlock.es.js +1 -1
  19. package/dist/components/CodeEditor.cjs.js +1 -1
  20. package/dist/components/CodeEditor.es.js +1 -1
  21. package/dist/components/Combobox.cjs.js +1 -1
  22. package/dist/components/Combobox.es.js +1 -1
  23. package/dist/components/DataList.es.js +5 -5
  24. package/dist/components/DateTimePicker.cjs.js +1 -1
  25. package/dist/components/DateTimePicker.es.js +1 -1
  26. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  27. package/dist/components/DateTimeRangePicker.es.js +1 -1
  28. package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
  29. package/dist/components/FilterBar.cjs.js +7 -843
  30. package/dist/components/FilterBar.cjs.js.map +1 -1
  31. package/dist/components/FilterBar.es.js +4 -841
  32. package/dist/components/FilterBar.es.js.map +1 -1
  33. package/dist/components/FormFieldBlocks.cjs.js +1 -1
  34. package/dist/components/FormFieldBlocks.es.js +1 -1
  35. package/dist/components/JSONSchemaForm.cjs.js +1 -1
  36. package/dist/components/JSONSchemaForm.es.js +1 -1
  37. package/dist/components/LogsDataList.es.js +2 -2
  38. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  39. package/dist/components/MarkdownRenderer.es.js +1 -1
  40. package/dist/components/PageLayout.cjs.js +3 -56
  41. package/dist/components/PageLayout.cjs.js.map +1 -1
  42. package/dist/components/PageLayout.es.js +1 -58
  43. package/dist/components/PageLayout.es.js.map +1 -1
  44. package/dist/components/PropertyFilter.cjs.js +1 -1
  45. package/dist/components/PropertyFilter.es.js +1 -1
  46. package/dist/components/RuleBuilder.cjs.js +1 -1
  47. package/dist/components/RuleBuilder.es.js +1 -1
  48. package/dist/components/SavedViews.es.js +1 -1
  49. package/dist/components/Section.cjs.js +1 -1
  50. package/dist/components/Section.es.js +1 -1
  51. package/dist/components/Select.cjs.js +2 -1
  52. package/dist/components/Select.cjs.js.map +1 -1
  53. package/dist/components/Select.es.js +1 -1
  54. package/dist/components/SideDialog.cjs.js +1 -1
  55. package/dist/components/SideDialog.es.js +1 -1
  56. package/dist/components/Sidebar.cjs.js +1 -1
  57. package/dist/components/Sidebar.es.js +1 -1
  58. package/dist/components/Workflow.cjs.js +3 -3
  59. package/dist/components/Workflow.es.js +3 -3
  60. package/dist/components/ai/activity.cjs.js +1 -1
  61. package/dist/components/ai/activity.es.js +1 -1
  62. package/dist/components/ai/plan.cjs.js +1 -1
  63. package/dist/components/ai/plan.es.js +1 -1
  64. package/dist/components/ai/tool-approval.cjs.js +1 -1
  65. package/dist/components/ai/tool-approval.es.js +1 -1
  66. package/dist/components/ai/tool-call.cjs.js +1 -1
  67. package/dist/components/ai/tool-call.es.js +1 -1
  68. package/dist/{data-list-aFlt9Du-.js → data-list-CD_lls8O.js} +3 -3
  69. package/dist/{data-list-aFlt9Du-.js.map → data-list-CD_lls8O.js.map} +1 -1
  70. package/dist/{data-list-skeleton-bNfITSHs.js → data-list-skeleton-CiilOVAl.js} +3 -3
  71. package/dist/{data-list-skeleton-bNfITSHs.js.map → data-list-skeleton-CiilOVAl.js.map} +1 -1
  72. package/dist/{data-list-spacer-BFAQT_lQ.js → data-list-spacer-DpXJrZe1.js} +2 -2
  73. package/dist/{data-list-spacer-BFAQT_lQ.js.map → data-list-spacer-DpXJrZe1.js.map} +1 -1
  74. package/dist/{data-list-top-T-mtdIUp.js → data-list-top-Cu4C2Z07.js} +2 -2
  75. package/dist/{data-list-top-T-mtdIUp.js.map → data-list-top-Cu4C2Z07.js.map} +1 -1
  76. package/dist/{date-time-range-picker-CcnDMZJu.js → date-time-range-picker-BB6ivHR-.js} +2 -2
  77. package/dist/{date-time-range-picker-CcnDMZJu.js.map → date-time-range-picker-BB6ivHR-.js.map} +1 -1
  78. package/dist/{date-time-range-picker-CXGab8Nj.cjs → date-time-range-picker-ExPgeHV_.cjs} +2 -2
  79. package/dist/{date-time-range-picker-CXGab8Nj.cjs.map → date-time-range-picker-ExPgeHV_.cjs.map} +1 -1
  80. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  81. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  82. package/dist/domains/chat/messages/dataset-save-action.cjs.js +3 -2
  83. package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
  84. package/dist/domains/chat/messages/dataset-save-action.es.js +3 -2
  85. package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
  86. package/dist/domains/chat/messages/message-row.cjs.js +1 -1
  87. package/dist/domains/chat/messages/message-row.es.js +1 -1
  88. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  89. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  90. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  91. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  92. package/dist/domains/chat/messages/skill-message.cjs.js +1 -1
  93. package/dist/domains/chat/messages/skill-message.es.js +1 -1
  94. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  95. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  96. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +2 -2
  97. package/dist/domains/chat/tools/badges/agent-badge.es.js +2 -2
  98. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
  99. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
  100. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  101. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  102. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
  103. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  104. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
  105. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
  106. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  107. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  108. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  109. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  110. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +2 -2
  111. package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
  112. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
  113. package/dist/domains/chat/tools/badges/workflow-badge.es.js +2 -2
  114. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
  115. package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
  116. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  117. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  118. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +326 -0
  119. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js.map +1 -0
  120. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.d.ts +2 -0
  121. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +322 -0
  122. package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js.map +1 -0
  123. package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.cjs.js +79 -0
  124. package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.cjs.js.map +1 -0
  125. package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.d.ts +2 -0
  126. package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.es.js +75 -0
  127. package/dist/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.es.js.map +1 -0
  128. package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.cjs.js +25 -0
  129. package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.cjs.js.map +1 -0
  130. package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.d.ts +2 -0
  131. package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.es.js +21 -0
  132. package/dist/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.es.js.map +1 -0
  133. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.cjs.js +22 -0
  134. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.cjs.js.map +1 -0
  135. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.d.ts +2 -0
  136. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.es.js +18 -0
  137. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.es.js.map +1 -0
  138. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +54 -0
  139. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js.map +1 -0
  140. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.d.ts +2 -0
  141. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +50 -0
  142. package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js.map +1 -0
  143. package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.cjs.js +21 -0
  144. package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.cjs.js.map +1 -0
  145. package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.d.ts +2 -0
  146. package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.es.js +17 -0
  147. package/dist/domains/datasets/components/add-dataset-item-dialog/field-errors.es.js.map +1 -0
  148. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +180 -0
  149. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js.map +1 -0
  150. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.d.ts +2 -0
  151. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +176 -0
  152. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js.map +1 -0
  153. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.cjs.js +57 -0
  154. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.cjs.js.map +1 -0
  155. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.d.ts +2 -0
  156. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.es.js +45 -0
  157. package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-types.es.js.map +1 -0
  158. package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.cjs.js +17 -0
  159. package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.cjs.js.map +1 -0
  160. package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.d.ts +2 -0
  161. package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.es.js +13 -0
  162. package/dist/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.es.js.map +1 -0
  163. package/dist/domains/datasets/components/add-dataset-item-dialog.cjs.js +10 -0
  164. package/dist/domains/datasets/components/add-dataset-item-dialog.cjs.js.map +1 -0
  165. package/dist/domains/datasets/components/add-dataset-item-dialog.d.ts +2 -0
  166. package/dist/domains/datasets/components/add-dataset-item-dialog.es.js +2 -0
  167. package/dist/domains/datasets/components/add-dataset-item-dialog.es.js.map +1 -0
  168. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +2 -2
  169. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +2 -2
  170. package/dist/domains/datasets/components.cjs.js +2 -0
  171. package/dist/domains/datasets/components.cjs.js.map +1 -1
  172. package/dist/domains/datasets/components.es.js +1 -0
  173. package/dist/domains/datasets/components.es.js.map +1 -1
  174. package/dist/domains/datasets.cjs.js +2 -0
  175. package/dist/domains/datasets.cjs.js.map +1 -1
  176. package/dist/domains/datasets.es.js +1 -0
  177. package/dist/domains/datasets.es.js.map +1 -1
  178. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  179. package/dist/domains/logs/hooks/use-logs-filter-persistence.cjs.js.map +1 -1
  180. package/dist/domains/logs/hooks/use-logs-filter-persistence.es.js.map +1 -1
  181. package/dist/domains/logs/hooks/use-logs-url-state.cjs.js.map +1 -1
  182. package/dist/domains/logs/hooks/use-logs-url-state.es.js.map +1 -1
  183. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  184. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  185. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  186. package/dist/domains/metrics/drilldown.es.js +1 -1
  187. package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
  188. package/dist/domains/metrics/metrics-filters.es.js +1 -1
  189. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -3
  190. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
  191. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -3
  192. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
  193. package/dist/domains/observability/components/trace-as-item-dialog.cjs.js +31 -36
  194. package/dist/domains/observability/components/trace-as-item-dialog.cjs.js.map +1 -1
  195. package/dist/domains/observability/components/trace-as-item-dialog.es.js +31 -36
  196. package/dist/domains/observability/components/trace-as-item-dialog.es.js.map +1 -1
  197. package/dist/domains/scores/components/score-as-item-dialog.cjs.js +1 -0
  198. package/dist/domains/scores/components/score-as-item-dialog.cjs.js.map +1 -1
  199. package/dist/domains/scores/components/score-as-item-dialog.es.js +1 -0
  200. package/dist/domains/scores/components/score-as-item-dialog.es.js.map +1 -1
  201. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  202. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  203. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  204. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  205. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  206. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  207. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  208. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  209. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  210. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  211. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  212. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  213. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  214. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  215. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  216. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  217. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  218. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
  219. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  220. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -0
  221. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  222. package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -0
  223. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  224. package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -1
  225. package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
  226. package/dist/domains/traces/components/trace-data-panel.cjs.js +2 -0
  227. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  228. package/dist/domains/traces/components/trace-data-panel.es.js +2 -0
  229. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  230. package/dist/domains/traces/components/trace-error-cell.es.js +1 -1
  231. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  232. package/dist/domains/traces/components/trace-time-range-chip.es.js +3 -3
  233. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +117 -0
  234. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js.map +1 -0
  235. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +2 -0
  236. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +94 -0
  237. package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js.map +1 -0
  238. package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.cjs.js +20 -0
  239. package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.cjs.js.map +1 -0
  240. package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.d.ts +2 -0
  241. package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.es.js +16 -0
  242. package/dist/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.es.js.map +1 -0
  243. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.cjs.js +39 -0
  244. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.cjs.js.map +1 -0
  245. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.d.ts +2 -0
  246. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.es.js +35 -0
  247. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.es.js.map +1 -0
  248. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.cjs.js +16 -0
  249. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.cjs.js.map +1 -0
  250. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.d.ts +2 -0
  251. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.es.js +12 -0
  252. package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.es.js.map +1 -0
  253. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js +56 -0
  254. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -0
  255. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +2 -0
  256. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js +40 -0
  257. package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -0
  258. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +78 -0
  259. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -0
  260. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.d.ts +2 -0
  261. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +72 -0
  262. package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -0
  263. package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.cjs.js +52 -0
  264. package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.cjs.js.map +1 -0
  265. package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.d.ts +2 -0
  266. package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.es.js +48 -0
  267. package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.es.js.map +1 -0
  268. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +70 -0
  269. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -0
  270. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.d.ts +2 -0
  271. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +66 -0
  272. package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -0
  273. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +58 -0
  274. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js.map +1 -0
  275. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.d.ts +2 -0
  276. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +54 -0
  277. package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js.map +1 -0
  278. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +145 -0
  279. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -0
  280. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.d.ts +2 -0
  281. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +141 -0
  282. package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -0
  283. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +151 -0
  284. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -0
  285. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.d.ts +2 -0
  286. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +147 -0
  287. package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -0
  288. package/dist/domains/traces/components/traces-explorer/use-traces-discovery.cjs.js +14 -0
  289. package/dist/domains/traces/components/traces-explorer/use-traces-discovery.cjs.js.map +1 -0
  290. package/dist/domains/traces/components/traces-explorer/use-traces-discovery.d.ts +2 -0
  291. package/dist/domains/traces/components/traces-explorer/use-traces-discovery.es.js +10 -0
  292. package/dist/domains/traces/components/traces-explorer/use-traces-discovery.es.js.map +1 -0
  293. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +86 -0
  294. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -0
  295. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.d.ts +2 -0
  296. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +81 -0
  297. package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -0
  298. package/dist/domains/traces/components/traces-explorer.cjs.js +42 -0
  299. package/dist/domains/traces/components/traces-explorer.cjs.js.map +1 -0
  300. package/dist/domains/traces/components/traces-explorer.d.ts +2 -0
  301. package/dist/domains/traces/components/traces-explorer.es.js +25 -0
  302. package/dist/domains/traces/components/traces-explorer.es.js.map +1 -0
  303. package/dist/domains/traces/components/traces-list-view.es.js +4 -4
  304. package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
  305. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +2 -1
  306. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -1
  307. package/dist/domains/traces/hooks/use-traces-list-source.es.js +3 -2
  308. package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -1
  309. package/dist/domains/traces/hooks.cjs.js +0 -4
  310. package/dist/domains/traces/hooks.cjs.js.map +1 -1
  311. package/dist/domains/traces/hooks.es.js +0 -2
  312. package/dist/domains/traces/hooks.es.js.map +1 -1
  313. package/dist/domains/traces/trace-filters.cjs.js +1 -1
  314. package/dist/domains/traces/trace-filters.es.js +1 -1
  315. package/dist/domains/traces/trace-query-filters.cjs.js +2 -1
  316. package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
  317. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  318. package/dist/domains/traces.cjs.js +2 -5
  319. package/dist/domains/traces.cjs.js.map +1 -1
  320. package/dist/domains/traces.es.js +1 -3
  321. package/dist/domains/traces.es.js.map +1 -1
  322. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  323. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  324. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
  325. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  326. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  327. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  328. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  329. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +1 -1
  330. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
  331. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  332. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  333. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -1
  334. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +1 -1
  335. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
  336. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  337. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  338. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  339. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  340. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  341. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +1 -1
  342. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
  343. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
  344. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  345. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +0 -1
  346. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  347. package/dist/domains/workflows/workflow/workflow-input-data.es.js +0 -1
  348. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  349. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
  350. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
  351. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
  352. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  353. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +1 -1
  354. package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
  355. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  356. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  357. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
  358. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +1 -1
  359. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
  360. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  361. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
  362. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
  363. package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
  364. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  365. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +2 -2
  366. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +2 -2
  367. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  368. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  369. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  370. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +1 -1
  371. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -2
  372. package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
  373. package/dist/filter-bar-C6NdZctn.cjs +849 -0
  374. package/dist/filter-bar-C6NdZctn.cjs.map +1 -0
  375. package/dist/filter-bar-DW0fD4bu.js +842 -0
  376. package/dist/filter-bar-DW0fD4bu.js.map +1 -0
  377. package/dist/{filter-bar-chip-C9CXOudu.js → filter-bar-chip-DM73lTpx.js} +2 -2
  378. package/dist/{filter-bar-chip-C9CXOudu.js.map → filter-bar-chip-DM73lTpx.js.map} +1 -1
  379. package/dist/layout/tabbed-container.cjs.js +1 -1
  380. package/dist/layout/tabbed-container.es.js +2 -2
  381. package/dist/lib/form/components/select-field.cjs.js +1 -1
  382. package/dist/lib/form/components/select-field.es.js +1 -1
  383. package/dist/{logs-data-list-Db5dBRmc.js → logs-data-list-VEEruqHO.js} +3 -3
  384. package/dist/{logs-data-list-Db5dBRmc.js.map → logs-data-list-VEEruqHO.js.map} +1 -1
  385. package/dist/{markdown-renderer-CQ_pSSO7.cjs → markdown-renderer-73CdjgS4.cjs} +2 -2
  386. package/dist/{markdown-renderer-CQ_pSSO7.cjs.map → markdown-renderer-73CdjgS4.cjs.map} +1 -1
  387. package/dist/{markdown-renderer-DEoJ5aBR.js → markdown-renderer-Qv9-1YIp.js} +2 -2
  388. package/dist/{markdown-renderer-DEoJ5aBR.js.map → markdown-renderer-Qv9-1YIp.js.map} +1 -1
  389. package/dist/new/settings.cjs.js +3 -2
  390. package/dist/new/settings.cjs.js.map +1 -1
  391. package/dist/new/settings.es.js +2 -1
  392. package/dist/new/settings.es.js.map +1 -1
  393. package/dist/page-layout-D1AXJJrp.cjs +61 -0
  394. package/dist/page-layout-D1AXJJrp.cjs.map +1 -0
  395. package/dist/page-layout-DCMg_kJB.js +59 -0
  396. package/dist/page-layout-DCMg_kJB.js.map +1 -0
  397. package/dist/{plan-TYss51JK.cjs → plan-DBvoFFHO.cjs} +2 -2
  398. package/dist/{plan-TYss51JK.cjs.map → plan-DBvoFFHO.cjs.map} +1 -1
  399. package/dist/{plan-B6td0b8h.js → plan-TBs5kj_X.js} +2 -2
  400. package/dist/{plan-B6td0b8h.js.map → plan-TBs5kj_X.js.map} +1 -1
  401. package/dist/{reasoning-activity-I5-HcGou.cjs → reasoning-activity-BrZbS7pa.cjs} +2 -2
  402. package/dist/{reasoning-activity-I5-HcGou.cjs.map → reasoning-activity-BrZbS7pa.cjs.map} +1 -1
  403. package/dist/{reasoning-activity-Dz2hk9pU.js → reasoning-activity-CyMhxRL2.js} +2 -2
  404. package/dist/{reasoning-activity-Dz2hk9pU.js.map → reasoning-activity-CyMhxRL2.js.map} +1 -1
  405. package/dist/{section-D0hKTVXt.js → section-eRs4NnCC.js} +3 -2
  406. package/dist/{section-D0hKTVXt.js.map → section-eRs4NnCC.js.map} +1 -1
  407. package/dist/{section-CctlZIXp.cjs → section-skBYREaR.cjs} +4 -3
  408. package/dist/{section-CctlZIXp.cjs.map → section-skBYREaR.cjs.map} +1 -1
  409. package/dist/{select-A3AFKLd9.cjs → select-BqHt-fOI.cjs} +12 -1
  410. package/dist/select-BqHt-fOI.cjs.map +1 -0
  411. package/dist/{select-7rYaECQf.js → select-CCpQUIEg.js} +13 -3
  412. package/dist/select-CCpQUIEg.js.map +1 -0
  413. package/dist/settings-container-D6LsO77E.js +42 -0
  414. package/dist/settings-container-D6LsO77E.js.map +1 -0
  415. package/dist/settings-container-umHxLp1a.cjs +45 -0
  416. package/dist/settings-container-umHxLp1a.cjs.map +1 -0
  417. package/dist/{settings-row-yuQjwWTl.js → settings-row-BHtjEfPr.js} +4 -41
  418. package/dist/settings-row-BHtjEfPr.js.map +1 -0
  419. package/dist/{settings-row-m_4gDCwS.cjs → settings-row-Ds-PVocx.cjs} +2 -41
  420. package/dist/settings-row-Ds-PVocx.cjs.map +1 -0
  421. package/dist/{side-dialog-C-XvsAm_.cjs → side-dialog-B7a4dasE.cjs} +3 -3
  422. package/dist/{side-dialog-C-XvsAm_.cjs.map → side-dialog-B7a4dasE.cjs.map} +1 -1
  423. package/dist/{side-dialog-cUpWIkKq.js → side-dialog-DVea8YTO.js} +3 -3
  424. package/dist/{side-dialog-cUpWIkKq.js.map → side-dialog-DVea8YTO.js.map} +1 -1
  425. package/dist/{span-payload-primitives-n5uf4hOk.cjs → span-payload-primitives-CE124T1P.cjs} +2 -2
  426. package/dist/{span-payload-primitives-n5uf4hOk.cjs.map → span-payload-primitives-CE124T1P.cjs.map} +1 -1
  427. package/dist/{span-payload-primitives-CaT3DT8h.js → span-payload-primitives-v0iS2w26.js} +2 -2
  428. package/dist/{span-payload-primitives-CaT3DT8h.js.map → span-payload-primitives-v0iS2w26.js.map} +1 -1
  429. package/dist/src/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.d.ts +28 -0
  430. package/dist/src/domains/datasets/components/add-dataset-item-dialog/build-add-item-payload.d.ts +26 -0
  431. package/dist/src/domains/datasets/components/add-dataset-item-dialog/collapsible-settings-row.d.ts +14 -0
  432. package/dist/src/domains/datasets/components/add-dataset-item-dialog/dataset-field-errors.d.ts +8 -0
  433. package/dist/src/domains/datasets/components/add-dataset-item-dialog/dataset-picker.d.ts +11 -0
  434. package/dist/src/domains/datasets/components/add-dataset-item-dialog/field-errors.d.ts +10 -0
  435. package/dist/src/domains/datasets/components/add-dataset-item-dialog/index.d.ts +2 -0
  436. package/dist/src/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.d.ts +11 -0
  437. package/dist/src/domains/datasets/components/add-dataset-item-dialog/trajectory-types.d.ts +50 -0
  438. package/dist/src/domains/datasets/components/add-dataset-item-dialog/use-target-agent-tools.d.ts +7 -0
  439. package/dist/src/domains/datasets/components/index.d.ts +1 -0
  440. package/dist/src/domains/logs/hooks/use-logs-filter-persistence.d.ts +2 -3
  441. package/dist/src/domains/logs/hooks/use-logs-url-state.d.ts +1 -1
  442. package/dist/src/domains/memory/components/flame-graph-data.d.ts +1 -1
  443. package/dist/src/domains/observability/components/trace-as-item-dialog.d.ts +3 -5
  444. package/dist/src/domains/traces/components/traces-explorer/index.d.ts +27 -0
  445. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +113 -0
  446. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-auto-refresh.d.ts +1 -0
  447. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-columns-menu.d.ts +1 -0
  448. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-columns-provider.d.ts +9 -0
  449. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +112 -0
  450. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-filter-bar.d.ts +24 -0
  451. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-layout.d.ts +14 -0
  452. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-list-provider.d.ts +13 -0
  453. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-list.d.ts +1 -0
  454. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-panel.d.ts +16 -0
  455. package/dist/src/domains/traces/components/traces-explorer/traces-explorer-root.d.ts +21 -0
  456. package/dist/src/domains/traces/components/traces-explorer/use-traces-discovery.d.ts +15 -0
  457. package/dist/src/domains/traces/components/traces-explorer/use-traces-filter-bar.d.ts +15 -0
  458. package/dist/src/domains/traces/hooks/index.d.ts +1 -2
  459. package/dist/src/domains/traces/trace-query-filters.d.ts +2 -0
  460. package/dist/src/domains/workflows/context/use-persisted-workflow-run.d.ts +5 -5
  461. package/dist/src/ds/components/BillingIllustration/art/credits-art.d.ts +2 -0
  462. package/dist/src/ds/components/BillingIllustration/art/plan-art.d.ts +5 -0
  463. package/dist/src/ds/components/BillingIllustration/billing-illustration.d.ts +1 -1
  464. package/dist/src/ds/components/CodeEditor/code-editor.d.ts +4 -0
  465. package/dist/src/ds/components/Combobox/combobox-parts.d.ts +1 -1
  466. package/dist/src/ds/components/Select/select.d.ts +5 -1
  467. package/dist/style.css +76 -4
  468. package/dist/{time-picker-CyvG-fwX.cjs → time-picker-BGtAkRRp.cjs} +2 -2
  469. package/dist/{time-picker-CyvG-fwX.cjs.map → time-picker-BGtAkRRp.cjs.map} +1 -1
  470. package/dist/{time-picker-Bzdboi4W.js → time-picker-D1VsACkg.js} +2 -2
  471. package/dist/{time-picker-Bzdboi4W.js.map → time-picker-D1VsACkg.js.map} +1 -1
  472. package/dist/{tool-approval-meJYp8az.js → tool-approval-CW6YjYlc.js} +2 -2
  473. package/dist/{tool-approval-meJYp8az.js.map → tool-approval-CW6YjYlc.js.map} +1 -1
  474. package/dist/{tool-approval-tRkskd9l.cjs → tool-approval-DNw_9w1C.cjs} +2 -2
  475. package/dist/{tool-approval-tRkskd9l.cjs.map → tool-approval-DNw_9w1C.cjs.map} +1 -1
  476. package/dist/{tool-call-arguments-D4D9tT7-.cjs → tool-call-arguments-BdHtc5O4.cjs} +2 -2
  477. package/dist/{tool-call-arguments-D4D9tT7-.cjs.map → tool-call-arguments-BdHtc5O4.cjs.map} +1 -1
  478. package/dist/{tool-call-arguments-CyKLhuQC.js → tool-call-arguments-CByjFWnk.js} +2 -2
  479. package/dist/{tool-call-arguments-CyKLhuQC.js.map → tool-call-arguments-CByjFWnk.js.map} +1 -1
  480. package/dist/{tool-card-D9jh-XXM.cjs → tool-card-DULALXIR.cjs} +2 -2
  481. package/dist/{tool-card-D9jh-XXM.cjs.map → tool-card-DULALXIR.cjs.map} +1 -1
  482. package/dist/{tool-card-B7s_wQuV.js → tool-card-DyZaGWgD.js} +2 -2
  483. package/dist/{tool-card-B7s_wQuV.js.map → tool-card-DyZaGWgD.js.map} +1 -1
  484. package/dist/{trace-filters-tC2TkI42.cjs → trace-filters-BtyiQq7Y.cjs} +9 -5
  485. package/dist/trace-filters-BtyiQq7Y.cjs.map +1 -0
  486. package/dist/{trace-filters-D1Cs5f24.js → trace-filters-DXW-RdDz.js} +10 -7
  487. package/dist/trace-filters-DXW-RdDz.js.map +1 -0
  488. package/dist/{traces-data-list-SpVFLEy8.js → traces-data-list-DgmSuEKb.js} +4 -4
  489. package/dist/{traces-data-list-SpVFLEy8.js.map → traces-data-list-DgmSuEKb.js.map} +1 -1
  490. package/dist/{use-workflow-graph-runtime-B0k2hrMc.cjs → use-workflow-graph-runtime-CWgTtW-I.cjs} +2 -2
  491. package/dist/{use-workflow-graph-runtime-B0k2hrMc.cjs.map → use-workflow-graph-runtime-CWgTtW-I.cjs.map} +1 -1
  492. package/dist/{use-workflow-graph-runtime-DiiAs2oN.js → use-workflow-graph-runtime-vYcO5MFZ.js} +2 -2
  493. package/dist/{use-workflow-graph-runtime-DiiAs2oN.js.map → use-workflow-graph-runtime-vYcO5MFZ.js.map} +1 -1
  494. package/dist/{workflow-code-dialog-content-yV6Lecry.cjs → workflow-code-dialog-content-BeB3jC3z.cjs} +2 -2
  495. package/dist/{workflow-code-dialog-content-yV6Lecry.cjs.map → workflow-code-dialog-content-BeB3jC3z.cjs.map} +1 -1
  496. package/dist/{workflow-code-dialog-content-lRHRkDdW.js → workflow-code-dialog-content-BpWrCzH0.js} +2 -2
  497. package/dist/{workflow-code-dialog-content-lRHRkDdW.js.map → workflow-code-dialog-content-BpWrCzH0.js.map} +1 -1
  498. package/dist/{workflow-data-edge-view-DadIXKjI.cjs → workflow-data-edge-view-CYsZxUHx.cjs} +2 -2
  499. package/dist/{workflow-data-edge-view-DadIXKjI.cjs.map → workflow-data-edge-view-CYsZxUHx.cjs.map} +1 -1
  500. package/dist/{workflow-data-edge-view-BcLEbr1i.js → workflow-data-edge-view-Cqbhavjw.js} +2 -2
  501. package/dist/{workflow-data-edge-view-BcLEbr1i.js.map → workflow-data-edge-view-Cqbhavjw.js.map} +1 -1
  502. package/dist/{workflow-edge-data-button-AwaLTE7H.js → workflow-edge-data-button-BPUmnY9J.js} +2 -2
  503. package/dist/{workflow-edge-data-button-AwaLTE7H.js.map → workflow-edge-data-button-BPUmnY9J.js.map} +1 -1
  504. package/dist/{workflow-edge-data-button-B4_tt1pL.cjs → workflow-edge-data-button-DinmgZoJ.cjs} +2 -2
  505. package/dist/{workflow-edge-data-button-B4_tt1pL.cjs.map → workflow-edge-data-button-DinmgZoJ.cjs.map} +1 -1
  506. package/package.json +8 -8
  507. package/dist/code-editor-CbyCb7CW.cjs.map +0 -1
  508. package/dist/code-editor-DOv4jc-0.js.map +0 -1
  509. package/dist/combobox-BCoCVZHs.js.map +0 -1
  510. package/dist/combobox-DbZAWh8q.cjs.map +0 -1
  511. package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js +0 -52
  512. package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js.map +0 -1
  513. package/dist/domains/traces/hooks/use-trace-filter-persistence.d.ts +0 -2
  514. package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +0 -48
  515. package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js.map +0 -1
  516. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +0 -373
  517. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js.map +0 -1
  518. package/dist/domains/traces/hooks/use-trace-url-state.d.ts +0 -2
  519. package/dist/domains/traces/hooks/use-trace-url-state.es.js +0 -369
  520. package/dist/domains/traces/hooks/use-trace-url-state.es.js.map +0 -1
  521. package/dist/select-7rYaECQf.js.map +0 -1
  522. package/dist/select-A3AFKLd9.cjs.map +0 -1
  523. package/dist/settings-row-m_4gDCwS.cjs.map +0 -1
  524. package/dist/settings-row-yuQjwWTl.js.map +0 -1
  525. package/dist/src/domains/traces/hooks/use-trace-filter-persistence.d.ts +0 -22
  526. package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +0 -83
  527. package/dist/trace-filters-D1Cs5f24.js.map +0 -1
  528. package/dist/trace-filters-tC2TkI42.cjs.map +0 -1
@@ -3,7 +3,7 @@
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const code = require('./code-CUOlhM4J.cjs');
5
5
  const copyButton = require('./copy-button-BC02oZJo.cjs');
6
- const select = require('./select-A3AFKLd9.cjs');
6
+ const select = require('./select-BqHt-fOI.cjs');
7
7
  const tabsList = require('./tabs-list-BTRYiT_o.cjs');
8
8
  const tabsRoot = require('./tabs-root-sOhEgFZ-.cjs');
9
9
  const tabsTab = require('./tabs-tab-B0W25Dm2.cjs');
@@ -86,4 +86,4 @@ function CodeBlock({
86
86
  }
87
87
 
88
88
  exports.CodeBlock = CodeBlock;
89
- //# sourceMappingURL=code-block-CAV4Flrx.cjs.map
89
+ //# sourceMappingURL=code-block-BSJzgBt1.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-block-CAV4Flrx.cjs","sources":["../src/ds/components/CodeBlock/code-block.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { Code } from '../Code/code';\nimport { CopyButton } from '../CopyButton/copy-button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../Select/select';\nimport { TabList } from '../Tabs/tabs-list';\nimport { Tabs } from '../Tabs/tabs-root';\nimport { Tab } from '../Tabs/tabs-tab';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type CodeBlockSelector = 'select' | 'tabs';\n\nexport type CodeBlockOverflow = 'wrap' | 'scroll';\n\nexport interface CodeBlockOption {\n label: string;\n value: string;\n}\n\nexport interface CodeBlockProps {\n code: string;\n options?: CodeBlockOption[];\n value?: string;\n onValueChange?: (value: string) => void;\n selector?: CodeBlockSelector;\n fileName?: string;\n lang?: string;\n /** `wrap` (default) breaks long lines — best for commands and snippets.\n * `scroll` preserves columns behind a horizontal scroll — best for source code. */\n overflow?: CodeBlockOverflow;\n copyMessage?: string;\n copyTooltip?: string;\n actions?: ReactNode;\n className?: string;\n}\n\nexport function CodeBlock({\n code,\n options,\n value,\n onValueChange,\n selector = 'select',\n fileName,\n lang,\n overflow = 'wrap',\n copyMessage,\n copyTooltip,\n actions,\n className,\n}: CodeBlockProps) {\n const hasOptions = options && options.length > 0;\n const useTabs = hasOptions && selector === 'tabs';\n const useSelect = hasOptions && selector === 'select';\n const firstOption = options?.[0];\n const activeValue = value ?? firstOption?.value;\n\n return (\n <figure\n // A scrolling `pre` still reports its longest line as an intrinsic width, which\n // grows every ancestor; containment keeps the block inside the width it is given.\n className={cn(\n 'group relative flex w-full flex-col overflow-hidden rounded-2xl border border-border bg-background [contain:inline-size]',\n className,\n )}\n >\n {useTabs && firstOption && (\n <Tabs defaultTab={firstOption.value} value={activeValue} onValueChange={onValueChange ?? (() => {})}>\n <div className=\"flex items-stretch\">\n <div className=\"min-w-0 flex-1\">\n <TabList>\n {options.map(opt => (\n <Tab key={opt.value} value={opt.value}>\n {opt.label}\n </Tab>\n ))}\n </TabList>\n </div>\n {actions && <div className=\"flex shrink-0 items-center border-b border-border pr-2 pl-3\">{actions}</div>}\n </div>\n </Tabs>\n )}\n\n {useSelect && options && (\n <div className=\"flex items-center border-b border-border px-2 py-1.5\">\n <Select value={activeValue} onValueChange={onValueChange}>\n <SelectTrigger size=\"sm\" variant=\"ghost\" className=\"w-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map(opt => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {actions && <div className=\"ml-auto flex items-center\">{actions}</div>}\n </div>\n )}\n\n {!hasOptions && fileName && (\n <div className=\"flex items-center border-b border-border px-4 py-2\">\n <figcaption className=\"font-mono text-caption text-muted-foreground\">{fileName}</figcaption>\n {actions && <div className=\"ml-auto flex items-center\">{actions}</div>}\n </div>\n )}\n\n {!hasOptions && !fileName && actions && (\n <div className=\"flex items-center justify-end border-b border-border px-2 py-1.5\">{actions}</div>\n )}\n\n <div className=\"relative\">\n <Code\n code={code}\n lang={lang}\n className={cn(\n 'px-4 py-3 font-mono text-caption text-foreground',\n overflow === 'scroll' ? 'overflow-x-auto whitespace-pre' : 'break-all whitespace-pre-wrap',\n )}\n />\n <CopyButton\n content={code}\n copyMessage={copyMessage}\n tooltip={copyTooltip}\n size=\"sm\"\n className={cn(\n 'absolute top-2 right-2 opacity-100 group-focus-within:opacity-100 group-hover:opacity-100 pointer-fine:opacity-0',\n transitions.opacity,\n )}\n />\n </div>\n </figure>\n );\n}\n"],"names":["code","jsxs","cn","jsx","Tabs","TabList","Tab","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Code","CopyButton","transitions"],"mappings":"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"}
1
+ {"version":3,"file":"code-block-BSJzgBt1.cjs","sources":["../src/ds/components/CodeBlock/code-block.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { Code } from '../Code/code';\nimport { CopyButton } from '../CopyButton/copy-button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../Select/select';\nimport { TabList } from '../Tabs/tabs-list';\nimport { Tabs } from '../Tabs/tabs-root';\nimport { Tab } from '../Tabs/tabs-tab';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type CodeBlockSelector = 'select' | 'tabs';\n\nexport type CodeBlockOverflow = 'wrap' | 'scroll';\n\nexport interface CodeBlockOption {\n label: string;\n value: string;\n}\n\nexport interface CodeBlockProps {\n code: string;\n options?: CodeBlockOption[];\n value?: string;\n onValueChange?: (value: string) => void;\n selector?: CodeBlockSelector;\n fileName?: string;\n lang?: string;\n /** `wrap` (default) breaks long lines — best for commands and snippets.\n * `scroll` preserves columns behind a horizontal scroll — best for source code. */\n overflow?: CodeBlockOverflow;\n copyMessage?: string;\n copyTooltip?: string;\n actions?: ReactNode;\n className?: string;\n}\n\nexport function CodeBlock({\n code,\n options,\n value,\n onValueChange,\n selector = 'select',\n fileName,\n lang,\n overflow = 'wrap',\n copyMessage,\n copyTooltip,\n actions,\n className,\n}: CodeBlockProps) {\n const hasOptions = options && options.length > 0;\n const useTabs = hasOptions && selector === 'tabs';\n const useSelect = hasOptions && selector === 'select';\n const firstOption = options?.[0];\n const activeValue = value ?? firstOption?.value;\n\n return (\n <figure\n // A scrolling `pre` still reports its longest line as an intrinsic width, which\n // grows every ancestor; containment keeps the block inside the width it is given.\n className={cn(\n 'group relative flex w-full flex-col overflow-hidden rounded-2xl border border-border bg-background [contain:inline-size]',\n className,\n )}\n >\n {useTabs && firstOption && (\n <Tabs defaultTab={firstOption.value} value={activeValue} onValueChange={onValueChange ?? (() => {})}>\n <div className=\"flex items-stretch\">\n <div className=\"min-w-0 flex-1\">\n <TabList>\n {options.map(opt => (\n <Tab key={opt.value} value={opt.value}>\n {opt.label}\n </Tab>\n ))}\n </TabList>\n </div>\n {actions && <div className=\"flex shrink-0 items-center border-b border-border pr-2 pl-3\">{actions}</div>}\n </div>\n </Tabs>\n )}\n\n {useSelect && options && (\n <div className=\"flex items-center border-b border-border px-2 py-1.5\">\n <Select value={activeValue} onValueChange={onValueChange}>\n <SelectTrigger size=\"sm\" variant=\"ghost\" className=\"w-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map(opt => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {actions && <div className=\"ml-auto flex items-center\">{actions}</div>}\n </div>\n )}\n\n {!hasOptions && fileName && (\n <div className=\"flex items-center border-b border-border px-4 py-2\">\n <figcaption className=\"font-mono text-caption text-muted-foreground\">{fileName}</figcaption>\n {actions && <div className=\"ml-auto flex items-center\">{actions}</div>}\n </div>\n )}\n\n {!hasOptions && !fileName && actions && (\n <div className=\"flex items-center justify-end border-b border-border px-2 py-1.5\">{actions}</div>\n )}\n\n <div className=\"relative\">\n <Code\n code={code}\n lang={lang}\n className={cn(\n 'px-4 py-3 font-mono text-caption text-foreground',\n overflow === 'scroll' ? 'overflow-x-auto whitespace-pre' : 'break-all whitespace-pre-wrap',\n )}\n />\n <CopyButton\n content={code}\n copyMessage={copyMessage}\n tooltip={copyTooltip}\n size=\"sm\"\n className={cn(\n 'absolute top-2 right-2 opacity-100 group-focus-within:opacity-100 group-hover:opacity-100 pointer-fine:opacity-0',\n transitions.opacity,\n )}\n />\n </div>\n </figure>\n );\n}\n"],"names":["code","jsxs","cn","jsx","Tabs","TabList","Tab","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Code","CopyButton","transitions"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { C as Code } from './code-CsHrVTpJ.js';
3
3
  import { C as CopyButton } from './copy-button-B_i9lwFJ.js';
4
- import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from './select-7rYaECQf.js';
4
+ import { S as Select, e as SelectTrigger, f as SelectValue, a as SelectContent, c as SelectItem } from './select-CCpQUIEg.js';
5
5
  import { T as TabList } from './tabs-list-BCnrYcX1.js';
6
6
  import { T as Tabs } from './tabs-root-CI7WQrJF.js';
7
7
  import { T as Tab } from './tabs-tab-CkLyKrL0.js';
@@ -84,4 +84,4 @@ function CodeBlock({
84
84
  }
85
85
 
86
86
  export { CodeBlock as C };
87
- //# sourceMappingURL=code-block-BB-5HSl3.js.map
87
+ //# sourceMappingURL=code-block-JWCkGm3Q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-block-BB-5HSl3.js","sources":["../src/ds/components/CodeBlock/code-block.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { Code } from '../Code/code';\nimport { CopyButton } from '../CopyButton/copy-button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../Select/select';\nimport { TabList } from '../Tabs/tabs-list';\nimport { Tabs } from '../Tabs/tabs-root';\nimport { Tab } from '../Tabs/tabs-tab';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type CodeBlockSelector = 'select' | 'tabs';\n\nexport type CodeBlockOverflow = 'wrap' | 'scroll';\n\nexport interface CodeBlockOption {\n label: string;\n value: string;\n}\n\nexport interface CodeBlockProps {\n code: string;\n options?: CodeBlockOption[];\n value?: string;\n onValueChange?: (value: string) => void;\n selector?: CodeBlockSelector;\n fileName?: string;\n lang?: string;\n /** `wrap` (default) breaks long lines — best for commands and snippets.\n * `scroll` preserves columns behind a horizontal scroll — best for source code. */\n overflow?: CodeBlockOverflow;\n copyMessage?: string;\n copyTooltip?: string;\n actions?: ReactNode;\n className?: string;\n}\n\nexport function CodeBlock({\n code,\n options,\n value,\n onValueChange,\n selector = 'select',\n fileName,\n lang,\n overflow = 'wrap',\n copyMessage,\n copyTooltip,\n actions,\n className,\n}: CodeBlockProps) {\n const hasOptions = options && options.length > 0;\n const useTabs = hasOptions && selector === 'tabs';\n const useSelect = hasOptions && selector === 'select';\n const firstOption = options?.[0];\n const activeValue = value ?? firstOption?.value;\n\n return (\n <figure\n // A scrolling `pre` still reports its longest line as an intrinsic width, which\n // grows every ancestor; containment keeps the block inside the width it is given.\n className={cn(\n 'group relative flex w-full flex-col overflow-hidden rounded-2xl border border-border bg-background [contain:inline-size]',\n className,\n )}\n >\n {useTabs && firstOption && (\n <Tabs defaultTab={firstOption.value} value={activeValue} onValueChange={onValueChange ?? (() => {})}>\n <div className=\"flex items-stretch\">\n <div className=\"min-w-0 flex-1\">\n <TabList>\n {options.map(opt => (\n <Tab key={opt.value} value={opt.value}>\n {opt.label}\n </Tab>\n ))}\n </TabList>\n </div>\n {actions && <div className=\"flex shrink-0 items-center border-b border-border pr-2 pl-3\">{actions}</div>}\n </div>\n </Tabs>\n )}\n\n {useSelect && options && (\n <div className=\"flex items-center border-b border-border px-2 py-1.5\">\n <Select value={activeValue} onValueChange={onValueChange}>\n <SelectTrigger size=\"sm\" variant=\"ghost\" className=\"w-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map(opt => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {actions && <div className=\"ml-auto flex items-center\">{actions}</div>}\n </div>\n )}\n\n {!hasOptions && fileName && (\n <div className=\"flex items-center border-b border-border px-4 py-2\">\n <figcaption className=\"font-mono text-caption text-muted-foreground\">{fileName}</figcaption>\n {actions && <div className=\"ml-auto flex items-center\">{actions}</div>}\n </div>\n )}\n\n {!hasOptions && !fileName && actions && (\n <div className=\"flex items-center justify-end border-b border-border px-2 py-1.5\">{actions}</div>\n )}\n\n <div className=\"relative\">\n <Code\n code={code}\n lang={lang}\n className={cn(\n 'px-4 py-3 font-mono text-caption text-foreground',\n overflow === 'scroll' ? 'overflow-x-auto whitespace-pre' : 'break-all whitespace-pre-wrap',\n )}\n />\n <CopyButton\n content={code}\n copyMessage={copyMessage}\n tooltip={copyTooltip}\n size=\"sm\"\n className={cn(\n 'absolute top-2 right-2 opacity-100 group-focus-within:opacity-100 group-hover:opacity-100 pointer-fine:opacity-0',\n transitions.opacity,\n )}\n />\n </div>\n </figure>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-block-JWCkGm3Q.js","sources":["../src/ds/components/CodeBlock/code-block.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { Code } from '../Code/code';\nimport { CopyButton } from '../CopyButton/copy-button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../Select/select';\nimport { TabList } from '../Tabs/tabs-list';\nimport { Tabs } from '../Tabs/tabs-root';\nimport { Tab } from '../Tabs/tabs-tab';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type CodeBlockSelector = 'select' | 'tabs';\n\nexport type CodeBlockOverflow = 'wrap' | 'scroll';\n\nexport interface CodeBlockOption {\n label: string;\n value: string;\n}\n\nexport interface CodeBlockProps {\n code: string;\n options?: CodeBlockOption[];\n value?: string;\n onValueChange?: (value: string) => void;\n selector?: CodeBlockSelector;\n fileName?: string;\n lang?: string;\n /** `wrap` (default) breaks long lines — best for commands and snippets.\n * `scroll` preserves columns behind a horizontal scroll — best for source code. */\n overflow?: CodeBlockOverflow;\n copyMessage?: string;\n copyTooltip?: string;\n actions?: ReactNode;\n className?: string;\n}\n\nexport function CodeBlock({\n code,\n options,\n value,\n onValueChange,\n selector = 'select',\n fileName,\n lang,\n overflow = 'wrap',\n copyMessage,\n copyTooltip,\n actions,\n className,\n}: CodeBlockProps) {\n const hasOptions = options && options.length > 0;\n const useTabs = hasOptions && selector === 'tabs';\n const useSelect = hasOptions && selector === 'select';\n const firstOption = options?.[0];\n const activeValue = value ?? firstOption?.value;\n\n return (\n <figure\n // A scrolling `pre` still reports its longest line as an intrinsic width, which\n // grows every ancestor; containment keeps the block inside the width it is given.\n className={cn(\n 'group relative flex w-full flex-col overflow-hidden rounded-2xl border border-border bg-background [contain:inline-size]',\n className,\n )}\n >\n {useTabs && firstOption && (\n <Tabs defaultTab={firstOption.value} value={activeValue} onValueChange={onValueChange ?? (() => {})}>\n <div className=\"flex items-stretch\">\n <div className=\"min-w-0 flex-1\">\n <TabList>\n {options.map(opt => (\n <Tab key={opt.value} value={opt.value}>\n {opt.label}\n </Tab>\n ))}\n </TabList>\n </div>\n {actions && <div className=\"flex shrink-0 items-center border-b border-border pr-2 pl-3\">{actions}</div>}\n </div>\n </Tabs>\n )}\n\n {useSelect && options && (\n <div className=\"flex items-center border-b border-border px-2 py-1.5\">\n <Select value={activeValue} onValueChange={onValueChange}>\n <SelectTrigger size=\"sm\" variant=\"ghost\" className=\"w-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {options.map(opt => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {actions && <div className=\"ml-auto flex items-center\">{actions}</div>}\n </div>\n )}\n\n {!hasOptions && fileName && (\n <div className=\"flex items-center border-b border-border px-4 py-2\">\n <figcaption className=\"font-mono text-caption text-muted-foreground\">{fileName}</figcaption>\n {actions && <div className=\"ml-auto flex items-center\">{actions}</div>}\n </div>\n )}\n\n {!hasOptions && !fileName && actions && (\n <div className=\"flex items-center justify-end border-b border-border px-2 py-1.5\">{actions}</div>\n )}\n\n <div className=\"relative\">\n <Code\n code={code}\n lang={lang}\n className={cn(\n 'px-4 py-3 font-mono text-caption text-foreground',\n overflow === 'scroll' ? 'overflow-x-auto whitespace-pre' : 'break-all whitespace-pre-wrap',\n )}\n />\n <CopyButton\n content={code}\n copyMessage={copyMessage}\n tooltip={copyTooltip}\n size=\"sm\"\n className={cn(\n 'absolute top-2 right-2 opacity-100 group-focus-within:opacity-100 group-hover:opacity-100 pointer-fine:opacity-0',\n transitions.opacity,\n )}\n />\n </div>\n </figure>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -8,12 +8,16 @@ const state = require('@codemirror/state');
8
8
  const view = require('@codemirror/view');
9
9
  const CodeMirror = require('@uiw/react-codemirror');
10
10
  const index = require('./index-BM43yKX5.cjs');
11
+ const lucideReact = require('lucide-react');
11
12
  const React = require('react');
12
13
  const highlight = require('./highlight-DfnRU-Am.cjs');
13
14
  const autocomplete = require('@codemirror/autocomplete');
15
+ const Button = require('./Button-C4I05uT4.cjs');
14
16
  const copyButton = require('./copy-button-BC02oZJo.cjs');
15
17
  const fieldControlAria = require('./field-control-aria-WzMGs0A4.cjs');
16
18
  const primitives_formElement = require('./primitives/form-element.cjs.js');
19
+ const utils_formatting = require('./utils/formatting.cjs.js');
20
+ const toast = require('./toast-DxKdVSyw.cjs');
17
21
  const utils_cn = require('./cn-DlOJCxrS.cjs');
18
22
 
19
23
  function legacy(parser) {
@@ -304,6 +308,7 @@ const CodeEditor = React.forwardRef(
304
308
  value,
305
309
  onChange,
306
310
  showCopyButton = true,
311
+ showFormatButton = false,
307
312
  className,
308
313
  language = "json",
309
314
  font = "mono",
@@ -330,6 +335,14 @@ const CodeEditor = React.forwardRef(
330
335
  const ariaInvalid = ariaInvalidProp ?? fieldAria["aria-invalid"];
331
336
  const theme = useCodemirrorTheme(font);
332
337
  const formattedCode = data ? JSON.stringify(data, null, 2) : value ?? "";
338
+ const canFormat = showFormatButton && language === "json" && editable !== false && Boolean(onChange);
339
+ const handleFormat = async () => {
340
+ try {
341
+ onChange?.((await utils_formatting.formatJSON(formattedCode)).trimEnd());
342
+ } catch {
343
+ toast.toast.error("Can’t format: the JSON is invalid");
344
+ }
345
+ };
333
346
  const extensions = React.useMemo(() => {
334
347
  const contentAttributes = { "aria-label": ariaLabel };
335
348
  if (controlId) contentAttributes.id = controlId;
@@ -368,7 +381,10 @@ const CodeEditor = React.forwardRef(
368
381
  ariaInvalid
369
382
  ]);
370
383
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils_cn.cn(codeEditorVariants({ variant }), className), ...props, children: [
371
- showCopyButton && /* @__PURE__ */ jsxRuntime.jsx(copyButton.CopyButton, { content: formattedCode, className: "absolute top-2 right-2 z-20" }),
384
+ (showCopyButton || canFormat) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute top-2 right-2 z-20 flex gap-1", children: [
385
+ canFormat && /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { type: "button", size: "sm", tooltip: "Format JSON", "aria-label": "Format JSON", onClick: handleFormat, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Braces, {}) }),
386
+ showCopyButton && /* @__PURE__ */ jsxRuntime.jsx(copyButton.CopyButton, { content: formattedCode })
387
+ ] }),
372
388
  /* @__PURE__ */ jsxRuntime.jsx(
373
389
  CodeMirror,
374
390
  {
@@ -397,4 +413,4 @@ exports.createVariableAutocomplete = createVariableAutocomplete;
397
413
  exports.flattenSchemaToVariables = flattenSchemaToVariables;
398
414
  exports.useCodemirrorTheme = useCodemirrorTheme;
399
415
  exports.variableHighlight = variableHighlight;
400
- //# sourceMappingURL=code-editor-CbyCb7CW.cjs.map
416
+ //# sourceMappingURL=code-editor-4ukTuvqG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-editor-4ukTuvqG.cjs","sources":["../src/ds/components/CodeEditor/code-languages.ts","../src/ds/components/CodeEditor/schema-to-variables.ts","../src/ds/components/CodeEditor/variable-autocomplete-extension.ts","../src/ds/components/CodeEditor/variable-highlight-extension.ts","../src/ds/components/CodeEditor/code-editor.tsx"],"sourcesContent":["import { LanguageDescription, LanguageSupport, StreamLanguage } from '@codemirror/language';\n\nfunction legacy(parser: Parameters<typeof StreamLanguage.define>[0]) {\n return new LanguageSupport(StreamLanguage.define(parser));\n}\n\n/**\n * A minimal subset of CodeMirror language descriptions used for fenced code\n * blocks inside markdown. Mirrors the relevant entries from\n * `@codemirror/language-data` but only the languages we actually support, so\n * bundlers don't have to emit a chunk for every known language.\n */\nexport const codeLanguages = [\n LanguageDescription.of({\n name: 'JavaScript',\n alias: ['ecmascript', 'js', 'node'],\n extensions: ['js', 'mjs', 'cjs'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript());\n },\n }),\n LanguageDescription.of({\n name: 'JSON',\n alias: ['json5'],\n extensions: ['json', 'map'],\n load() {\n return import('@codemirror/lang-json').then(m => m.json());\n },\n }),\n LanguageDescription.of({\n name: 'JSX',\n extensions: ['jsx'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript({ jsx: true }));\n },\n }),\n LanguageDescription.of({\n name: 'Markdown',\n extensions: ['md', 'markdown', 'mkd'],\n load() {\n return import('@codemirror/lang-markdown').then(m => m.markdown());\n },\n }),\n LanguageDescription.of({\n name: 'TSX',\n extensions: ['tsx'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript({ jsx: true, typescript: true }));\n },\n }),\n LanguageDescription.of({\n name: 'TypeScript',\n alias: ['ts'],\n extensions: ['ts', 'mts', 'cts'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript({ typescript: true }));\n },\n }),\n LanguageDescription.of({\n name: 'Shell',\n alias: ['bash', 'sh', 'zsh'],\n extensions: ['sh', 'ksh', 'bash'],\n filename: /^PKGBUILD$/,\n load() {\n return import('@codemirror/legacy-modes/mode/shell').then(m => legacy(m.shell));\n },\n }),\n];\n","import type { JsonSchema, JsonSchemaProperty } from '@/lib/json-schema';\n\n/**\n * Represents a variable completion option derived from a schema\n */\nexport interface VariableCompletion {\n /** The dot-notation path (e.g., \"user.name\") */\n path: string;\n /** Display label for the autocomplete */\n label: string;\n /** Description from the schema, if available */\n description?: string;\n /** The type of the property */\n type?: string;\n}\n\n/**\n * Flattens a JSON Schema into a list of variable completions for autocomplete.\n * Recursively extracts property paths using dot-notation.\n *\n * @param schema - The JSON Schema to flatten\n * @param maxDepth - Maximum recursion depth (default: 5)\n * @returns Array of variable completions\n *\n * @example\n * ```ts\n * const schema = {\n * type: 'object',\n * properties: {\n * user: {\n * type: 'object',\n * properties: {\n * name: { type: 'string' },\n * email: { type: 'string' }\n * }\n * }\n * }\n * };\n *\n * flattenSchemaToVariables(schema);\n * // Returns:\n * // [\n * // { path: 'user', label: 'user', type: 'object' },\n * // { path: 'user.name', label: 'user.name', type: 'string' },\n * // { path: 'user.email', label: 'user.email', type: 'string' }\n * // ]\n * ```\n */\nexport function flattenSchemaToVariables(schema: JsonSchema | undefined, maxDepth = 5): VariableCompletion[] {\n if (!schema?.properties) {\n return [];\n }\n\n const results: VariableCompletion[] = [];\n\n function processProperty(property: JsonSchemaProperty, path: string, depth: number): void {\n if (depth > maxDepth) {\n return;\n }\n\n const type = Array.isArray(property.type) ? property.type.join(' | ') : property.type;\n\n results.push({\n path,\n label: path,\n description: property.description ?? property.title,\n type,\n });\n\n // Recurse into nested object properties\n if (property.properties) {\n for (const [key, nestedProperty] of Object.entries(property.properties)) {\n processProperty(nestedProperty, `${path}.${key}`, depth + 1);\n }\n }\n\n // Handle array items if they have properties (array of objects)\n if (property.items?.properties) {\n // Add a placeholder for array item access (e.g., items[0].name)\n for (const [key, itemProperty] of Object.entries(property.items.properties)) {\n processProperty(itemProperty, `${path}[].${key}`, depth + 1);\n }\n }\n }\n\n for (const [key, property] of Object.entries(schema.properties)) {\n processProperty(property, key, 1);\n }\n\n return results;\n}\n","import { autocompletion } from '@codemirror/autocomplete';\nimport type { Completion, CompletionContext, CompletionResult } from '@codemirror/autocomplete';\nimport type { Extension } from '@codemirror/state';\nimport { flattenSchemaToVariables } from './schema-to-variables';\nimport type { VariableCompletion } from './schema-to-variables';\nimport type { JsonSchema } from '@/lib/json-schema';\n\n/**\n * Creates a CodeMirror autocomplete extension for {{variable}} placeholders.\n * Triggers when the user types `{{` and shows suggestions derived from the schema.\n *\n * @param schema - JSON Schema to derive variable suggestions from\n * @returns CodeMirror Extension that provides variable autocomplete\n *\n * @example\n * ```tsx\n * const schema = {\n * type: 'object',\n * properties: {\n * user: { type: 'object', properties: { name: { type: 'string' } } }\n * }\n * };\n *\n * <CodeMirror extensions={[createVariableAutocomplete(schema)]} />\n * // Typing \"{{\" will show: user, user.name\n * ```\n */\nexport function createVariableAutocomplete(schema: JsonSchema | undefined): Extension {\n const variables = flattenSchemaToVariables(schema);\n\n return autocompletion({\n override: [createVariableCompletionSource(variables)],\n defaultKeymap: true,\n closeOnBlur: true,\n icons: false,\n });\n}\n\n/**\n * Creates a completion source function for CodeMirror's autocompletion.\n */\nexport function createVariableCompletionSource(\n variables: VariableCompletion[],\n): (context: CompletionContext) => CompletionResult | null {\n return (context: CompletionContext): CompletionResult | null => {\n // Look for {{ pattern before cursor\n const beforeCursor = context.state.sliceDoc(Math.max(0, context.pos - 50), context.pos);\n const match = beforeCursor.match(/\\{\\{([a-zA-Z0-9_.\\[\\]]*)?$/);\n\n if (!match) {\n return null;\n }\n\n // The text after {{ that we're matching against\n const prefix = match[1] ?? '';\n const startPos = context.pos - prefix.length;\n\n // Filter variables based on what the user has typed\n const filteredVariables = prefix\n ? variables.filter(v => v.path.toLowerCase().startsWith(prefix.toLowerCase()))\n : variables;\n\n if (filteredVariables.length === 0) {\n return null;\n }\n\n const completions: Completion[] = filteredVariables.map(variable => ({\n label: variable.path,\n displayLabel: variable.path,\n detail: variable.type,\n info: variable.description,\n apply: (view, completion, from, to) => {\n // Inside an existing placeholder, replace the rest of the identifier and reuse its closing }}\n const rest = view.state.sliceDoc(to);\n const identifierEnd = to + (rest.match(/^[a-zA-Z0-9_.\\[\\]]*/)?.[0].length ?? 0);\n const hasClosingBraces = view.state.sliceDoc(identifierEnd, identifierEnd + 2) === '}}';\n const end = hasClosingBraces ? identifierEnd : to;\n\n const insertText = hasClosingBraces ? completion.label : `${completion.label}}}`;\n\n view.dispatch({\n changes: { from, to: end, insert: insertText },\n selection: { anchor: from + insertText.length },\n });\n },\n }));\n\n return {\n from: startPos,\n options: completions,\n validFor: /^[a-zA-Z0-9_.\\[\\]]*$/,\n };\n };\n}\n","import type { DecorationSet, EditorView, ViewUpdate } from '@codemirror/view';\nimport { Decoration, MatchDecorator, ViewPlugin } from '@codemirror/view';\n\n/**\n * Regex pattern to match variable placeholders like {{variableName}} or {{user.name}}\n * Matches: {{ followed by a valid identifier path (with optional dot notation), then }}\n */\nexport const VARIABLE_PATTERN = /\\{\\{([a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z0-9_]*)*)\\}\\}/g;\n\nconst variableDecoration = Decoration.mark({\n class: 'cm-variable-highlight',\n});\n\nconst variableMatcher = new MatchDecorator({\n regexp: VARIABLE_PATTERN,\n decoration: () => variableDecoration,\n});\n\nconst variableHighlightPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = variableMatcher.createDeco(view);\n }\n\n update(update: ViewUpdate) {\n this.decorations = variableMatcher.updateDeco(update, this.decorations);\n }\n },\n {\n decorations: v => v.decorations,\n },\n);\n\n/**\n * CodeMirror extension that highlights {{variableName}} patterns\n * with orange color and semibold weight\n */\nexport const variableHighlight = variableHighlightPlugin;\n","import { jsonLanguage } from '@codemirror/lang-json';\nimport { markdown, markdownLanguage } from '@codemirror/lang-markdown';\nimport { syntaxHighlighting } from '@codemirror/language';\nimport { EditorState, Prec } from '@codemirror/state';\nimport type { Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport CodeMirror from '@uiw/react-codemirror';\nimport type { ReactCodeMirrorRef } from '@uiw/react-codemirror';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { Braces } from 'lucide-react';\nimport { forwardRef, useMemo } from 'react';\nimport type { HTMLAttributes } from 'react';\nimport { codeLanguages } from './code-languages';\nimport { syntaxHighlighter } from './highlight';\nimport { createVariableAutocomplete } from './variable-autocomplete-extension';\nimport { variableHighlight } from './variable-highlight-extension';\nimport { Button } from '@/ds/components/Button';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { useFieldControlAria } from '@/ds/components/Field/field-control-aria';\nimport { fieldErrorRimWithin, inputSurfaceAndFocusWithinStyle } from '@/ds/primitives/form-element';\nimport { formatJSON } from '@/lib/formatting';\nimport type { JsonSchema } from '@/lib/json-schema';\nimport { toast } from '@/lib/toast';\nimport { cn } from '@/lib/utils';\n\nexport type CodeEditorLanguage = 'json' | 'markdown';\ntype CodeEditorFont = 'body' | 'mono';\n\n/**\n * The single CodeMirror theme for every editor. Chrome and syntax colors come\n * from CSS variables that flip under `.dark`, and syntax roles use the same\n * `syntaxHighlighter` as the read-only `<Code>` viewer, so editors and viewers\n * look identical in both modes.\n */\nfunction buildCodemirrorTheme(font: CodeEditorFont): Extension {\n const editorTheme = EditorView.theme({\n '&': {\n backgroundColor: 'transparent',\n color: 'var(--foreground)',\n fontSize: 'var(--text-body-sm)',\n },\n '&.cm-editor .cm-scroller': {\n fontFamily: `var(--font-${font})`,\n },\n '.cm-gutters': {\n backgroundColor: 'transparent',\n color: 'var(--placeholder)',\n borderRight: 'none',\n },\n '.cm-content': {\n color: 'var(--foreground)',\n caretColor: 'var(--foreground)',\n },\n '.cm-activeLine': {\n backgroundColor: 'transparent',\n },\n '.cm-lineNumbers .cm-gutterElement': {\n color: 'var(--placeholder)',\n },\n '.cm-activeLineGutter': {\n backgroundColor: 'transparent',\n color: 'var(--muted-foreground)',\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: 'var(--foreground)',\n },\n '&.cm-focused .cm-selectionBackground, & .cm-line::selection, & .cm-selectionLayer .cm-selectionBackground, .cm-content ::selection':\n {\n background: 'var(--info-edge) !important',\n },\n '.cm-tooltip-autocomplete': {\n backgroundColor: 'var(--background)',\n border: '1px solid var(--border)',\n borderRadius: '6px',\n boxShadow: 'var(--elevation-overlay)',\n },\n '.cm-tooltip-autocomplete > ul': {\n fontFamily: 'var(--font-mono)',\n },\n '.cm-completionLabel': {\n color: 'var(--foreground)',\n },\n '.cm-completionDetail': {\n color: 'var(--muted-foreground)',\n fontSize: 'var(--text-caption)',\n marginLeft: 'auto',\n paddingLeft: '12px',\n },\n '.cm-completionInfo': {\n backgroundColor: 'var(--background)',\n border: '1px solid var(--border)',\n color: 'var(--muted-foreground)',\n padding: '8px 12px',\n },\n '.cm-completionIcon': {\n display: 'none',\n },\n 'ul.cm-completionList li[aria-selected]': {\n backgroundColor: 'var(--fill-hover)',\n color: 'var(--foreground)',\n },\n '.cm-line .cm-variable-highlight': {\n color: 'var(--warning-foreground) !important',\n fontWeight: '500',\n },\n });\n\n return [editorTheme, syntaxHighlighting(syntaxHighlighter)];\n}\n\n// eslint-disable-next-line react-refresh/only-export-components -- shared hook intentionally co-located with the editor it themes\nexport const useCodemirrorTheme = (font: CodeEditorFont = 'mono'): Extension => {\n return useMemo(() => buildCodemirrorTheme(font), [font]);\n};\n\nconst codeEditorVariants = cva(\n cn(\n 'relative overflow-hidden font-mono outline-hidden focus-within:outline-hidden focus:outline-hidden',\n 'transition-colors duration-normal ease-out-custom',\n ),\n {\n variants: {\n variant: {\n default: cn(inputSurfaceAndFocusWithinStyle, 'rounded-md p-1', fieldErrorRimWithin),\n embedded: 'rounded-none border-none bg-transparent p-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst editorFocusAttributes = Prec.highest(\n EditorView.editorAttributes.of({\n style: 'outline: none',\n }),\n);\n\nconst editorFocusTheme = Prec.highest(\n EditorView.theme({\n '&': {\n outline: 'none',\n },\n '&.cm-focused': {\n outline: 'none',\n },\n '.cm-scroller': {\n outline: 'none',\n },\n '.cm-content': {\n outline: 'none',\n },\n '.cm-content:focus': {\n outline: 'none',\n },\n }),\n);\n\nconst editorFocusExtensions: Extension[] = [editorFocusAttributes, editorFocusTheme];\n\ntype CodeEditorContentAttributes = {\n 'aria-label': string;\n id?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: string;\n};\n\nexport type CodeEditorProps = {\n /** Prose editors can opt into the body face; code stays monospace by default. */\n font?: CodeEditorFont;\n data?: Record<string, unknown> | Array<Record<string, unknown>>;\n value?: string;\n onChange?: (value: string) => void;\n showCopyButton?: boolean;\n /** Offers a button that rewrites the JSON with Prettier. Needs `onChange`; ignored for markdown or read-only editors. */\n showFormatButton?: boolean;\n className?: string;\n highlightVariables?: boolean;\n language?: CodeEditorLanguage;\n placeholder?: string;\n /** JSON Schema to enable variable autocomplete for {{variable}} placeholders (markdown only) */\n schema?: JsonSchema;\n autoFocus?: boolean;\n /** Show line numbers in the gutter (default: true) */\n lineNumbers?: boolean;\n /** Wrap long lines within the editor viewport (default: true) */\n lineWrapping?: boolean;\n /** When false, makes the editor read-only */\n editable?: boolean;\n} & VariantProps<typeof codeEditorVariants> &\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>;\n\nexport const CodeEditor = forwardRef<ReactCodeMirrorRef, CodeEditorProps>(\n (\n {\n data,\n value,\n onChange,\n showCopyButton = true,\n showFormatButton = false,\n className,\n language = 'json',\n font = 'mono',\n highlightVariables = false,\n placeholder,\n schema,\n autoFocus,\n lineNumbers = true,\n lineWrapping = true,\n editable,\n variant,\n id,\n 'aria-label': ariaLabelProp,\n 'aria-labelledby': ariaLabelledByProp,\n 'aria-describedby': ariaDescribedByProp,\n 'aria-invalid': ariaInvalidProp,\n ...props\n },\n ref,\n ) => {\n const fieldAria = useFieldControlAria({ 'aria-label': ariaLabelProp });\n const ariaLabel = ariaLabelProp ?? 'Code editor';\n const controlId = id ?? fieldAria.id;\n const ariaLabelledBy = ariaLabelledByProp ?? fieldAria['aria-labelledby'];\n const ariaDescribedBy = ariaDescribedByProp ?? fieldAria['aria-describedby'];\n const ariaInvalid = ariaInvalidProp ?? fieldAria['aria-invalid'];\n const theme = useCodemirrorTheme(font);\n const formattedCode = data ? JSON.stringify(data, null, 2) : (value ?? '');\n const canFormat = showFormatButton && language === 'json' && editable !== false && Boolean(onChange);\n\n const handleFormat = async () => {\n try {\n onChange?.((await formatJSON(formattedCode)).trimEnd());\n } catch {\n toast.error('Can’t format: the JSON is invalid');\n }\n };\n\n const extensions = useMemo(() => {\n const contentAttributes: CodeEditorContentAttributes = { 'aria-label': ariaLabel };\n if (controlId) contentAttributes.id = controlId;\n if (ariaLabelledBy) contentAttributes['aria-labelledby'] = ariaLabelledBy;\n if (ariaDescribedBy) contentAttributes['aria-describedby'] = ariaDescribedBy;\n if (ariaInvalid !== undefined) contentAttributes['aria-invalid'] = String(ariaInvalid);\n\n const exts: Extension[] = [...editorFocusExtensions, EditorView.contentAttributes.of(contentAttributes)];\n\n if (lineWrapping) {\n exts.push(EditorView.lineWrapping);\n }\n\n if (language === 'json') {\n exts.push(jsonLanguage);\n } else if (language === 'markdown') {\n exts.push(markdown({ base: markdownLanguage, codeLanguages }));\n }\n\n if (highlightVariables && language === 'markdown') {\n exts.push(variableHighlight);\n }\n\n if (schema && language === 'markdown') {\n exts.push(createVariableAutocomplete(schema));\n }\n\n if (editable === false) {\n exts.push(EditorState.readOnly.of(true));\n }\n\n return exts;\n }, [\n language,\n highlightVariables,\n schema,\n editable,\n lineWrapping,\n controlId,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaInvalid,\n ]);\n\n return (\n <div className={cn(codeEditorVariants({ variant }), className)} {...props}>\n {(showCopyButton || canFormat) && (\n <div className=\"absolute top-2 right-2 z-20 flex gap-1\">\n {canFormat && (\n <Button type=\"button\" size=\"sm\" tooltip=\"Format JSON\" aria-label=\"Format JSON\" onClick={handleFormat}>\n <Braces />\n </Button>\n )}\n {showCopyButton && <CopyButton content={formattedCode} />}\n </div>\n )}\n <CodeMirror\n ref={ref}\n value={formattedCode}\n theme={theme}\n extensions={extensions}\n onChange={onChange}\n editable={editable}\n aria-label={ariaLabel}\n placeholder={placeholder}\n height=\"100%\"\n style={{ height: '100%' }}\n autoFocus={autoFocus}\n basicSetup={{ lineNumbers }}\n />\n </div>\n );\n },\n);\n"],"names":["LanguageSupport","StreamLanguage","LanguageDescription","autocompletion","Decoration","MatchDecorator","ViewPlugin","EditorView","syntaxHighlighting","syntaxHighlighter","useMemo","cva","cn","inputSurfaceAndFocusWithinStyle","fieldErrorRimWithin","Prec","forwardRef","useFieldControlAria","formatJSON","toast","jsonLanguage","markdown","markdownLanguage","EditorState","jsxs","jsx","Button","Braces","CopyButton"],"mappings":"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"}
@@ -6,12 +6,16 @@ import { EditorState, Prec } from '@codemirror/state';
6
6
  import { ViewPlugin, MatchDecorator, Decoration, EditorView } from '@codemirror/view';
7
7
  import CodeMirror from '@uiw/react-codemirror';
8
8
  import { c as cva } from './index-CHS9F_Eo.js';
9
+ import { Braces } from 'lucide-react';
9
10
  import { useMemo, forwardRef } from 'react';
10
11
  import { s as syntaxHighlighter } from './highlight-CXDme3FZ.js';
11
12
  import { autocompletion } from '@codemirror/autocomplete';
13
+ import { B as Button } from './Button-D8a5EWJ5.js';
12
14
  import { C as CopyButton } from './copy-button-B_i9lwFJ.js';
13
15
  import { u as useFieldControlAria } from './field-control-aria-DB6y41tQ.js';
14
16
  import { fieldErrorRimWithin, inputSurfaceAndFocusWithinStyle } from './primitives/form-element.es.js';
17
+ import { formatJSON } from './utils/formatting.es.js';
18
+ import { t as toast } from './toast-5aQbZBbY.js';
15
19
  import { c as cn } from './cn-CQUhN5Jx.js';
16
20
 
17
21
  function legacy(parser) {
@@ -302,6 +306,7 @@ const CodeEditor = forwardRef(
302
306
  value,
303
307
  onChange,
304
308
  showCopyButton = true,
309
+ showFormatButton = false,
305
310
  className,
306
311
  language = "json",
307
312
  font = "mono",
@@ -328,6 +333,14 @@ const CodeEditor = forwardRef(
328
333
  const ariaInvalid = ariaInvalidProp ?? fieldAria["aria-invalid"];
329
334
  const theme = useCodemirrorTheme(font);
330
335
  const formattedCode = data ? JSON.stringify(data, null, 2) : value ?? "";
336
+ const canFormat = showFormatButton && language === "json" && editable !== false && Boolean(onChange);
337
+ const handleFormat = async () => {
338
+ try {
339
+ onChange?.((await formatJSON(formattedCode)).trimEnd());
340
+ } catch {
341
+ toast.error("Can’t format: the JSON is invalid");
342
+ }
343
+ };
331
344
  const extensions = useMemo(() => {
332
345
  const contentAttributes = { "aria-label": ariaLabel };
333
346
  if (controlId) contentAttributes.id = controlId;
@@ -366,7 +379,10 @@ const CodeEditor = forwardRef(
366
379
  ariaInvalid
367
380
  ]);
368
381
  return /* @__PURE__ */ jsxs("div", { className: cn(codeEditorVariants({ variant }), className), ...props, children: [
369
- showCopyButton && /* @__PURE__ */ jsx(CopyButton, { content: formattedCode, className: "absolute top-2 right-2 z-20" }),
382
+ (showCopyButton || canFormat) && /* @__PURE__ */ jsxs("div", { className: "absolute top-2 right-2 z-20 flex gap-1", children: [
383
+ canFormat && /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", tooltip: "Format JSON", "aria-label": "Format JSON", onClick: handleFormat, children: /* @__PURE__ */ jsx(Braces, {}) }),
384
+ showCopyButton && /* @__PURE__ */ jsx(CopyButton, { content: formattedCode })
385
+ ] }),
370
386
  /* @__PURE__ */ jsx(
371
387
  CodeMirror,
372
388
  {
@@ -389,4 +405,4 @@ const CodeEditor = forwardRef(
389
405
  );
390
406
 
391
407
  export { CodeEditor as C, VARIABLE_PATTERN as V, createVariableAutocomplete as a, codeLanguages as c, flattenSchemaToVariables as f, useCodemirrorTheme as u, variableHighlight as v };
392
- //# sourceMappingURL=code-editor-DOv4jc-0.js.map
408
+ //# sourceMappingURL=code-editor-8qu58Npy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-editor-8qu58Npy.js","sources":["../src/ds/components/CodeEditor/code-languages.ts","../src/ds/components/CodeEditor/schema-to-variables.ts","../src/ds/components/CodeEditor/variable-autocomplete-extension.ts","../src/ds/components/CodeEditor/variable-highlight-extension.ts","../src/ds/components/CodeEditor/code-editor.tsx"],"sourcesContent":["import { LanguageDescription, LanguageSupport, StreamLanguage } from '@codemirror/language';\n\nfunction legacy(parser: Parameters<typeof StreamLanguage.define>[0]) {\n return new LanguageSupport(StreamLanguage.define(parser));\n}\n\n/**\n * A minimal subset of CodeMirror language descriptions used for fenced code\n * blocks inside markdown. Mirrors the relevant entries from\n * `@codemirror/language-data` but only the languages we actually support, so\n * bundlers don't have to emit a chunk for every known language.\n */\nexport const codeLanguages = [\n LanguageDescription.of({\n name: 'JavaScript',\n alias: ['ecmascript', 'js', 'node'],\n extensions: ['js', 'mjs', 'cjs'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript());\n },\n }),\n LanguageDescription.of({\n name: 'JSON',\n alias: ['json5'],\n extensions: ['json', 'map'],\n load() {\n return import('@codemirror/lang-json').then(m => m.json());\n },\n }),\n LanguageDescription.of({\n name: 'JSX',\n extensions: ['jsx'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript({ jsx: true }));\n },\n }),\n LanguageDescription.of({\n name: 'Markdown',\n extensions: ['md', 'markdown', 'mkd'],\n load() {\n return import('@codemirror/lang-markdown').then(m => m.markdown());\n },\n }),\n LanguageDescription.of({\n name: 'TSX',\n extensions: ['tsx'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript({ jsx: true, typescript: true }));\n },\n }),\n LanguageDescription.of({\n name: 'TypeScript',\n alias: ['ts'],\n extensions: ['ts', 'mts', 'cts'],\n load() {\n return import('@codemirror/lang-javascript').then(m => m.javascript({ typescript: true }));\n },\n }),\n LanguageDescription.of({\n name: 'Shell',\n alias: ['bash', 'sh', 'zsh'],\n extensions: ['sh', 'ksh', 'bash'],\n filename: /^PKGBUILD$/,\n load() {\n return import('@codemirror/legacy-modes/mode/shell').then(m => legacy(m.shell));\n },\n }),\n];\n","import type { JsonSchema, JsonSchemaProperty } from '@/lib/json-schema';\n\n/**\n * Represents a variable completion option derived from a schema\n */\nexport interface VariableCompletion {\n /** The dot-notation path (e.g., \"user.name\") */\n path: string;\n /** Display label for the autocomplete */\n label: string;\n /** Description from the schema, if available */\n description?: string;\n /** The type of the property */\n type?: string;\n}\n\n/**\n * Flattens a JSON Schema into a list of variable completions for autocomplete.\n * Recursively extracts property paths using dot-notation.\n *\n * @param schema - The JSON Schema to flatten\n * @param maxDepth - Maximum recursion depth (default: 5)\n * @returns Array of variable completions\n *\n * @example\n * ```ts\n * const schema = {\n * type: 'object',\n * properties: {\n * user: {\n * type: 'object',\n * properties: {\n * name: { type: 'string' },\n * email: { type: 'string' }\n * }\n * }\n * }\n * };\n *\n * flattenSchemaToVariables(schema);\n * // Returns:\n * // [\n * // { path: 'user', label: 'user', type: 'object' },\n * // { path: 'user.name', label: 'user.name', type: 'string' },\n * // { path: 'user.email', label: 'user.email', type: 'string' }\n * // ]\n * ```\n */\nexport function flattenSchemaToVariables(schema: JsonSchema | undefined, maxDepth = 5): VariableCompletion[] {\n if (!schema?.properties) {\n return [];\n }\n\n const results: VariableCompletion[] = [];\n\n function processProperty(property: JsonSchemaProperty, path: string, depth: number): void {\n if (depth > maxDepth) {\n return;\n }\n\n const type = Array.isArray(property.type) ? property.type.join(' | ') : property.type;\n\n results.push({\n path,\n label: path,\n description: property.description ?? property.title,\n type,\n });\n\n // Recurse into nested object properties\n if (property.properties) {\n for (const [key, nestedProperty] of Object.entries(property.properties)) {\n processProperty(nestedProperty, `${path}.${key}`, depth + 1);\n }\n }\n\n // Handle array items if they have properties (array of objects)\n if (property.items?.properties) {\n // Add a placeholder for array item access (e.g., items[0].name)\n for (const [key, itemProperty] of Object.entries(property.items.properties)) {\n processProperty(itemProperty, `${path}[].${key}`, depth + 1);\n }\n }\n }\n\n for (const [key, property] of Object.entries(schema.properties)) {\n processProperty(property, key, 1);\n }\n\n return results;\n}\n","import { autocompletion } from '@codemirror/autocomplete';\nimport type { Completion, CompletionContext, CompletionResult } from '@codemirror/autocomplete';\nimport type { Extension } from '@codemirror/state';\nimport { flattenSchemaToVariables } from './schema-to-variables';\nimport type { VariableCompletion } from './schema-to-variables';\nimport type { JsonSchema } from '@/lib/json-schema';\n\n/**\n * Creates a CodeMirror autocomplete extension for {{variable}} placeholders.\n * Triggers when the user types `{{` and shows suggestions derived from the schema.\n *\n * @param schema - JSON Schema to derive variable suggestions from\n * @returns CodeMirror Extension that provides variable autocomplete\n *\n * @example\n * ```tsx\n * const schema = {\n * type: 'object',\n * properties: {\n * user: { type: 'object', properties: { name: { type: 'string' } } }\n * }\n * };\n *\n * <CodeMirror extensions={[createVariableAutocomplete(schema)]} />\n * // Typing \"{{\" will show: user, user.name\n * ```\n */\nexport function createVariableAutocomplete(schema: JsonSchema | undefined): Extension {\n const variables = flattenSchemaToVariables(schema);\n\n return autocompletion({\n override: [createVariableCompletionSource(variables)],\n defaultKeymap: true,\n closeOnBlur: true,\n icons: false,\n });\n}\n\n/**\n * Creates a completion source function for CodeMirror's autocompletion.\n */\nexport function createVariableCompletionSource(\n variables: VariableCompletion[],\n): (context: CompletionContext) => CompletionResult | null {\n return (context: CompletionContext): CompletionResult | null => {\n // Look for {{ pattern before cursor\n const beforeCursor = context.state.sliceDoc(Math.max(0, context.pos - 50), context.pos);\n const match = beforeCursor.match(/\\{\\{([a-zA-Z0-9_.\\[\\]]*)?$/);\n\n if (!match) {\n return null;\n }\n\n // The text after {{ that we're matching against\n const prefix = match[1] ?? '';\n const startPos = context.pos - prefix.length;\n\n // Filter variables based on what the user has typed\n const filteredVariables = prefix\n ? variables.filter(v => v.path.toLowerCase().startsWith(prefix.toLowerCase()))\n : variables;\n\n if (filteredVariables.length === 0) {\n return null;\n }\n\n const completions: Completion[] = filteredVariables.map(variable => ({\n label: variable.path,\n displayLabel: variable.path,\n detail: variable.type,\n info: variable.description,\n apply: (view, completion, from, to) => {\n // Inside an existing placeholder, replace the rest of the identifier and reuse its closing }}\n const rest = view.state.sliceDoc(to);\n const identifierEnd = to + (rest.match(/^[a-zA-Z0-9_.\\[\\]]*/)?.[0].length ?? 0);\n const hasClosingBraces = view.state.sliceDoc(identifierEnd, identifierEnd + 2) === '}}';\n const end = hasClosingBraces ? identifierEnd : to;\n\n const insertText = hasClosingBraces ? completion.label : `${completion.label}}}`;\n\n view.dispatch({\n changes: { from, to: end, insert: insertText },\n selection: { anchor: from + insertText.length },\n });\n },\n }));\n\n return {\n from: startPos,\n options: completions,\n validFor: /^[a-zA-Z0-9_.\\[\\]]*$/,\n };\n };\n}\n","import type { DecorationSet, EditorView, ViewUpdate } from '@codemirror/view';\nimport { Decoration, MatchDecorator, ViewPlugin } from '@codemirror/view';\n\n/**\n * Regex pattern to match variable placeholders like {{variableName}} or {{user.name}}\n * Matches: {{ followed by a valid identifier path (with optional dot notation), then }}\n */\nexport const VARIABLE_PATTERN = /\\{\\{([a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z0-9_]*)*)\\}\\}/g;\n\nconst variableDecoration = Decoration.mark({\n class: 'cm-variable-highlight',\n});\n\nconst variableMatcher = new MatchDecorator({\n regexp: VARIABLE_PATTERN,\n decoration: () => variableDecoration,\n});\n\nconst variableHighlightPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = variableMatcher.createDeco(view);\n }\n\n update(update: ViewUpdate) {\n this.decorations = variableMatcher.updateDeco(update, this.decorations);\n }\n },\n {\n decorations: v => v.decorations,\n },\n);\n\n/**\n * CodeMirror extension that highlights {{variableName}} patterns\n * with orange color and semibold weight\n */\nexport const variableHighlight = variableHighlightPlugin;\n","import { jsonLanguage } from '@codemirror/lang-json';\nimport { markdown, markdownLanguage } from '@codemirror/lang-markdown';\nimport { syntaxHighlighting } from '@codemirror/language';\nimport { EditorState, Prec } from '@codemirror/state';\nimport type { Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport CodeMirror from '@uiw/react-codemirror';\nimport type { ReactCodeMirrorRef } from '@uiw/react-codemirror';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { Braces } from 'lucide-react';\nimport { forwardRef, useMemo } from 'react';\nimport type { HTMLAttributes } from 'react';\nimport { codeLanguages } from './code-languages';\nimport { syntaxHighlighter } from './highlight';\nimport { createVariableAutocomplete } from './variable-autocomplete-extension';\nimport { variableHighlight } from './variable-highlight-extension';\nimport { Button } from '@/ds/components/Button';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { useFieldControlAria } from '@/ds/components/Field/field-control-aria';\nimport { fieldErrorRimWithin, inputSurfaceAndFocusWithinStyle } from '@/ds/primitives/form-element';\nimport { formatJSON } from '@/lib/formatting';\nimport type { JsonSchema } from '@/lib/json-schema';\nimport { toast } from '@/lib/toast';\nimport { cn } from '@/lib/utils';\n\nexport type CodeEditorLanguage = 'json' | 'markdown';\ntype CodeEditorFont = 'body' | 'mono';\n\n/**\n * The single CodeMirror theme for every editor. Chrome and syntax colors come\n * from CSS variables that flip under `.dark`, and syntax roles use the same\n * `syntaxHighlighter` as the read-only `<Code>` viewer, so editors and viewers\n * look identical in both modes.\n */\nfunction buildCodemirrorTheme(font: CodeEditorFont): Extension {\n const editorTheme = EditorView.theme({\n '&': {\n backgroundColor: 'transparent',\n color: 'var(--foreground)',\n fontSize: 'var(--text-body-sm)',\n },\n '&.cm-editor .cm-scroller': {\n fontFamily: `var(--font-${font})`,\n },\n '.cm-gutters': {\n backgroundColor: 'transparent',\n color: 'var(--placeholder)',\n borderRight: 'none',\n },\n '.cm-content': {\n color: 'var(--foreground)',\n caretColor: 'var(--foreground)',\n },\n '.cm-activeLine': {\n backgroundColor: 'transparent',\n },\n '.cm-lineNumbers .cm-gutterElement': {\n color: 'var(--placeholder)',\n },\n '.cm-activeLineGutter': {\n backgroundColor: 'transparent',\n color: 'var(--muted-foreground)',\n },\n '.cm-cursor, .cm-dropCursor': {\n borderLeftColor: 'var(--foreground)',\n },\n '&.cm-focused .cm-selectionBackground, & .cm-line::selection, & .cm-selectionLayer .cm-selectionBackground, .cm-content ::selection':\n {\n background: 'var(--info-edge) !important',\n },\n '.cm-tooltip-autocomplete': {\n backgroundColor: 'var(--background)',\n border: '1px solid var(--border)',\n borderRadius: '6px',\n boxShadow: 'var(--elevation-overlay)',\n },\n '.cm-tooltip-autocomplete > ul': {\n fontFamily: 'var(--font-mono)',\n },\n '.cm-completionLabel': {\n color: 'var(--foreground)',\n },\n '.cm-completionDetail': {\n color: 'var(--muted-foreground)',\n fontSize: 'var(--text-caption)',\n marginLeft: 'auto',\n paddingLeft: '12px',\n },\n '.cm-completionInfo': {\n backgroundColor: 'var(--background)',\n border: '1px solid var(--border)',\n color: 'var(--muted-foreground)',\n padding: '8px 12px',\n },\n '.cm-completionIcon': {\n display: 'none',\n },\n 'ul.cm-completionList li[aria-selected]': {\n backgroundColor: 'var(--fill-hover)',\n color: 'var(--foreground)',\n },\n '.cm-line .cm-variable-highlight': {\n color: 'var(--warning-foreground) !important',\n fontWeight: '500',\n },\n });\n\n return [editorTheme, syntaxHighlighting(syntaxHighlighter)];\n}\n\n// eslint-disable-next-line react-refresh/only-export-components -- shared hook intentionally co-located with the editor it themes\nexport const useCodemirrorTheme = (font: CodeEditorFont = 'mono'): Extension => {\n return useMemo(() => buildCodemirrorTheme(font), [font]);\n};\n\nconst codeEditorVariants = cva(\n cn(\n 'relative overflow-hidden font-mono outline-hidden focus-within:outline-hidden focus:outline-hidden',\n 'transition-colors duration-normal ease-out-custom',\n ),\n {\n variants: {\n variant: {\n default: cn(inputSurfaceAndFocusWithinStyle, 'rounded-md p-1', fieldErrorRimWithin),\n embedded: 'rounded-none border-none bg-transparent p-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst editorFocusAttributes = Prec.highest(\n EditorView.editorAttributes.of({\n style: 'outline: none',\n }),\n);\n\nconst editorFocusTheme = Prec.highest(\n EditorView.theme({\n '&': {\n outline: 'none',\n },\n '&.cm-focused': {\n outline: 'none',\n },\n '.cm-scroller': {\n outline: 'none',\n },\n '.cm-content': {\n outline: 'none',\n },\n '.cm-content:focus': {\n outline: 'none',\n },\n }),\n);\n\nconst editorFocusExtensions: Extension[] = [editorFocusAttributes, editorFocusTheme];\n\ntype CodeEditorContentAttributes = {\n 'aria-label': string;\n id?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n 'aria-invalid'?: string;\n};\n\nexport type CodeEditorProps = {\n /** Prose editors can opt into the body face; code stays monospace by default. */\n font?: CodeEditorFont;\n data?: Record<string, unknown> | Array<Record<string, unknown>>;\n value?: string;\n onChange?: (value: string) => void;\n showCopyButton?: boolean;\n /** Offers a button that rewrites the JSON with Prettier. Needs `onChange`; ignored for markdown or read-only editors. */\n showFormatButton?: boolean;\n className?: string;\n highlightVariables?: boolean;\n language?: CodeEditorLanguage;\n placeholder?: string;\n /** JSON Schema to enable variable autocomplete for {{variable}} placeholders (markdown only) */\n schema?: JsonSchema;\n autoFocus?: boolean;\n /** Show line numbers in the gutter (default: true) */\n lineNumbers?: boolean;\n /** Wrap long lines within the editor viewport (default: true) */\n lineWrapping?: boolean;\n /** When false, makes the editor read-only */\n editable?: boolean;\n} & VariantProps<typeof codeEditorVariants> &\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>;\n\nexport const CodeEditor = forwardRef<ReactCodeMirrorRef, CodeEditorProps>(\n (\n {\n data,\n value,\n onChange,\n showCopyButton = true,\n showFormatButton = false,\n className,\n language = 'json',\n font = 'mono',\n highlightVariables = false,\n placeholder,\n schema,\n autoFocus,\n lineNumbers = true,\n lineWrapping = true,\n editable,\n variant,\n id,\n 'aria-label': ariaLabelProp,\n 'aria-labelledby': ariaLabelledByProp,\n 'aria-describedby': ariaDescribedByProp,\n 'aria-invalid': ariaInvalidProp,\n ...props\n },\n ref,\n ) => {\n const fieldAria = useFieldControlAria({ 'aria-label': ariaLabelProp });\n const ariaLabel = ariaLabelProp ?? 'Code editor';\n const controlId = id ?? fieldAria.id;\n const ariaLabelledBy = ariaLabelledByProp ?? fieldAria['aria-labelledby'];\n const ariaDescribedBy = ariaDescribedByProp ?? fieldAria['aria-describedby'];\n const ariaInvalid = ariaInvalidProp ?? fieldAria['aria-invalid'];\n const theme = useCodemirrorTheme(font);\n const formattedCode = data ? JSON.stringify(data, null, 2) : (value ?? '');\n const canFormat = showFormatButton && language === 'json' && editable !== false && Boolean(onChange);\n\n const handleFormat = async () => {\n try {\n onChange?.((await formatJSON(formattedCode)).trimEnd());\n } catch {\n toast.error('Can’t format: the JSON is invalid');\n }\n };\n\n const extensions = useMemo(() => {\n const contentAttributes: CodeEditorContentAttributes = { 'aria-label': ariaLabel };\n if (controlId) contentAttributes.id = controlId;\n if (ariaLabelledBy) contentAttributes['aria-labelledby'] = ariaLabelledBy;\n if (ariaDescribedBy) contentAttributes['aria-describedby'] = ariaDescribedBy;\n if (ariaInvalid !== undefined) contentAttributes['aria-invalid'] = String(ariaInvalid);\n\n const exts: Extension[] = [...editorFocusExtensions, EditorView.contentAttributes.of(contentAttributes)];\n\n if (lineWrapping) {\n exts.push(EditorView.lineWrapping);\n }\n\n if (language === 'json') {\n exts.push(jsonLanguage);\n } else if (language === 'markdown') {\n exts.push(markdown({ base: markdownLanguage, codeLanguages }));\n }\n\n if (highlightVariables && language === 'markdown') {\n exts.push(variableHighlight);\n }\n\n if (schema && language === 'markdown') {\n exts.push(createVariableAutocomplete(schema));\n }\n\n if (editable === false) {\n exts.push(EditorState.readOnly.of(true));\n }\n\n return exts;\n }, [\n language,\n highlightVariables,\n schema,\n editable,\n lineWrapping,\n controlId,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaInvalid,\n ]);\n\n return (\n <div className={cn(codeEditorVariants({ variant }), className)} {...props}>\n {(showCopyButton || canFormat) && (\n <div className=\"absolute top-2 right-2 z-20 flex gap-1\">\n {canFormat && (\n <Button type=\"button\" size=\"sm\" tooltip=\"Format JSON\" aria-label=\"Format JSON\" onClick={handleFormat}>\n <Braces />\n </Button>\n )}\n {showCopyButton && <CopyButton content={formattedCode} />}\n </div>\n )}\n <CodeMirror\n ref={ref}\n value={formattedCode}\n theme={theme}\n extensions={extensions}\n onChange={onChange}\n editable={editable}\n aria-label={ariaLabel}\n placeholder={placeholder}\n height=\"100%\"\n style={{ height: '100%' }}\n autoFocus={autoFocus}\n basicSetup={{ lineNumbers }}\n />\n </div>\n );\n },\n);\n"],"names":[],"mappings":"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"}
@@ -16,17 +16,14 @@ import { a as useFieldAriaIds, k as keepOwnAccessibleName } from './field-contro
16
16
  import { F as FieldBlock, f as fieldErrorId } from './field-error-id-CdzuQK5c.js';
17
17
  import { deprecatedErrorAria } from './primitives/form-element.es.js';
18
18
 
19
- const FieldAnchorContext = React.createContext(void 0);
20
19
  function ComboboxRoot(props) {
21
- const [field, setField] = React.useState(null);
22
- return /* @__PURE__ */ jsx(FieldAnchorContext.Provider, { value: { field: field ?? void 0, setField }, children: /* @__PURE__ */ jsx(Combobox$1.Root, { ...props }) });
20
+ return /* @__PURE__ */ jsx(Combobox$1.Root, { ...props });
23
21
  }
24
22
  const fieldClass = (size = "md") => cn(
25
23
  comboboxTriggerClass({ variant: "default", size }),
26
24
  // The Button recipe brightens icons on hover; a field's chevron stays muted.
27
25
  "cursor-text gap-2 focus-within:[--surface-rim:var(--field-rim-focus)] not-disabled:hover:[&_svg]:text-muted-foreground",
28
- // Disabled like other form elements (muted text, not-allowed cursor). Keyed off the input because
29
- // Base UI marks the input group, not the chips field, with `data-disabled`.
26
+ // Disabled like other form elements (muted text, not-allowed cursor), keyed off the input.
30
27
  "has-[input:disabled]:cursor-not-allowed has-[input:disabled]:bg-field-disabled has-[input:disabled]:[&_*]:cursor-not-allowed has-[input:disabled]:[&_*]:text-muted-foreground",
31
28
  // The input inside carries `aria-invalid`; the field shows it like other invalid fields.
32
29
  "has-[[aria-invalid=true]]:[--field-rim-focus:var(--destructive-indicator)] has-[[aria-invalid=true]]:[--field-rim:var(--destructive-indicator)]"
@@ -116,34 +113,24 @@ function ComboboxInput({
116
113
  onFocus,
117
114
  ...props
118
115
  }) {
119
- const anchor = React.useContext(FieldAnchorContext);
120
- return /* @__PURE__ */ jsxs(
121
- Combobox$1.InputGroup,
122
- {
123
- ref: anchor?.setField,
124
- "data-slot": "combobox-input",
125
- className: cn(fieldClass(size), className),
126
- style: fieldStyle,
127
- children: [
128
- start ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center", children: start }) : null,
129
- /* @__PURE__ */ jsx(
130
- Combobox$1.Input,
131
- {
132
- onFocus: (event) => {
133
- moveCaretToEnd(event);
134
- onFocus?.(event);
135
- },
136
- className: inputClass,
137
- ...passwordManagerOptOutProps,
138
- ...props
139
- }
140
- ),
141
- children ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center gap-2 text-muted-foreground", children }) : null,
142
- showClear ? /* @__PURE__ */ jsx(ComboboxClear, {}) : null,
143
- showTrigger ? /* @__PURE__ */ jsx(ComboboxFieldTrigger, {}) : null
144
- ]
145
- }
146
- );
116
+ return /* @__PURE__ */ jsxs(Combobox$1.InputGroup, { "data-slot": "combobox-input", className: cn(fieldClass(size), className), style: fieldStyle, children: [
117
+ start ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center", children: start }) : null,
118
+ /* @__PURE__ */ jsx(
119
+ Combobox$1.Input,
120
+ {
121
+ onFocus: (event) => {
122
+ moveCaretToEnd(event);
123
+ onFocus?.(event);
124
+ },
125
+ className: inputClass,
126
+ ...passwordManagerOptOutProps,
127
+ ...props
128
+ }
129
+ ),
130
+ children ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center gap-2 text-muted-foreground", children }) : null,
131
+ showClear ? /* @__PURE__ */ jsx(ComboboxClear, {}) : null,
132
+ showTrigger ? /* @__PURE__ */ jsx(ComboboxFieldTrigger, {}) : null
133
+ ] });
147
134
  }
148
135
  function ComboboxSearch({ className, ...props }) {
149
136
  return /* @__PURE__ */ jsxs("div", { "data-slot": "combobox-search", className: comboboxStyles.searchContainer, children: [
@@ -168,7 +155,6 @@ function ComboboxContent({
168
155
  container,
169
156
  ...props
170
157
  }) {
171
- const field = React.useContext(FieldAnchorContext)?.field;
172
158
  const popupAnchor = usePopupAnchor();
173
159
  const resolvedContainer = usePortalContainer(container);
174
160
  return /* @__PURE__ */ jsx(Combobox$1.Portal, { container: resolvedContainer, children: /* @__PURE__ */ jsx(
@@ -178,18 +164,14 @@ function ComboboxContent({
178
164
  sideOffset,
179
165
  align,
180
166
  alignOffset,
181
- anchor: anchor ?? field ?? popupAnchor,
167
+ anchor: anchor ?? popupAnchor,
182
168
  positionMethod: FLOATING_POSITION_METHOD,
183
169
  className: comboboxStyles.positioner,
184
170
  children: /* @__PURE__ */ jsx(
185
171
  Combobox$1.Popup,
186
172
  {
187
173
  "data-slot": "combobox-content",
188
- className: cn(
189
- comboboxStyles.popup,
190
- field ? "w-(--anchor-width)" : "w-[max(11rem,var(--anchor-width))]",
191
- className
192
- ),
174
+ className: cn(comboboxStyles.popup, "w-(--anchor-width)", className),
193
175
  ...props
194
176
  }
195
177
  )
@@ -256,28 +238,34 @@ function ComboboxEmpty({ className, ...props }) {
256
238
  function ComboboxSeparator({ className, ...props }) {
257
239
  return /* @__PURE__ */ jsx(Combobox$1.Separator, { "data-slot": "combobox-separator", className: cn(menuSeparatorClass, className), ...props });
258
240
  }
259
- function ComboboxChips({ className, children, ...props }) {
260
- const anchor = React.useContext(FieldAnchorContext);
261
- const field = anchor?.field;
241
+ function ComboboxChips({ className, children, "aria-label": ariaLabel, ...props }) {
242
+ const chipsRef = React.useRef(null);
262
243
  const [multiline, setMultiline] = React.useState(false);
263
244
  React.useLayoutEffect(() => {
245
+ const field = chipsRef.current?.parentElement;
264
246
  if (!field || typeof ResizeObserver === "undefined") return;
265
247
  const rowHeight = parseFloat(getComputedStyle(field).minHeight) || 0;
266
248
  const observer = new ResizeObserver(() => setMultiline(field.offsetHeight > rowHeight + 1));
267
249
  observer.observe(field);
268
250
  return () => observer.disconnect();
269
- }, [field]);
251
+ }, []);
270
252
  return /* @__PURE__ */ jsxs(
271
- Combobox$1.Chips,
253
+ Combobox$1.InputGroup,
272
254
  {
273
- ref: anchor?.setField,
274
255
  "data-slot": "combobox-chips",
275
256
  "data-multiline": multiline ? "" : void 0,
276
257
  style: chipsFieldStyle,
277
- className: cn(fieldClass(), "h-auto min-h-control-md items-start data-multiline:rounded-xl", className),
258
+ className: cn(
259
+ fieldClass(),
260
+ "h-auto min-h-control-md items-start data-multiline:rounded-xl",
261
+ // The chips field keeps its resting look: no open tint, no placeholder color. InputGroup sets those
262
+ // attributes, which the trigger recipe styles.
263
+ "data-[placeholder]:text-foreground data-[popup-open]:[--surface-tint:transparent]",
264
+ className
265
+ ),
278
266
  ...props,
279
267
  children: [
280
- /* @__PURE__ */ jsx("span", { className: "flex min-w-0 flex-1 flex-wrap gap-[3px]", children }),
268
+ /* @__PURE__ */ jsx(Combobox$1.Chips, { ref: chipsRef, "aria-label": ariaLabel, className: "flex min-w-0 flex-1 flex-wrap gap-[3px]", children }),
281
269
  /* @__PURE__ */ jsx("span", { className: "flex h-5.5 shrink-0 items-center", children: /* @__PURE__ */ jsx(ComboboxFieldTrigger, {}) })
282
270
  ]
283
271
  }
@@ -675,4 +663,4 @@ function Combobox(props) {
675
663
  }
676
664
 
677
665
  export { Combobox as C, ComboboxChip as a, ComboboxChips as b, ComboboxChipsInput as c, ComboboxClear as d, ComboboxCollection as e, ComboboxContent as f, ComboboxEmpty as g, ComboboxGroup as h, ComboboxInput as i, ComboboxItem as j, ComboboxItemContent as k, ComboboxItemDescription as l, ComboboxItemEnd as m, ComboboxItemTitle as n, ComboboxLabel as o, ComboboxList as p, ComboboxRoot as q, ComboboxSearch as r, ComboboxSeparator as s, ComboboxTrigger as t, ComboboxValue as u };
678
- //# sourceMappingURL=combobox-BCoCVZHs.js.map
666
+ //# sourceMappingURL=combobox-Cff50hgT.js.map