@mastra/playground-ui 56.0.0 → 57.0.0-alpha.1

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 (1044) hide show
  1. package/dist/{Button-CVewl8nT.cjs → Button-C0DBEBcJ.cjs} +12 -5
  2. package/dist/Button-C0DBEBcJ.cjs.map +1 -0
  3. package/dist/{Button-cWcBEd-G.js → Button-C9cvaVFG.js} +13 -6
  4. package/dist/Button-C9cvaVFG.js.map +1 -0
  5. package/dist/{Card-DEvGFj-Z.js → Card-B_buJ5yF.js} +3 -3
  6. package/dist/{Card-DEvGFj-Z.js.map → Card-B_buJ5yF.js.map} +1 -1
  7. package/dist/{Card-D0kFp9j9.cjs → Card-DwGasv0K.cjs} +3 -3
  8. package/dist/{Card-D0kFp9j9.cjs.map → Card-DwGasv0K.cjs.map} +1 -1
  9. package/dist/{EmptyState-UWXhBp5U.js → EmptyState-B6cyZw6m.js} +12 -6
  10. package/dist/EmptyState-B6cyZw6m.js.map +1 -0
  11. package/dist/{EmptyState-CdRjFB06.cjs → EmptyState-DiSP6UIy.cjs} +12 -6
  12. package/dist/EmptyState-DiSP6UIy.cjs.map +1 -0
  13. package/dist/ErrorState-B0839u-q.cjs +21 -0
  14. package/dist/ErrorState-B0839u-q.cjs.map +1 -0
  15. package/dist/ErrorState-HyRJdaA2.js +19 -0
  16. package/dist/ErrorState-HyRJdaA2.js.map +1 -0
  17. package/dist/Header-BVnFQlzE.js +31 -0
  18. package/dist/Header-BVnFQlzE.js.map +1 -0
  19. package/dist/Header-CGjhJ0nQ.cjs +36 -0
  20. package/dist/Header-CGjhJ0nQ.cjs.map +1 -0
  21. package/dist/{Notice-Cjti0e0j.cjs → Notice-CoFjo8O6.cjs} +3 -3
  22. package/dist/{Notice-Cjti0e0j.cjs.map → Notice-CoFjo8O6.cjs.map} +1 -1
  23. package/dist/{Notice-Ah-84yi6.js → Notice-DUdQkUqH.js} +3 -3
  24. package/dist/{Notice-Ah-84yi6.js.map → Notice-DUdQkUqH.js.map} +1 -1
  25. package/dist/{PermissionDenied-B6TSGolC.js → PermissionDenied-CTqnE57B.js} +11 -6
  26. package/dist/PermissionDenied-CTqnE57B.js.map +1 -0
  27. package/dist/{PermissionDenied-Dz5qXpQj.cjs → PermissionDenied-fdVmTjjf.cjs} +11 -6
  28. package/dist/PermissionDenied-fdVmTjjf.cjs.map +1 -0
  29. package/dist/{SessionExpired-CF0BGNo_.cjs → SessionExpired-CFGTqnU5.cjs} +5 -6
  30. package/dist/SessionExpired-CFGTqnU5.cjs.map +1 -0
  31. package/dist/{SessionExpired-Bq5LcsDu.js → SessionExpired-COK6flhT.js} +5 -6
  32. package/dist/SessionExpired-COK6flhT.js.map +1 -0
  33. package/dist/ask-user-3fufbFt8.cjs +216 -0
  34. package/dist/ask-user-3fufbFt8.cjs.map +1 -0
  35. package/dist/ask-user-CvCMHkhI.js +206 -0
  36. package/dist/ask-user-CvCMHkhI.js.map +1 -0
  37. package/dist/buttons-group-CoZP3lJt.cjs +59 -0
  38. package/dist/buttons-group-CoZP3lJt.cjs.map +1 -0
  39. package/dist/buttons-group-DsZgrZBZ.js +37 -0
  40. package/dist/buttons-group-DsZgrZBZ.js.map +1 -0
  41. package/dist/buttons-group.css +113 -22
  42. package/dist/{chat-notification-4OuPNhtu.js → chat-notification-BM24QnK9.js} +7 -7
  43. package/dist/{chat-notification-4OuPNhtu.js.map → chat-notification-BM24QnK9.js.map} +1 -1
  44. package/dist/{chat-notification-CPrlBwP_.cjs → chat-notification-CQlc3Z3y.cjs} +7 -7
  45. package/dist/{chat-notification-CPrlBwP_.cjs.map → chat-notification-CQlc3Z3y.cjs.map} +1 -1
  46. package/dist/{chat-signal-CG5-vy21.js → chat-signal-5gAZo10e.js} +6 -6
  47. package/dist/{chat-signal-CG5-vy21.js.map → chat-signal-5gAZo10e.js.map} +1 -1
  48. package/dist/{chat-signal-B_T2DSzo.cjs → chat-signal-CUkeTh1i.cjs} +6 -6
  49. package/dist/{chat-signal-B_T2DSzo.cjs.map → chat-signal-CUkeTh1i.cjs.map} +1 -1
  50. package/dist/{code-block-Cd4u7Bo9.cjs → code-block-D2q4w1t-.cjs} +10 -10
  51. package/dist/{code-block-Cd4u7Bo9.cjs.map → code-block-D2q4w1t-.cjs.map} +1 -1
  52. package/dist/{code-block-CSqjpBvb.js → code-block-D3BWud_S.js} +10 -10
  53. package/dist/{code-block-CSqjpBvb.js.map → code-block-D3BWud_S.js.map} +1 -1
  54. package/dist/{code-diff-C5uY-3Hz.js → code-diff-BHZTS4Zh.js} +2 -2
  55. package/dist/{code-diff-C5uY-3Hz.js.map → code-diff-BHZTS4Zh.js.map} +1 -1
  56. package/dist/{code-diff-DBtbPe9D.cjs → code-diff-CG8veSa-.cjs} +2 -2
  57. package/dist/{code-diff-DBtbPe9D.cjs.map → code-diff-CG8veSa-.cjs.map} +1 -1
  58. package/dist/{code-editor-vCt7l9Bl.js → code-editor-7wJJDE9d.js} +2 -2
  59. package/dist/{code-editor-vCt7l9Bl.js.map → code-editor-7wJJDE9d.js.map} +1 -1
  60. package/dist/{code-editor-DgY7d8kg.cjs → code-editor-Ce1FXyFV.cjs} +2 -2
  61. package/dist/{code-editor-DgY7d8kg.cjs.map → code-editor-Ce1FXyFV.cjs.map} +1 -1
  62. package/dist/{collapsible-BvrI6XnN.cjs → collapsible-BFSJouuI.cjs} +2 -2
  63. package/dist/{collapsible-BvrI6XnN.cjs.map → collapsible-BFSJouuI.cjs.map} +1 -1
  64. package/dist/{collapsible-B2uUy8w5.js → collapsible-DhhP5p1j.js} +2 -2
  65. package/dist/{collapsible-B2uUy8w5.js.map → collapsible-DhhP5p1j.js.map} +1 -1
  66. package/dist/{combobox-D7xJFZuO.js → combobox-CV-Ue388.js} +5 -5
  67. package/dist/combobox-CV-Ue388.js.map +1 -0
  68. package/dist/{combobox-BWM3VH-n.cjs → combobox-Dw3W6EHS.cjs} +6 -6
  69. package/dist/combobox-Dw3W6EHS.cjs.map +1 -0
  70. package/dist/{combobox-styles-CRebmeht.js → combobox-styles-Dgc_Jp-E.js} +3 -6
  71. package/dist/combobox-styles-Dgc_Jp-E.js.map +1 -0
  72. package/dist/{combobox-styles-DYlNNjKC.cjs → combobox-styles-ExU7SMb7.cjs} +3 -6
  73. package/dist/combobox-styles-ExU7SMb7.cjs.map +1 -0
  74. package/dist/{command-DuT06mTw.cjs → command-BJrGchxZ.cjs} +6 -6
  75. package/dist/{command-DuT06mTw.cjs.map → command-BJrGchxZ.cjs.map} +1 -1
  76. package/dist/{command-jRiL1vXM.js → command-kHnYspgO.js} +6 -6
  77. package/dist/{command-jRiL1vXM.js.map → command-kHnYspgO.js.map} +1 -1
  78. package/dist/components/ActionRow.cjs.js +38 -0
  79. package/dist/components/ActionRow.cjs.js.map +1 -0
  80. package/dist/components/ActionRow.d.ts +2 -0
  81. package/dist/components/ActionRow.es.js +34 -0
  82. package/dist/components/ActionRow.es.js.map +1 -0
  83. package/dist/components/AlertDialog.cjs.js +1 -1
  84. package/dist/components/AlertDialog.es.js +1 -1
  85. package/dist/components/Breadcrumb.cjs.js +1 -1
  86. package/dist/components/Breadcrumb.cjs.js.map +1 -1
  87. package/dist/components/Breadcrumb.es.js +1 -1
  88. package/dist/components/Breadcrumb.es.js.map +1 -1
  89. package/dist/components/Button.cjs.js +2 -2
  90. package/dist/components/Button.es.js +3 -3
  91. package/dist/components/ButtonsGroup.cjs.js +1 -2
  92. package/dist/components/ButtonsGroup.cjs.js.map +1 -1
  93. package/dist/components/ButtonsGroup.es.js +1 -1
  94. package/dist/components/Card.cjs.js +1 -1
  95. package/dist/components/Card.es.js +1 -1
  96. package/dist/components/ClampedText.cjs.js +1 -1
  97. package/dist/components/ClampedText.es.js +1 -1
  98. package/dist/components/CodeBlock.cjs.js +1 -1
  99. package/dist/components/CodeBlock.es.js +1 -1
  100. package/dist/components/CodeDiff.cjs.js +1 -1
  101. package/dist/components/CodeDiff.es.js +1 -1
  102. package/dist/components/CodeEditor.cjs.js +1 -1
  103. package/dist/components/CodeEditor.es.js +1 -1
  104. package/dist/components/Collapsible.cjs.js +1 -1
  105. package/dist/components/Collapsible.es.js +1 -1
  106. package/dist/components/Columns.cjs.js +1 -1
  107. package/dist/components/Columns.es.js +1 -1
  108. package/dist/components/Combobox.cjs.js +2 -2
  109. package/dist/components/Combobox.es.js +2 -2
  110. package/dist/components/Command.cjs.js +1 -1
  111. package/dist/components/Command.es.js +1 -1
  112. package/dist/components/CommandPalette.cjs.js +12 -12
  113. package/dist/components/CommandPalette.cjs.js.map +1 -1
  114. package/dist/components/CommandPalette.es.js +12 -12
  115. package/dist/components/CommandPalette.es.js.map +1 -1
  116. package/dist/components/Comment.cjs.js +6 -7
  117. package/dist/components/Comment.cjs.js.map +1 -1
  118. package/dist/components/Comment.es.js +5 -6
  119. package/dist/components/Comment.es.js.map +1 -1
  120. package/dist/components/Composer.cjs.js +6 -6
  121. package/dist/components/Composer.cjs.js.map +1 -1
  122. package/dist/components/Composer.es.js +6 -6
  123. package/dist/components/Composer.es.js.map +1 -1
  124. package/dist/components/ContextMenu.cjs.js +1 -6
  125. package/dist/components/ContextMenu.cjs.js.map +1 -1
  126. package/dist/components/ContextMenu.es.js +1 -6
  127. package/dist/components/ContextMenu.es.js.map +1 -1
  128. package/dist/components/CopyButton.cjs.js +1 -1
  129. package/dist/components/CopyButton.es.js +1 -1
  130. package/dist/components/DataCodeSection.cjs.js +1 -1
  131. package/dist/components/DataCodeSection.es.js +1 -1
  132. package/dist/components/DataDetailsPanel.cjs.js +10 -11
  133. package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
  134. package/dist/components/DataDetailsPanel.es.js +10 -11
  135. package/dist/components/DataDetailsPanel.es.js.map +1 -1
  136. package/dist/components/DataFilter.cjs.js +2 -2
  137. package/dist/components/DataFilter.es.js +2 -2
  138. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  139. package/dist/components/DataKeysAndValues.es.js +1 -1
  140. package/dist/components/DataList.cjs.js +8 -8
  141. package/dist/components/DataList.cjs.js.map +1 -1
  142. package/dist/components/DataList.es.js +8 -8
  143. package/dist/components/DataList.es.js.map +1 -1
  144. package/dist/components/DataPanel.cjs.js +1 -1
  145. package/dist/components/DataPanel.es.js +1 -1
  146. package/dist/components/DateRangeTimeline.cjs.js +6 -6
  147. package/dist/components/DateRangeTimeline.cjs.js.map +1 -1
  148. package/dist/components/DateRangeTimeline.es.js +6 -6
  149. package/dist/components/DateRangeTimeline.es.js.map +1 -1
  150. package/dist/components/DateTimePicker.cjs.js +4 -4
  151. package/dist/components/DateTimePicker.cjs.js.map +1 -1
  152. package/dist/components/DateTimePicker.es.js +4 -4
  153. package/dist/components/DateTimePicker.es.js.map +1 -1
  154. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  155. package/dist/components/DateTimeRangePicker.es.js +1 -1
  156. package/dist/components/Dialog.cjs.js +2 -2
  157. package/dist/components/Dialog.es.js +3 -3
  158. package/dist/components/Drawer.cjs.js +1 -1
  159. package/dist/components/Drawer.es.js +1 -1
  160. package/dist/components/DropdownMenu.cjs.js +1 -1
  161. package/dist/components/DropdownMenu.es.js +1 -1
  162. package/dist/components/EmptyState.cjs.js +1 -1
  163. package/dist/components/EmptyState.es.js +1 -1
  164. package/dist/components/EntityHeader.cjs.js +1 -1
  165. package/dist/components/EntityHeader.cjs.js.map +1 -1
  166. package/dist/components/EntityHeader.es.js +1 -1
  167. package/dist/components/EntityHeader.es.js.map +1 -1
  168. package/dist/components/EnvironmentVariablesEditor.cjs.js +15 -16
  169. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  170. package/dist/components/EnvironmentVariablesEditor.es.js +9 -10
  171. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  172. package/dist/components/ErrorBoundary.cjs.js +3 -3
  173. package/dist/components/ErrorBoundary.cjs.js.map +1 -1
  174. package/dist/components/ErrorBoundary.es.js +3 -3
  175. package/dist/components/ErrorBoundary.es.js.map +1 -1
  176. package/dist/components/ErrorState.cjs.js +1 -1
  177. package/dist/components/ErrorState.es.js +1 -1
  178. package/dist/components/FilterBar.cjs.js +495 -43
  179. package/dist/components/FilterBar.cjs.js.map +1 -1
  180. package/dist/components/FilterBar.es.js +495 -47
  181. package/dist/components/FilterBar.es.js.map +1 -1
  182. package/dist/components/FormFieldBlocks.cjs.js +11 -12
  183. package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
  184. package/dist/components/FormFieldBlocks.es.js +4 -5
  185. package/dist/components/FormFieldBlocks.es.js.map +1 -1
  186. package/dist/components/Header.cjs.js +6 -31
  187. package/dist/components/Header.cjs.js.map +1 -1
  188. package/dist/components/Header.es.js +1 -30
  189. package/dist/components/Header.es.js.map +1 -1
  190. package/dist/components/HorizontalBars.cjs.js +1 -1
  191. package/dist/components/HorizontalBars.es.js +1 -1
  192. package/dist/components/HoverCard.cjs.js +1 -1
  193. package/dist/components/HoverCard.es.js +1 -1
  194. package/dist/components/InputGroup.cjs.js +1 -1
  195. package/dist/components/InputGroup.es.js +1 -1
  196. package/dist/components/IntegrationDialog.cjs.js +6 -6
  197. package/dist/components/IntegrationDialog.cjs.js.map +1 -1
  198. package/dist/components/IntegrationDialog.es.js +6 -6
  199. package/dist/components/IntegrationDialog.es.js.map +1 -1
  200. package/dist/components/ItemList.cjs.js +4 -4
  201. package/dist/components/ItemList.cjs.js.map +1 -1
  202. package/dist/components/ItemList.es.js +4 -4
  203. package/dist/components/ItemList.es.js.map +1 -1
  204. package/dist/components/JSONSchemaForm.cjs.js +3 -3
  205. package/dist/components/JSONSchemaForm.es.js +3 -3
  206. package/dist/components/Kbd.cjs.js +1 -1
  207. package/dist/components/Kbd.es.js +1 -1
  208. package/dist/components/KeyValueList.cjs.js +1 -1
  209. package/dist/components/KeyValueList.es.js +1 -1
  210. package/dist/components/ListSearch.cjs.js +1 -1
  211. package/dist/components/ListSearch.es.js +1 -1
  212. package/dist/components/LogsDataList.cjs.js +4 -2
  213. package/dist/components/LogsDataList.cjs.js.map +1 -1
  214. package/dist/components/LogsDataList.es.js +4 -2
  215. package/dist/components/LogsDataList.es.js.map +1 -1
  216. package/dist/components/MainHeader.cjs.js +3 -3
  217. package/dist/components/MainHeader.cjs.js.map +1 -1
  218. package/dist/components/MainHeader.es.js +3 -3
  219. package/dist/components/MainHeader.es.js.map +1 -1
  220. package/dist/components/MainSidebar.cjs.js +11 -125
  221. package/dist/components/MainSidebar.cjs.js.map +1 -1
  222. package/dist/components/MainSidebar.es.js +1 -120
  223. package/dist/components/MainSidebar.es.js.map +1 -1
  224. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  225. package/dist/components/MarkdownRenderer.es.js +1 -1
  226. package/dist/components/Message.cjs.js +2 -2
  227. package/dist/components/Message.es.js +3 -3
  228. package/dist/components/MetricsCard.cjs.js +1 -1
  229. package/dist/components/MetricsCard.es.js +1 -1
  230. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  231. package/dist/components/MetricsKpiCard.es.js +1 -1
  232. package/dist/components/MetricsLineChart.cjs.js +1 -1
  233. package/dist/components/MetricsLineChart.es.js +1 -1
  234. package/dist/components/Notice.cjs.js +1 -1
  235. package/dist/components/Notice.es.js +1 -1
  236. package/dist/components/PageHeader.cjs.js +1 -1
  237. package/dist/components/PageHeader.es.js +1 -1
  238. package/dist/components/PageLayout.cjs.js +30 -8
  239. package/dist/components/PageLayout.cjs.js.map +1 -1
  240. package/dist/components/PageLayout.es.js +32 -3
  241. package/dist/components/PageLayout.es.js.map +1 -1
  242. package/dist/components/PendingIndicator.cjs.js +1 -1
  243. package/dist/components/PendingIndicator.cjs.js.map +1 -1
  244. package/dist/components/PendingIndicator.es.js +1 -1
  245. package/dist/components/PendingIndicator.es.js.map +1 -1
  246. package/dist/components/PermissionDenied.cjs.js +1 -1
  247. package/dist/components/PermissionDenied.es.js +1 -1
  248. package/dist/components/PrevNextNav.cjs.js +1 -1
  249. package/dist/components/PrevNextNav.es.js +1 -1
  250. package/dist/components/PropertyFilter.cjs.js +18 -19
  251. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  252. package/dist/components/PropertyFilter.es.js +21 -22
  253. package/dist/components/PropertyFilter.es.js.map +1 -1
  254. package/dist/components/RadioGroup.cjs.js +3 -56
  255. package/dist/components/RadioGroup.cjs.js.map +1 -1
  256. package/dist/components/RadioGroup.es.js +1 -39
  257. package/dist/components/RadioGroup.es.js.map +1 -1
  258. package/dist/components/RuleBuilder.cjs.js +10 -10
  259. package/dist/components/RuleBuilder.cjs.js.map +1 -1
  260. package/dist/components/RuleBuilder.es.js +10 -10
  261. package/dist/components/RuleBuilder.es.js.map +1 -1
  262. package/dist/components/SankeyChart.cjs.js +1 -1
  263. package/dist/components/SankeyChart.es.js +1 -1
  264. package/dist/components/ScatterPlotChart.cjs.js +2 -2
  265. package/dist/components/ScatterPlotChart.cjs.js.map +1 -1
  266. package/dist/components/ScatterPlotChart.es.js +2 -2
  267. package/dist/components/ScatterPlotChart.es.js.map +1 -1
  268. package/dist/components/ScrollArea.cjs.js +1 -1
  269. package/dist/components/ScrollArea.es.js +1 -1
  270. package/dist/components/Select.cjs.js +1 -1
  271. package/dist/components/Select.es.js +1 -1
  272. package/dist/components/SessionExpired.cjs.js +1 -1
  273. package/dist/components/SessionExpired.es.js +1 -1
  274. package/dist/components/SettingsLayout.cjs.js +1 -1
  275. package/dist/components/SettingsLayout.es.js +1 -1
  276. package/dist/components/SideDialog.cjs.js +17 -10
  277. package/dist/components/SideDialog.cjs.js.map +1 -1
  278. package/dist/components/SideDialog.es.js +17 -10
  279. package/dist/components/SideDialog.es.js.map +1 -1
  280. package/dist/components/Spinner.cjs.js +1 -1
  281. package/dist/components/Spinner.es.js +1 -1
  282. package/dist/components/StatusIndicators.cjs.js +3 -3
  283. package/dist/components/StatusIndicators.cjs.js.map +1 -1
  284. package/dist/components/StatusIndicators.es.js +3 -3
  285. package/dist/components/StatusIndicators.es.js.map +1 -1
  286. package/dist/components/Steps.cjs.js +3 -3
  287. package/dist/components/Steps.cjs.js.map +1 -1
  288. package/dist/components/Steps.es.js +3 -3
  289. package/dist/components/Steps.es.js.map +1 -1
  290. package/dist/components/Tabs.cjs.js +3 -3
  291. package/dist/components/Tabs.es.js +3 -3
  292. package/dist/components/ThreadList.cjs.js +2 -2
  293. package/dist/components/ThreadList.cjs.js.map +1 -1
  294. package/dist/components/ThreadList.es.js +2 -2
  295. package/dist/components/ThreadList.es.js.map +1 -1
  296. package/dist/components/ThreadRail.cjs.js +1 -1
  297. package/dist/components/ThreadRail.es.js +1 -1
  298. package/dist/components/TokenBudget.cjs.js +1 -1
  299. package/dist/components/TokenBudget.cjs.js.map +1 -1
  300. package/dist/components/TokenBudget.es.js +1 -1
  301. package/dist/components/TokenBudget.es.js.map +1 -1
  302. package/dist/components/Tree.cjs.js +3 -3
  303. package/dist/components/Tree.cjs.js.map +1 -1
  304. package/dist/components/Tree.es.js +3 -3
  305. package/dist/components/Tree.es.js.map +1 -1
  306. package/dist/components/Truncate.cjs.js +1 -1
  307. package/dist/components/Truncate.es.js +1 -1
  308. package/dist/components/Workflow.cjs.js +36 -36
  309. package/dist/components/Workflow.cjs.js.map +1 -1
  310. package/dist/components/Workflow.es.js +36 -36
  311. package/dist/components/Workflow.es.js.map +1 -1
  312. package/dist/components/ai/ask-user.cjs.js +4 -3
  313. package/dist/components/ai/ask-user.cjs.js.map +1 -1
  314. package/dist/components/ai/ask-user.es.js +1 -1
  315. package/dist/components/ai/chat-event.cjs.js +6 -6
  316. package/dist/components/ai/chat-event.cjs.js.map +1 -1
  317. package/dist/components/ai/chat-event.es.js +7 -7
  318. package/dist/components/ai/chat-event.es.js.map +1 -1
  319. package/dist/components/ai/plan.cjs.js +2 -2
  320. package/dist/components/ai/plan.es.js +2 -2
  321. package/dist/components/ai/task-list.cjs.js +7 -7
  322. package/dist/components/ai/task-list.cjs.js.map +1 -1
  323. package/dist/components/ai/task-list.es.js +7 -7
  324. package/dist/components/ai/task-list.es.js.map +1 -1
  325. package/dist/components/ai/tool-approval.cjs.js +1 -1
  326. package/dist/components/ai/tool-approval.es.js +1 -1
  327. package/dist/components/ai/tool-call.cjs.js +8 -8
  328. package/dist/components/ai/tool-call.cjs.js.map +1 -1
  329. package/dist/components/ai/tool-call.es.js +9 -9
  330. package/dist/components/ai/tool-call.es.js.map +1 -1
  331. package/dist/components/fluid-hover-highlight.cjs.js +13 -35
  332. package/dist/components/fluid-hover-highlight.cjs.js.map +1 -1
  333. package/dist/components/fluid-hover-highlight.es.js +14 -33
  334. package/dist/components/fluid-hover-highlight.es.js.map +1 -1
  335. package/dist/{composer-BUoRnMDd.cjs → composer-B_Err196.cjs} +6 -6
  336. package/dist/{composer-BUoRnMDd.cjs.map → composer-B_Err196.cjs.map} +1 -1
  337. package/dist/{composer-CEL1glw7.js → composer-DJGAoBcn.js} +6 -6
  338. package/dist/{composer-CEL1glw7.js.map → composer-DJGAoBcn.js.map} +1 -1
  339. package/dist/{copy-button-BbDBpBMl.cjs → copy-button-C5dMlWsW.cjs} +2 -2
  340. package/dist/{copy-button-BbDBpBMl.cjs.map → copy-button-C5dMlWsW.cjs.map} +1 -1
  341. package/dist/{copy-button-2cwdZ3dW.js → copy-button-C6RswD_D.js} +2 -2
  342. package/dist/{copy-button-2cwdZ3dW.js.map → copy-button-C6RswD_D.js.map} +1 -1
  343. package/dist/{data-code-section-qujvEc6j.cjs → data-code-section-B-y2WPBl.cjs} +17 -19
  344. package/dist/data-code-section-B-y2WPBl.cjs.map +1 -0
  345. package/dist/{data-code-section-DKz9Okaz.js → data-code-section-DcocgDAN.js} +17 -19
  346. package/dist/data-code-section-DcocgDAN.js.map +1 -0
  347. package/dist/{data-keys-and-values-4pYpSbqS.cjs → data-keys-and-values-BduKvvC5.cjs} +2 -2
  348. package/dist/{data-keys-and-values-4pYpSbqS.cjs.map → data-keys-and-values-BduKvvC5.cjs.map} +1 -1
  349. package/dist/{data-keys-and-values-j0NVKPOl.js → data-keys-and-values-DhC4U4Yl.js} +2 -2
  350. package/dist/{data-keys-and-values-j0NVKPOl.js.map → data-keys-and-values-DhC4U4Yl.js.map} +1 -1
  351. package/dist/{data-list-DnSdaRES.js → data-list-gN4SP7a8.js} +5 -5
  352. package/dist/{data-list-DnSdaRES.js.map → data-list-gN4SP7a8.js.map} +1 -1
  353. package/dist/{data-list-skeleton-ADXw-opu.cjs → data-list-skeleton-DYG2LLri.cjs} +2 -2
  354. package/dist/{data-list-skeleton-ADXw-opu.cjs.map → data-list-skeleton-DYG2LLri.cjs.map} +1 -1
  355. package/dist/{data-list-skeleton-D7-glFuk.js → data-list-skeleton-PXHovGLv.js} +2 -2
  356. package/dist/{data-list-skeleton-D7-glFuk.js.map → data-list-skeleton-PXHovGLv.js.map} +1 -1
  357. package/dist/{data-list-spacer-DRHNUeeP.js → data-list-spacer-D-AQzTYw.js} +3 -3
  358. package/dist/{data-list-spacer-DRHNUeeP.js.map → data-list-spacer-D-AQzTYw.js.map} +1 -1
  359. package/dist/{data-list-spacer-EWo65MrK.cjs → data-list-spacer-MpuBsXjL.cjs} +3 -3
  360. package/dist/{data-list-spacer-EWo65MrK.cjs.map → data-list-spacer-MpuBsXjL.cjs.map} +1 -1
  361. package/dist/{data-list-top-DLwt_Sv-.js → data-list-top-BTeM7hI4.js} +5 -5
  362. package/dist/{data-list-top-DLwt_Sv-.js.map → data-list-top-BTeM7hI4.js.map} +1 -1
  363. package/dist/{data-list-top-RK_yX6z8.cjs → data-list-top-DDux1Eu4.cjs} +5 -5
  364. package/dist/{data-list-top-RK_yX6z8.cjs.map → data-list-top-DDux1Eu4.cjs.map} +1 -1
  365. package/dist/{data-list-CypPKOQ_.cjs → data-list-yJm-3f2w.cjs} +5 -5
  366. package/dist/{data-list-CypPKOQ_.cjs.map → data-list-yJm-3f2w.cjs.map} +1 -1
  367. package/dist/{data-panel-CWZJKBeW.cjs → data-panel-CM3N_4M7.cjs} +9 -9
  368. package/dist/{data-panel-CWZJKBeW.cjs.map → data-panel-CM3N_4M7.cjs.map} +1 -1
  369. package/dist/{data-panel-CWjgS1Gh.js → data-panel-D3UfzCoE.js} +9 -9
  370. package/dist/{data-panel-CWjgS1Gh.js.map → data-panel-D3UfzCoE.js.map} +1 -1
  371. package/dist/{date-time-range-picker-C6hjZswK.cjs → date-time-range-picker-2Pkg-FoU.cjs} +6 -7
  372. package/dist/{date-time-range-picker-C6hjZswK.cjs.map → date-time-range-picker-2Pkg-FoU.cjs.map} +1 -1
  373. package/dist/{date-time-range-picker-BcjLbkGu.js → date-time-range-picker-DHg-fuV3.js} +5 -6
  374. package/dist/{date-time-range-picker-BcjLbkGu.js.map → date-time-range-picker-DHg-fuV3.js.map} +1 -1
  375. package/dist/{dialog-Dm33cZqt.cjs → dialog-Cyj59QsZ.cjs} +3 -3
  376. package/dist/{dialog-Dm33cZqt.cjs.map → dialog-Cyj59QsZ.cjs.map} +1 -1
  377. package/dist/{dialog-DRpMek34.js → dialog-D8fuBETk.js} +3 -3
  378. package/dist/{dialog-DRpMek34.js.map → dialog-D8fuBETk.js.map} +1 -1
  379. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
  380. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
  381. package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +1 -1
  382. package/dist/domains/chat/attachments/composer-attachment-list.es.js +1 -1
  383. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
  384. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
  385. package/dist/domains/chat/components/badge-wrapper.cjs.js +2 -2
  386. package/dist/domains/chat/components/badge-wrapper.cjs.js.map +1 -1
  387. package/dist/domains/chat/components/badge-wrapper.es.js +2 -2
  388. package/dist/domains/chat/components/badge-wrapper.es.js.map +1 -1
  389. package/dist/domains/chat/components/loading-badge.cjs.js +1 -1
  390. package/dist/domains/chat/components/loading-badge.es.js +1 -1
  391. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +4 -4
  392. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js.map +1 -1
  393. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +4 -4
  394. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js.map +1 -1
  395. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  396. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  397. package/dist/domains/chat/messages/reasoning-streaming-line.cjs.js +1 -1
  398. package/dist/domains/chat/messages/reasoning-streaming-line.cjs.js.map +1 -1
  399. package/dist/domains/chat/messages/reasoning-streaming-line.es.js +1 -1
  400. package/dist/domains/chat/messages/reasoning-streaming-line.es.js.map +1 -1
  401. package/dist/domains/chat/messages/reasoning.cjs.js +4 -4
  402. package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
  403. package/dist/domains/chat/messages/reasoning.es.js +4 -4
  404. package/dist/domains/chat/messages/reasoning.es.js.map +1 -1
  405. package/dist/domains/chat/messages/renderers/message-text.cjs.js +2 -2
  406. package/dist/domains/chat/messages/renderers/message-text.es.js +2 -2
  407. package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
  408. package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
  409. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  410. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  411. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +6 -6
  412. package/dist/domains/chat/messages/system-reminder-badge.cjs.js.map +1 -1
  413. package/dist/domains/chat/messages/system-reminder-badge.es.js +6 -6
  414. package/dist/domains/chat/messages/system-reminder-badge.es.js.map +1 -1
  415. package/dist/domains/chat/messages/tripwire-notice.cjs.js +3 -3
  416. package/dist/domains/chat/messages/tripwire-notice.cjs.js.map +1 -1
  417. package/dist/domains/chat/messages/tripwire-notice.es.js +3 -3
  418. package/dist/domains/chat/messages/tripwire-notice.es.js.map +1 -1
  419. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +2 -2
  420. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js.map +1 -1
  421. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +2 -2
  422. package/dist/domains/chat/tools/badges/ask-user-badge.es.js.map +1 -1
  423. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +5 -5
  424. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
  425. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +5 -5
  426. package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
  427. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +29 -29
  428. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js.map +1 -1
  429. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +29 -29
  430. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
  431. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +11 -11
  432. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js.map +1 -1
  433. package/dist/domains/chat/tools/badges/observation-renderer.es.js +11 -11
  434. package/dist/domains/chat/tools/badges/observation-renderer.es.js.map +1 -1
  435. package/dist/domains/chat/tools/badges/tool-approval-buttons.cjs.js +1 -1
  436. package/dist/domains/chat/tools/badges/tool-approval-buttons.es.js +1 -1
  437. package/dist/domains/logs/components/log-details-view.cjs.js +10 -12
  438. package/dist/domains/logs/components/log-details-view.cjs.js.map +1 -1
  439. package/dist/domains/logs/components/log-details-view.es.js +10 -12
  440. package/dist/domains/logs/components/log-details-view.es.js.map +1 -1
  441. package/dist/domains/logs/components/logs-error-content.cjs.js +4 -7
  442. package/dist/domains/logs/components/logs-error-content.cjs.js.map +1 -1
  443. package/dist/domains/logs/components/logs-error-content.es.js +4 -7
  444. package/dist/domains/logs/components/logs-error-content.es.js.map +1 -1
  445. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
  446. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  447. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  448. package/dist/domains/logs/components/logs-toolbar.cjs.js.map +1 -1
  449. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  450. package/dist/domains/logs/components/logs-toolbar.es.js.map +1 -1
  451. package/dist/domains/logs/components/no-logs-info.cjs.js +6 -6
  452. package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
  453. package/dist/domains/logs/components/no-logs-info.es.js +7 -7
  454. package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
  455. package/dist/domains/memory/components/flame-graph.cjs.js +19 -19
  456. package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
  457. package/dist/domains/memory/components/flame-graph.es.js +19 -19
  458. package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
  459. package/dist/domains/memory/components/memory-studio-panel.cjs.js +4 -4
  460. package/dist/domains/memory/components/memory-studio-panel.cjs.js.map +1 -1
  461. package/dist/domains/memory/components/memory-studio-panel.es.js +4 -4
  462. package/dist/domains/memory/components/memory-studio-panel.es.js.map +1 -1
  463. package/dist/domains/memory/components/observation-detail-view.cjs.js +17 -18
  464. package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
  465. package/dist/domains/memory/components/observation-detail-view.es.js +17 -18
  466. package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
  467. package/dist/domains/memory/components/thread-context-progress.cjs.js +3 -3
  468. package/dist/domains/memory/components/thread-context-progress.cjs.js.map +1 -1
  469. package/dist/domains/memory/components/thread-context-progress.es.js +3 -3
  470. package/dist/domains/memory/components/thread-context-progress.es.js.map +1 -1
  471. package/dist/domains/metrics/components/bar-list.cjs.js +9 -9
  472. package/dist/domains/metrics/components/bar-list.cjs.js.map +1 -1
  473. package/dist/domains/metrics/components/bar-list.es.js +9 -9
  474. package/dist/domains/metrics/components/bar-list.es.js.map +1 -1
  475. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  476. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  477. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  478. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  479. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  480. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  481. package/dist/domains/metrics/components/latency-card-view.cjs.js +5 -5
  482. package/dist/domains/metrics/components/latency-card-view.es.js +5 -5
  483. package/dist/domains/metrics/components/memory-card-view.cjs.js +5 -5
  484. package/dist/domains/metrics/components/memory-card-view.es.js +5 -5
  485. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
  486. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
  487. package/dist/domains/metrics/components/scores-card-view.cjs.js +6 -6
  488. package/dist/domains/metrics/components/scores-card-view.es.js +6 -6
  489. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +5 -5
  490. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +5 -5
  491. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +5 -5
  492. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +5 -5
  493. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +5 -5
  494. package/dist/domains/metrics/components/traces-volume-card-view.es.js +5 -5
  495. package/dist/domains/traces/components/no-traces-info.cjs.js +2 -3
  496. package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
  497. package/dist/domains/traces/components/no-traces-info.es.js +2 -3
  498. package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
  499. package/dist/domains/traces/components/span-data-panel-view.cjs.js +7 -7
  500. package/dist/domains/traces/components/span-data-panel-view.es.js +7 -7
  501. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  502. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  503. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +3 -3
  504. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +3 -3
  505. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +3 -3
  506. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +3 -3
  507. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +4 -4
  508. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +4 -4
  509. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  510. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  511. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +3 -3
  512. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +3 -3
  513. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +4 -6
  514. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js.map +1 -1
  515. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +4 -6
  516. package/dist/domains/traces/components/span-payload/span-payload-section.es.js.map +1 -1
  517. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  518. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  519. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  520. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  521. package/dist/domains/traces/components/span-timeline-row.cjs.js +4 -4
  522. package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
  523. package/dist/domains/traces/components/span-timeline-row.es.js +4 -4
  524. package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
  525. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +2 -2
  526. package/dist/domains/traces/components/span-timing-hover-card.es.js +2 -2
  527. package/dist/domains/traces/components/span-token-usage.cjs.js +5 -5
  528. package/dist/domains/traces/components/span-token-usage.cjs.js.map +1 -1
  529. package/dist/domains/traces/components/span-token-usage.es.js +5 -5
  530. package/dist/domains/traces/components/span-token-usage.es.js.map +1 -1
  531. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +2 -2
  532. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js.map +1 -1
  533. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +2 -2
  534. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js.map +1 -1
  535. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +4 -4
  536. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +4 -4
  537. package/dist/domains/traces/components/thread-trace/thread-trace-rail.cjs.js +1 -1
  538. package/dist/domains/traces/components/thread-trace/thread-trace-rail.es.js +1 -1
  539. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +2 -2
  540. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js.map +1 -1
  541. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +2 -2
  542. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js.map +1 -1
  543. package/dist/domains/traces/components/timeline-name-col.cjs.js +2 -2
  544. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  545. package/dist/domains/traces/components/timeline-name-col.es.js +2 -2
  546. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  547. package/dist/domains/traces/components/timeline-structure-sign.cjs.js +1 -1
  548. package/dist/domains/traces/components/timeline-structure-sign.cjs.js.map +1 -1
  549. package/dist/domains/traces/components/timeline-structure-sign.es.js +1 -1
  550. package/dist/domains/traces/components/timeline-structure-sign.es.js.map +1 -1
  551. package/dist/domains/traces/components/timeline-timing-col.cjs.js +2 -2
  552. package/dist/domains/traces/components/timeline-timing-col.cjs.js.map +1 -1
  553. package/dist/domains/traces/components/timeline-timing-col.es.js +2 -2
  554. package/dist/domains/traces/components/timeline-timing-col.es.js.map +1 -1
  555. package/dist/domains/traces/components/trace-columns-menu.cjs.js +8 -8
  556. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  557. package/dist/domains/traces/components/trace-columns-menu.es.js +6 -6
  558. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  559. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +11 -13
  560. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  561. package/dist/domains/traces/components/trace-data-panel-view.es.js +11 -13
  562. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  563. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  564. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  565. package/dist/domains/traces/components/trace-keys-and-values.cjs.js +1 -1
  566. package/dist/domains/traces/components/trace-keys-and-values.es.js +1 -1
  567. package/dist/domains/traces/components/trace-span-timeline.cjs.js +1 -1
  568. package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
  569. package/dist/domains/traces/components/trace-span-timeline.es.js +1 -1
  570. package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
  571. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  572. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  573. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  574. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  575. package/dist/domains/traces/components/traces-error-content.cjs.js +3 -3
  576. package/dist/domains/traces/components/traces-error-content.cjs.js.map +1 -1
  577. package/dist/domains/traces/components/traces-error-content.es.js +3 -3
  578. package/dist/domains/traces/components/traces-error-content.es.js.map +1 -1
  579. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +2 -2
  580. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +2 -2
  581. package/dist/domains/traces/components/traces-list-view.cjs.js +5 -5
  582. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  583. package/dist/domains/traces/components/traces-list-view.es.js +5 -5
  584. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  585. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +3 -1
  586. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  587. package/dist/domains/traces/components/traces-page-skeleton.es.js +3 -1
  588. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  589. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +4 -2
  590. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js.map +1 -1
  591. package/dist/domains/traces/hooks/use-trace-url-state.es.js +5 -3
  592. package/dist/domains/traces/hooks/use-trace-url-state.es.js.map +1 -1
  593. package/dist/domains/traces/trace-filters.cjs.js +92 -11
  594. package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
  595. package/dist/domains/traces/trace-filters.es.js +87 -13
  596. package/dist/domains/traces/trace-filters.es.js.map +1 -1
  597. package/dist/domains/traces/trace-query-filters.cjs.js +76 -45
  598. package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
  599. package/dist/domains/traces/trace-query-filters.es.js +76 -46
  600. package/dist/domains/traces/trace-query-filters.es.js.map +1 -1
  601. package/dist/domains/traces.cjs.js +7 -0
  602. package/dist/domains/traces.cjs.js.map +1 -1
  603. package/dist/domains/traces.es.js +2 -2
  604. package/dist/{drawer-BL5shtHH.cjs → drawer-9eoZbmRK.cjs} +5 -5
  605. package/dist/{drawer-BL5shtHH.cjs.map → drawer-9eoZbmRK.cjs.map} +1 -1
  606. package/dist/{drawer-Bv2DRY8E.js → drawer-DnfOugYZ.js} +5 -5
  607. package/dist/{drawer-Bv2DRY8E.js.map → drawer-DnfOugYZ.js.map} +1 -1
  608. package/dist/{dropdown-menu-DL0MzjEb.js → dropdown-menu-DpEn6HwK.js} +2 -7
  609. package/dist/dropdown-menu-DpEn6HwK.js.map +1 -0
  610. package/dist/{dropdown-menu-DNRCA4Gj.cjs → dropdown-menu-j2y37TL5.cjs} +2 -7
  611. package/dist/dropdown-menu-j2y37TL5.cjs.map +1 -0
  612. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +4 -4
  613. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js.map +1 -1
  614. package/dist/ee/signals/components/entity-index-compact-grid.es.js +4 -4
  615. package/dist/ee/signals/components/entity-index-compact-grid.es.js.map +1 -1
  616. package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
  617. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  618. package/dist/ee/signals/components/entity-index-list.es.js +3 -1
  619. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  620. package/dist/ee/signals/components/signals-empty-state.cjs.js +34 -34
  621. package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
  622. package/dist/ee/signals/components/signals-empty-state.es.js +34 -34
  623. package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
  624. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +5 -7
  625. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js.map +1 -1
  626. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +5 -7
  627. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js.map +1 -1
  628. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +15 -17
  629. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  630. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +16 -18
  631. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  632. package/dist/ee/signals/examples-pager.cjs.js +2 -2
  633. package/dist/ee/signals/examples-pager.cjs.js.map +1 -1
  634. package/dist/ee/signals/examples-pager.es.js +2 -2
  635. package/dist/ee/signals/examples-pager.es.js.map +1 -1
  636. package/dist/ee/signals/flow-card.cjs.js +6 -6
  637. package/dist/ee/signals/flow-card.cjs.js.map +1 -1
  638. package/dist/ee/signals/flow-card.es.js +6 -6
  639. package/dist/ee/signals/flow-card.es.js.map +1 -1
  640. package/dist/ee/signals/lifeline-row.cjs.js +4 -4
  641. package/dist/ee/signals/lifeline-row.cjs.js.map +1 -1
  642. package/dist/ee/signals/lifeline-row.es.js +4 -4
  643. package/dist/ee/signals/lifeline-row.es.js.map +1 -1
  644. package/dist/ee/signals/noise-detail-panel.cjs.js +12 -12
  645. package/dist/ee/signals/noise-detail-panel.cjs.js.map +1 -1
  646. package/dist/ee/signals/noise-detail-panel.es.js +12 -12
  647. package/dist/ee/signals/noise-detail-panel.es.js.map +1 -1
  648. package/dist/ee/signals/sankey-signals.cjs.js +6 -6
  649. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
  650. package/dist/ee/signals/sankey-signals.es.js +6 -6
  651. package/dist/ee/signals/sankey-signals.es.js.map +1 -1
  652. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +13 -14
  653. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
  654. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +6 -7
  655. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
  656. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +9 -9
  657. package/dist/ee/signals/settings/trace-signal-settings.cjs.js.map +1 -1
  658. package/dist/ee/signals/settings/trace-signal-settings.es.js +9 -9
  659. package/dist/ee/signals/settings/trace-signal-settings.es.js.map +1 -1
  660. package/dist/ee/signals/signal-delta-column.cjs.js +7 -7
  661. package/dist/ee/signals/signal-delta-column.cjs.js.map +1 -1
  662. package/dist/ee/signals/signal-delta-column.es.js +7 -7
  663. package/dist/ee/signals/signal-delta-column.es.js.map +1 -1
  664. package/dist/ee/signals/signal-lifelines.cjs.js +2 -2
  665. package/dist/ee/signals/signal-lifelines.cjs.js.map +1 -1
  666. package/dist/ee/signals/signal-lifelines.es.js +2 -2
  667. package/dist/ee/signals/signal-lifelines.es.js.map +1 -1
  668. package/dist/ee/signals/signals-error-state.cjs.js +3 -3
  669. package/dist/ee/signals/signals-error-state.cjs.js.map +1 -1
  670. package/dist/ee/signals/signals-error-state.es.js +3 -3
  671. package/dist/ee/signals/signals-error-state.es.js.map +1 -1
  672. package/dist/ee/signals/signals-loading-skeleton.cjs.js +1 -1
  673. package/dist/ee/signals/signals-loading-skeleton.cjs.js.map +1 -1
  674. package/dist/ee/signals/signals-loading-skeleton.es.js +1 -1
  675. package/dist/ee/signals/signals-loading-skeleton.es.js.map +1 -1
  676. package/dist/ee/signals/snapshot-timeline.cjs.js +5 -5
  677. package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -1
  678. package/dist/ee/signals/snapshot-timeline.es.js +5 -5
  679. package/dist/ee/signals/snapshot-timeline.es.js.map +1 -1
  680. package/dist/ee/signals/sortable-signal-headers.cjs.js +1 -1
  681. package/dist/ee/signals/sortable-signal-headers.cjs.js.map +1 -1
  682. package/dist/ee/signals/sortable-signal-headers.es.js +1 -1
  683. package/dist/ee/signals/sortable-signal-headers.es.js.map +1 -1
  684. package/dist/ee/signals/theme-compare-sparkline.cjs.js +1 -1
  685. package/dist/ee/signals/theme-compare-sparkline.cjs.js.map +1 -1
  686. package/dist/ee/signals/theme-compare-sparkline.es.js +1 -1
  687. package/dist/ee/signals/theme-compare-sparkline.es.js.map +1 -1
  688. package/dist/ee/signals/theme-compare.cjs.js +5 -5
  689. package/dist/ee/signals/theme-compare.cjs.js.map +1 -1
  690. package/dist/ee/signals/theme-compare.es.js +5 -5
  691. package/dist/ee/signals/theme-compare.es.js.map +1 -1
  692. package/dist/ee/signals/theme-detail-panel.cjs.js +18 -18
  693. package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -1
  694. package/dist/ee/signals/theme-detail-panel.es.js +18 -18
  695. package/dist/ee/signals/theme-detail-panel.es.js.map +1 -1
  696. package/dist/ee/signals/theme-filter-banner.cjs.js +2 -2
  697. package/dist/ee/signals/theme-filter-banner.cjs.js.map +1 -1
  698. package/dist/ee/signals/theme-filter-banner.es.js +2 -2
  699. package/dist/ee/signals/theme-filter-banner.es.js.map +1 -1
  700. package/dist/ee/signals/theme-lifelines.cjs.js +1 -1
  701. package/dist/ee/signals/theme-lifelines.cjs.js.map +1 -1
  702. package/dist/ee/signals/theme-lifelines.es.js +1 -1
  703. package/dist/ee/signals/theme-lifelines.es.js.map +1 -1
  704. package/dist/ee/signals/theme-trend-chart.cjs.js +1 -1
  705. package/dist/ee/signals/theme-trend-chart.cjs.js.map +1 -1
  706. package/dist/ee/signals/theme-trend-chart.es.js +1 -1
  707. package/dist/ee/signals/theme-trend-chart.es.js.map +1 -1
  708. package/dist/ee/signals/trace-insight-view.cjs.js +12 -12
  709. package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
  710. package/dist/ee/signals/trace-insight-view.es.js +12 -12
  711. package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
  712. package/dist/ee/signals/trace-intelligence-explainer.cjs.js +2 -2
  713. package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
  714. package/dist/ee/signals/trace-intelligence-explainer.es.js +2 -2
  715. package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
  716. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  717. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  718. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  719. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  720. package/dist/ee/topics/components/topics-layout.cjs.js +3 -3
  721. package/dist/ee/topics/components/topics-layout.cjs.js.map +1 -1
  722. package/dist/ee/topics/components/topics-layout.es.js +3 -3
  723. package/dist/ee/topics/components/topics-layout.es.js.map +1 -1
  724. package/dist/{field-block-Dy1IaWbv.cjs → field-error-id-6EfqmQ4C.cjs} +5 -2
  725. package/dist/field-error-id-6EfqmQ4C.cjs.map +1 -0
  726. package/dist/{field-block-DWkbNcsV.js → field-error-id-DyWx33Fu.js} +5 -3
  727. package/dist/field-error-id-DyWx33Fu.js.map +1 -0
  728. package/dist/{filter-bar-chip-BxI0NgEz.cjs → filter-bar-chip-D8O9jpCW.cjs} +300 -69
  729. package/dist/filter-bar-chip-D8O9jpCW.cjs.map +1 -0
  730. package/dist/{filter-bar-chip-C-JxWUU8.js → filter-bar-chip-DMhUPTt8.js} +297 -71
  731. package/dist/filter-bar-chip-DMhUPTt8.js.map +1 -0
  732. package/dist/filter-bar-chip.css +33 -1
  733. package/dist/hooks/use-fluid-hover.cjs.js +15 -9
  734. package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
  735. package/dist/hooks/use-fluid-hover.es.js +15 -9
  736. package/dist/hooks/use-fluid-hover.es.js.map +1 -1
  737. package/dist/{horizontal-bars-nyWGmQ7g.cjs → horizontal-bars-BkVi2dEb.cjs} +7 -7
  738. package/dist/{horizontal-bars-nyWGmQ7g.cjs.map → horizontal-bars-BkVi2dEb.cjs.map} +1 -1
  739. package/dist/{horizontal-bars-CksEKcCE.js → horizontal-bars-nTOFylzc.js} +7 -7
  740. package/dist/{horizontal-bars-CksEKcCE.js.map → horizontal-bars-nTOFylzc.js.map} +1 -1
  741. package/dist/{hover-card-Ch5smNcf.js → hover-card-B1-n3amu.js} +3 -3
  742. package/dist/{hover-card-Ch5smNcf.js.map → hover-card-B1-n3amu.js.map} +1 -1
  743. package/dist/{hover-card-DdHnkGcs.cjs → hover-card-DVfZ2INZ.cjs} +3 -3
  744. package/dist/{hover-card-DdHnkGcs.cjs.map → hover-card-DVfZ2INZ.cjs.map} +1 -1
  745. package/dist/icons/Icon.cjs.js +1 -1
  746. package/dist/icons/Icon.cjs.js.map +1 -1
  747. package/dist/icons/Icon.es.js +1 -1
  748. package/dist/icons/Icon.es.js.map +1 -1
  749. package/dist/{input-group-CvWwK1Vz.cjs → input-group-2yWKRuq9.cjs} +7 -5
  750. package/dist/input-group-2yWKRuq9.cjs.map +1 -0
  751. package/dist/{input-group-BEdHivvy.js → input-group-Czviwtvr.js} +8 -6
  752. package/dist/input-group-Czviwtvr.js.map +1 -0
  753. package/dist/{kbd-CINtikLh.js → kbd-BDVTQHD_.js} +2 -2
  754. package/dist/{kbd-CINtikLh.js.map → kbd-BDVTQHD_.js.map} +1 -1
  755. package/dist/{kbd-B-Z2sNvK.cjs → kbd-BptPsKP6.cjs} +2 -2
  756. package/dist/{kbd-B-Z2sNvK.cjs.map → kbd-BptPsKP6.cjs.map} +1 -1
  757. package/dist/layout/tabbed-container.cjs.js +6 -6
  758. package/dist/layout/tabbed-container.es.js +6 -6
  759. package/dist/{list-search-BTW0Neuc.js → list-search-Jm6SLN0g.js} +2 -2
  760. package/dist/{list-search-BTW0Neuc.js.map → list-search-Jm6SLN0g.js.map} +1 -1
  761. package/dist/{list-search-vyxsZMAK.cjs → list-search-s3DRIfz6.cjs} +2 -2
  762. package/dist/{list-search-vyxsZMAK.cjs.map → list-search-s3DRIfz6.cjs.map} +1 -1
  763. package/dist/{logs-data-list-BSHJPGi6.cjs → logs-data-list-C5tjRtkQ.cjs} +5 -5
  764. package/dist/{logs-data-list-BSHJPGi6.cjs.map → logs-data-list-C5tjRtkQ.cjs.map} +1 -1
  765. package/dist/{logs-data-list-CG-UgC_x.js → logs-data-list-Cl3abARp.js} +5 -5
  766. package/dist/{logs-data-list-CG-UgC_x.js.map → logs-data-list-Cl3abARp.js.map} +1 -1
  767. package/dist/{main-sidebar-link-active-DbCvKZy2.cjs → main-sidebar-BsEmFpKN.cjs} +122 -9
  768. package/dist/main-sidebar-BsEmFpKN.cjs.map +1 -0
  769. package/dist/{main-sidebar-link-active-CmDoiX6g.js → main-sidebar-C5PU7zgc.js} +123 -11
  770. package/dist/main-sidebar-C5PU7zgc.js.map +1 -0
  771. package/dist/{markdown-renderer-D8qYAU7K.cjs → markdown-renderer-C74wABzc.cjs} +6 -7
  772. package/dist/markdown-renderer-C74wABzc.cjs.map +1 -0
  773. package/dist/{markdown-renderer-B0gTm_Ea.js → markdown-renderer-DZAcPOxC.js} +6 -7
  774. package/dist/markdown-renderer-DZAcPOxC.js.map +1 -0
  775. package/dist/{message-BrwbcLPi.js → message-Cs8NW-MR.js} +2 -2
  776. package/dist/{message-BrwbcLPi.js.map → message-Cs8NW-MR.js.map} +1 -1
  777. package/dist/{message-CszposMZ.cjs → message-D9b33Pf_.cjs} +2 -2
  778. package/dist/{message-CszposMZ.cjs.map → message-D9b33Pf_.cjs.map} +1 -1
  779. package/dist/{metrics-card-BUJxiwec.cjs → metrics-card-BdWGPlnt.cjs} +8 -8
  780. package/dist/metrics-card-BdWGPlnt.cjs.map +1 -0
  781. package/dist/{metrics-card-BlBt1WHw.js → metrics-card-C5znWn69.js} +8 -8
  782. package/dist/metrics-card-C5znWn69.js.map +1 -0
  783. package/dist/{metrics-kpi-card-CBSNmtc5.js → metrics-kpi-card-CinKYTBn.js} +4 -4
  784. package/dist/{metrics-kpi-card-CBSNmtc5.js.map → metrics-kpi-card-CinKYTBn.js.map} +1 -1
  785. package/dist/{metrics-kpi-card-CgqmNcEC.cjs → metrics-kpi-card-HU17WRTT.cjs} +4 -4
  786. package/dist/{metrics-kpi-card-CgqmNcEC.cjs.map → metrics-kpi-card-HU17WRTT.cjs.map} +1 -1
  787. package/dist/{metrics-line-chart-B_sP3eiL.cjs → metrics-line-chart-0FR3SYSt.cjs} +3 -3
  788. package/dist/{metrics-line-chart-B_sP3eiL.cjs.map → metrics-line-chart-0FR3SYSt.cjs.map} +1 -1
  789. package/dist/{metrics-line-chart-DHyrDPkJ.js → metrics-line-chart-knlgw8bV.js} +3 -3
  790. package/dist/{metrics-line-chart-DHyrDPkJ.js.map → metrics-line-chart-knlgw8bV.js.map} +1 -1
  791. package/dist/new/layout/app-shell.cjs.js +23 -28
  792. package/dist/new/layout/app-shell.cjs.js.map +1 -1
  793. package/dist/new/layout/app-shell.es.js +23 -28
  794. package/dist/new/layout/app-shell.es.js.map +1 -1
  795. package/dist/new/layout/page-header.cjs.js +1 -1
  796. package/dist/new/layout/page-header.es.js +1 -1
  797. package/dist/new/settings.cjs.js +1 -1
  798. package/dist/new/settings.es.js +1 -1
  799. package/dist/new/sidebar.cjs.js +40 -40
  800. package/dist/new/sidebar.cjs.js.map +1 -1
  801. package/dist/new/sidebar.es.js +10 -10
  802. package/dist/new/sidebar.es.js.map +1 -1
  803. package/dist/{page-header-BIoUf7MA.js → page-header-CSigVThQ.js} +2 -2
  804. package/dist/{page-header-BIoUf7MA.js.map → page-header-CSigVThQ.js.map} +1 -1
  805. package/dist/{page-header-BBlPmW-T.cjs → page-header-DzEEkOca.cjs} +2 -2
  806. package/dist/{page-header-BBlPmW-T.cjs.map → page-header-DzEEkOca.cjs.map} +1 -1
  807. package/dist/primitives/control-size.cjs.js +24 -2
  808. package/dist/primitives/control-size.cjs.js.map +1 -1
  809. package/dist/primitives/control-size.es.js +5 -3
  810. package/dist/primitives/control-size.es.js.map +1 -1
  811. package/dist/primitives/fluid-menu.cjs.js +30 -18
  812. package/dist/primitives/fluid-menu.cjs.js.map +1 -1
  813. package/dist/primitives/fluid-menu.es.js +30 -18
  814. package/dist/primitives/fluid-menu.es.js.map +1 -1
  815. package/dist/primitives/form-element.cjs.js +4 -4
  816. package/dist/primitives/form-element.cjs.js.map +1 -1
  817. package/dist/primitives/form-element.es.js +4 -3
  818. package/dist/primitives/form-element.es.js.map +1 -1
  819. package/dist/primitives/menu-item.cjs.js +7 -4
  820. package/dist/primitives/menu-item.cjs.js.map +1 -1
  821. package/dist/primitives/menu-item.es.js +7 -4
  822. package/dist/primitives/menu-item.es.js.map +1 -1
  823. package/dist/primitives/trigger-button.cjs.js +1 -1
  824. package/dist/primitives/trigger-button.es.js +1 -1
  825. package/dist/{property-filter-applied-BBiUbtr0.js → property-filter-applied-C15IJHLs.js} +30 -36
  826. package/dist/property-filter-applied-C15IJHLs.js.map +1 -0
  827. package/dist/{property-filter-applied-BmxCPe2d.cjs → property-filter-applied-DtSjGypB.cjs} +30 -36
  828. package/dist/property-filter-applied-DtSjGypB.cjs.map +1 -0
  829. package/dist/radio-group-BdEPWGzi.cjs +62 -0
  830. package/dist/radio-group-BdEPWGzi.cjs.map +1 -0
  831. package/dist/radio-group-CFZXUXZ5.js +40 -0
  832. package/dist/radio-group-CFZXUXZ5.js.map +1 -0
  833. package/dist/resize/collapsible-panel.cjs.js +1 -1
  834. package/dist/resize/collapsible-panel.es.js +1 -1
  835. package/dist/resize/panel-drawer.cjs.js +1 -1
  836. package/dist/resize/panel-drawer.es.js +1 -1
  837. package/dist/{sankey-chart-Bcm9jMhe.cjs → sankey-chart-C1e0nRc3.cjs} +4 -4
  838. package/dist/{sankey-chart-Bcm9jMhe.cjs.map → sankey-chart-C1e0nRc3.cjs.map} +1 -1
  839. package/dist/{sankey-chart-CqngN2lw.js → sankey-chart-jvMXKzud.js} +4 -4
  840. package/dist/{sankey-chart-CqngN2lw.js.map → sankey-chart-jvMXKzud.js.map} +1 -1
  841. package/dist/{scroll-area-Qjf7e0Ik.cjs → scroll-area-BzOyuS8Y.cjs} +2 -2
  842. package/dist/{scroll-area-Qjf7e0Ik.cjs.map → scroll-area-BzOyuS8Y.cjs.map} +1 -1
  843. package/dist/{scroll-area-CdQ_5bLm.js → scroll-area-DyTZoISq.js} +2 -2
  844. package/dist/{scroll-area-CdQ_5bLm.js.map → scroll-area-DyTZoISq.js.map} +1 -1
  845. package/dist/{search-field-block-D0PUUCAE.cjs → search-field-block-ChXCuPrB.cjs} +9 -10
  846. package/dist/{search-field-block-D0PUUCAE.cjs.map → search-field-block-ChXCuPrB.cjs.map} +1 -1
  847. package/dist/{search-field-block-B5vUVTpl.js → search-field-block-nVeIkFXN.js} +3 -4
  848. package/dist/{search-field-block-B5vUVTpl.js.map → search-field-block-nVeIkFXN.js.map} +1 -1
  849. package/dist/{select--DXpTg0O.js → select-CDIt5aab.js} +3 -6
  850. package/dist/select-CDIt5aab.js.map +1 -0
  851. package/dist/{select-7ACAVdGX.cjs → select-CH5XO18L.cjs} +3 -6
  852. package/dist/select-CH5XO18L.cjs.map +1 -0
  853. package/dist/{select-field-block-Bu7UXI2H.js → select-field-block-BtjE0P5d.js} +3 -4
  854. package/dist/{select-field-block-Bu7UXI2H.js.map → select-field-block-BtjE0P5d.js.map} +1 -1
  855. package/dist/{select-field-block-W2u2WmN3.cjs → select-field-block-CpzMTsP6.cjs} +9 -10
  856. package/dist/{select-field-block-W2u2WmN3.cjs.map → select-field-block-CpzMTsP6.cjs.map} +1 -1
  857. package/dist/{settings-layout-NP_1dC-e.cjs → settings-layout-BGvMSClL.cjs} +2 -2
  858. package/dist/{settings-layout-NP_1dC-e.cjs.map → settings-layout-BGvMSClL.cjs.map} +1 -1
  859. package/dist/{settings-layout-C80s-D31.js → settings-layout-DA-JWqW3.js} +2 -2
  860. package/dist/{settings-layout-C80s-D31.js.map → settings-layout-DA-JWqW3.js.map} +1 -1
  861. package/dist/{span-payload-primitives-DnRsP93D.cjs → span-payload-primitives-70wznWZl.cjs} +6 -6
  862. package/dist/{span-payload-primitives-DnRsP93D.cjs.map → span-payload-primitives-70wznWZl.cjs.map} +1 -1
  863. package/dist/{span-payload-primitives-sbxk4CHC.js → span-payload-primitives-BvoMauDb.js} +6 -6
  864. package/dist/{span-payload-primitives-sbxk4CHC.js.map → span-payload-primitives-BvoMauDb.js.map} +1 -1
  865. package/dist/{spinner-CqP-NaB2.cjs → spinner-BCpN7LL9.cjs} +9 -3
  866. package/dist/spinner-BCpN7LL9.cjs.map +1 -0
  867. package/dist/{spinner-D2C2DYw8.js → spinner-ylbE0TJA.js} +9 -3
  868. package/dist/spinner-ylbE0TJA.js.map +1 -0
  869. package/dist/src/components/fluid-hover-highlight.d.ts +4 -58
  870. package/dist/src/domains/traces/components/traces-error-content.d.ts +2 -2
  871. package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +5 -3
  872. package/dist/src/domains/traces/trace-filters.d.ts +19 -4
  873. package/dist/src/domains/traces/trace-query-filters.d.ts +13 -1
  874. package/dist/src/ds/components/ActionRow/action-row.d.ts +9 -0
  875. package/dist/src/ds/components/ActionRow/action-row.stories.d.ts +8 -0
  876. package/dist/src/ds/components/ActionRow/index.d.ts +5 -0
  877. package/dist/src/ds/components/Badge/badge.stories.d.ts +0 -1
  878. package/dist/src/ds/components/ButtonsGroup/buttons-group.d.ts +11 -11
  879. package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +17 -7
  880. package/dist/src/ds/components/EmptyState/EmptyState.d.ts +8 -2
  881. package/dist/src/ds/components/EmptyState/empty-state.stories.d.ts +1 -0
  882. package/dist/src/ds/components/ErrorState/ErrorState.d.ts +3 -1
  883. package/dist/src/ds/components/ErrorState/error-state.stories.d.ts +1 -0
  884. package/dist/src/ds/components/FilterBar/filter-bar-advanced-chip.d.ts +10 -0
  885. package/dist/src/ds/components/FilterBar/filter-bar-context.d.ts +46 -9
  886. package/dist/src/ds/components/FilterBar/filter-bar-group-editor.d.ts +25 -0
  887. package/dist/src/ds/components/FilterBar/filter-bar-input.d.ts +8 -1
  888. package/dist/src/ds/components/FilterBar/filter-bar-option-list.d.ts +5 -0
  889. package/dist/src/ds/components/FilterBar/filter-bar-tree.d.ts +36 -0
  890. package/dist/src/ds/components/FilterBar/filter-bar.d.ts +28 -7
  891. package/dist/src/ds/components/FilterBar/filter-bar.stories.d.ts +3 -0
  892. package/dist/src/ds/components/FilterBar/index.d.ts +6 -1
  893. package/dist/src/ds/components/FilterBar/types.d.ts +36 -0
  894. package/dist/src/ds/components/FilterBar/use-settle-on-leave.d.ts +2 -0
  895. package/dist/src/ds/components/PageLayout/index.d.ts +1 -2
  896. package/dist/src/ds/components/PageLayout/page-layout.d.ts +13 -11
  897. package/dist/src/ds/components/PageLayout/page-layout.stories.d.ts +1 -2
  898. package/dist/src/ds/components/PermissionDenied/PermissionDenied.d.ts +3 -1
  899. package/dist/src/ds/components/PermissionDenied/permission-denied.stories.d.ts +1 -0
  900. package/dist/src/ds/components/SessionExpired/SessionExpired.d.ts +3 -1
  901. package/dist/src/ds/components/SessionExpired/session-expired.stories.d.ts +1 -0
  902. package/dist/src/ds/components/Spinner/spinner.d.ts +6 -3
  903. package/dist/src/ds/components/Spinner/spinner.stories.d.ts +1 -0
  904. package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +13 -8
  905. package/dist/src/ds/new/layout/app-shell/app-shell.d.ts +2 -8
  906. package/dist/src/ds/new/layout/app-shell/app-shell.stories.d.ts +0 -1
  907. package/dist/src/ds/primitives/control-size.d.ts +3 -1
  908. package/dist/src/ds/primitives/fluid-menu.d.ts +8 -3
  909. package/dist/src/ds/primitives/form-element.d.ts +1 -2
  910. package/dist/src/hooks/use-fluid-hover.d.ts +7 -2
  911. package/dist/style.css +83 -120
  912. package/dist/{tabs-content-CKC4kIpH.js → tabs-content-BeFlc4E_.js} +2 -2
  913. package/dist/{tabs-content-CKC4kIpH.js.map → tabs-content-BeFlc4E_.js.map} +1 -1
  914. package/dist/{tabs-content-Bz6CZuv9.cjs → tabs-content-Cdu6HP8U.cjs} +2 -2
  915. package/dist/{tabs-content-Bz6CZuv9.cjs.map → tabs-content-Cdu6HP8U.cjs.map} +1 -1
  916. package/dist/{tabs-root-C5ABfm1F.cjs → tabs-root-BiV8irc3.cjs} +4 -4
  917. package/dist/{tabs-root-C5ABfm1F.cjs.map → tabs-root-BiV8irc3.cjs.map} +1 -1
  918. package/dist/{tabs-root-CcEQrwTM.js → tabs-root-CJ3GkDzi.js} +4 -4
  919. package/dist/{tabs-root-CcEQrwTM.js.map → tabs-root-CJ3GkDzi.js.map} +1 -1
  920. package/dist/{tabs-tab-BycF4dvx.js → tabs-tab-CoSCf5Ku.js} +2 -2
  921. package/dist/{tabs-tab-BycF4dvx.js.map → tabs-tab-CoSCf5Ku.js.map} +1 -1
  922. package/dist/{tabs-tab-DA466DbX.cjs → tabs-tab-J91Szy3Q.cjs} +2 -2
  923. package/dist/{tabs-tab-DA466DbX.cjs.map → tabs-tab-J91Szy3Q.cjs.map} +1 -1
  924. package/dist/{text-field-block-BLpLWmu8.cjs → text-field-block-BmWGMw3a.cjs} +8 -9
  925. package/dist/{text-field-block-BLpLWmu8.cjs.map → text-field-block-BmWGMw3a.cjs.map} +1 -1
  926. package/dist/{text-field-block--EUJKlY_.js → text-field-block-Cihf0IRw.js} +2 -3
  927. package/dist/{text-field-block--EUJKlY_.js.map → text-field-block-Cihf0IRw.js.map} +1 -1
  928. package/dist/{thread-rail-b-8RHNX_.cjs → thread-rail-BVpfkSyT.cjs} +6 -6
  929. package/dist/{thread-rail-b-8RHNX_.cjs.map → thread-rail-BVpfkSyT.cjs.map} +1 -1
  930. package/dist/{thread-rail-vsR5C0j4.js → thread-rail-DV89nFnn.js} +6 -6
  931. package/dist/{thread-rail-vsR5C0j4.js.map → thread-rail-DV89nFnn.js.map} +1 -1
  932. package/dist/{time-picker-Dlm-C-n4.cjs → time-picker-DXuXFGa-.cjs} +2 -2
  933. package/dist/{time-picker-Dlm-C-n4.cjs.map → time-picker-DXuXFGa-.cjs.map} +1 -1
  934. package/dist/{time-picker-DVt1ZUsS.js → time-picker-vFozGRyK.js} +2 -2
  935. package/dist/{time-picker-DVt1ZUsS.js.map → time-picker-vFozGRyK.js.map} +1 -1
  936. package/dist/{tool-approval-DB82iiRa.js → tool-approval-C11ECt4s.js} +5 -5
  937. package/dist/{tool-approval-DB82iiRa.js.map → tool-approval-C11ECt4s.js.map} +1 -1
  938. package/dist/{tool-approval-Dys524ty.cjs → tool-approval-DODxfqk7.cjs} +5 -5
  939. package/dist/{tool-approval-Dys524ty.cjs.map → tool-approval-DODxfqk7.cjs.map} +1 -1
  940. package/dist/{tool-call-K147tCug.js → tool-call-BjAGFbH-.js} +5 -5
  941. package/dist/{tool-call-K147tCug.js.map → tool-call-BjAGFbH-.js.map} +1 -1
  942. package/dist/{tool-call-CMRvRE-v.cjs → tool-call-CNBGnCmO.cjs} +5 -5
  943. package/dist/{tool-call-CMRvRE-v.cjs.map → tool-call-CNBGnCmO.cjs.map} +1 -1
  944. package/dist/{traces-data-list-CDNE9P8W.js → traces-data-list-BhKK8-wa.js} +7 -7
  945. package/dist/{traces-data-list-CDNE9P8W.js.map → traces-data-list-BhKK8-wa.js.map} +1 -1
  946. package/dist/{traces-data-list-B3q_cy6c.cjs → traces-data-list-D58cw23x.cjs} +7 -7
  947. package/dist/{traces-data-list-B3q_cy6c.cjs.map → traces-data-list-D58cw23x.cjs.map} +1 -1
  948. package/dist/types-CIPrYAzY.js +9 -0
  949. package/dist/types-CIPrYAzY.js.map +1 -0
  950. package/dist/types-Ns4ZNp-g.cjs +12 -0
  951. package/dist/types-Ns4ZNp-g.cjs.map +1 -0
  952. package/package.json +6 -7
  953. package/theme/surfaces.css +2 -2
  954. package/dist/Button-CVewl8nT.cjs.map +0 -1
  955. package/dist/Button-cWcBEd-G.js.map +0 -1
  956. package/dist/EmptyState-CdRjFB06.cjs.map +0 -1
  957. package/dist/EmptyState-UWXhBp5U.js.map +0 -1
  958. package/dist/ErrorState-B3uTRAEd.cjs +0 -16
  959. package/dist/ErrorState-B3uTRAEd.cjs.map +0 -1
  960. package/dist/ErrorState-DqRx8Dw_.js +0 -14
  961. package/dist/ErrorState-DqRx8Dw_.js.map +0 -1
  962. package/dist/PermissionDenied-B6TSGolC.js.map +0 -1
  963. package/dist/PermissionDenied-Dz5qXpQj.cjs.map +0 -1
  964. package/dist/SessionExpired-Bq5LcsDu.js.map +0 -1
  965. package/dist/SessionExpired-CF0BGNo_.cjs.map +0 -1
  966. package/dist/ask-user-CS2e6Re4.cjs +0 -147
  967. package/dist/ask-user-CS2e6Re4.cjs.map +0 -1
  968. package/dist/ask-user-gS3Y1bCc.js +0 -138
  969. package/dist/ask-user-gS3Y1bCc.js.map +0 -1
  970. package/dist/buttons-group-BiLEV_Ak.cjs +0 -101
  971. package/dist/buttons-group-BiLEV_Ak.cjs.map +0 -1
  972. package/dist/buttons-group-CaA7KAWf.js +0 -78
  973. package/dist/buttons-group-CaA7KAWf.js.map +0 -1
  974. package/dist/combobox-BWM3VH-n.cjs.map +0 -1
  975. package/dist/combobox-D7xJFZuO.js.map +0 -1
  976. package/dist/combobox-styles-CRebmeht.js.map +0 -1
  977. package/dist/combobox-styles-DYlNNjKC.cjs.map +0 -1
  978. package/dist/components/MainContent.cjs.js +0 -81
  979. package/dist/components/MainContent.cjs.js.map +0 -1
  980. package/dist/components/MainContent.d.ts +0 -2
  981. package/dist/components/MainContent.es.js +0 -75
  982. package/dist/components/MainContent.es.js.map +0 -1
  983. package/dist/data-code-section-DKz9Okaz.js.map +0 -1
  984. package/dist/data-code-section-qujvEc6j.cjs.map +0 -1
  985. package/dist/dropdown-menu-DL0MzjEb.js.map +0 -1
  986. package/dist/dropdown-menu-DNRCA4Gj.cjs.map +0 -1
  987. package/dist/field-block-DWkbNcsV.js.map +0 -1
  988. package/dist/field-block-Dy1IaWbv.cjs.map +0 -1
  989. package/dist/field-error-id-B3Z2Zu5y.cjs +0 -6
  990. package/dist/field-error-id-B3Z2Zu5y.cjs.map +0 -1
  991. package/dist/field-error-id-D3yg1nBh.js +0 -4
  992. package/dist/field-error-id-D3yg1nBh.js.map +0 -1
  993. package/dist/filter-bar-chip-BxI0NgEz.cjs.map +0 -1
  994. package/dist/filter-bar-chip-C-JxWUU8.js.map +0 -1
  995. package/dist/input-group-BEdHivvy.js.map +0 -1
  996. package/dist/input-group-CvWwK1Vz.cjs.map +0 -1
  997. package/dist/lib/springs.cjs.js +0 -32
  998. package/dist/lib/springs.cjs.js.map +0 -1
  999. package/dist/lib/springs.d.ts +0 -2
  1000. package/dist/lib/springs.es.js +0 -27
  1001. package/dist/lib/springs.es.js.map +0 -1
  1002. package/dist/main-sidebar-link-active-CmDoiX6g.js.map +0 -1
  1003. package/dist/main-sidebar-link-active-DbCvKZy2.cjs.map +0 -1
  1004. package/dist/markdown-renderer-B0gTm_Ea.js.map +0 -1
  1005. package/dist/markdown-renderer-D8qYAU7K.cjs.map +0 -1
  1006. package/dist/metrics-card-BUJxiwec.cjs.map +0 -1
  1007. package/dist/metrics-card-BlBt1WHw.js.map +0 -1
  1008. package/dist/new/layout/page-shell.cjs.js +0 -34
  1009. package/dist/new/layout/page-shell.cjs.js.map +0 -1
  1010. package/dist/new/layout/page-shell.d.ts +0 -2
  1011. package/dist/new/layout/page-shell.es.js +0 -30
  1012. package/dist/new/layout/page-shell.es.js.map +0 -1
  1013. package/dist/no-data-page-layout-DcVPjj-J.js +0 -9
  1014. package/dist/no-data-page-layout-DcVPjj-J.js.map +0 -1
  1015. package/dist/no-data-page-layout-Drzbg_w8.cjs +0 -11
  1016. package/dist/no-data-page-layout-Drzbg_w8.cjs.map +0 -1
  1017. package/dist/page-heading-context-D3yjYoJE.js +0 -9
  1018. package/dist/page-heading-context-D3yjYoJE.js.map +0 -1
  1019. package/dist/page-heading-context-Du-CpxAx.cjs +0 -12
  1020. package/dist/page-heading-context-Du-CpxAx.cjs.map +0 -1
  1021. package/dist/page-layout-C9ifD9Q8.cjs +0 -99
  1022. package/dist/page-layout-C9ifD9Q8.cjs.map +0 -1
  1023. package/dist/page-layout-xcM8IR-B.js +0 -97
  1024. package/dist/page-layout-xcM8IR-B.js.map +0 -1
  1025. package/dist/property-filter-applied-BBiUbtr0.js.map +0 -1
  1026. package/dist/property-filter-applied-BmxCPe2d.cjs.map +0 -1
  1027. package/dist/select--DXpTg0O.js.map +0 -1
  1028. package/dist/select-7ACAVdGX.cjs.map +0 -1
  1029. package/dist/spinner-CqP-NaB2.cjs.map +0 -1
  1030. package/dist/spinner-D2C2DYw8.js.map +0 -1
  1031. package/dist/src/ds/components/MainContent/index.d.ts +0 -1
  1032. package/dist/src/ds/components/MainContent/main-content.d.ts +0 -21
  1033. package/dist/src/ds/components/MainContent/main-content.stories.d.ts +0 -10
  1034. package/dist/src/ds/components/PageLayout/no-data-page-layout.d.ts +0 -6
  1035. package/dist/src/ds/components/PageLayout/page-heading-context.d.ts +0 -2
  1036. package/dist/src/ds/components/PageLayout/page-layout-column.d.ts +0 -5
  1037. package/dist/src/ds/components/PageLayout/page-layout-main-area.d.ts +0 -7
  1038. package/dist/src/ds/components/PageLayout/page-layout-root.d.ts +0 -7
  1039. package/dist/src/ds/components/PageLayout/page-layout-row.d.ts +0 -11
  1040. package/dist/src/ds/components/PageLayout/page-layout-top-area.d.ts +0 -5
  1041. package/dist/src/ds/new/layout/page-shell/index.d.ts +0 -1
  1042. package/dist/src/ds/new/layout/page-shell/page-shell.d.ts +0 -24
  1043. package/dist/src/ds/new/layout/page-shell/page-shell.stories.d.ts +0 -63
  1044. package/dist/src/lib/springs.d.ts +0 -31
@@ -1 +1 @@
1
- {"version":3,"file":"RuleBuilder.es.js","sources":["../../src/lib/rule-engine/components/schema-utils.ts","../../src/lib/rule-engine/components/rule-field-select.tsx","../../src/lib/rule-engine/components/types.ts","../../src/lib/rule-engine/components/rule-operator-select.tsx","../../src/lib/rule-engine/components/rule-value-input.tsx","../../src/lib/rule-engine/components/rule-row.tsx","../../src/lib/rule-engine/components/rule-builder.tsx"],"sourcesContent":["import type { FieldOption, JsonSchema, JsonSchemaProperty } from './types';\n\n/**\n * Gets the primary type from a JSON Schema property\n */\nexport const getPropertyType = (property: JsonSchemaProperty): string => {\n if (Array.isArray(property.type)) {\n // Return the first non-null type\n return property.type.find(t => t !== 'null') || 'string';\n }\n return property.type || 'string';\n};\n\n/**\n * Checks if a property has nested children (object or array of objects)\n */\nexport const hasNestedChildren = (property: JsonSchemaProperty): boolean => {\n const type = getPropertyType(property);\n\n if (type === 'object' && property.properties) {\n return Object.keys(property.properties).length > 0;\n }\n\n if (type === 'array' && property.items) {\n const itemType = getPropertyType(property.items);\n return itemType === 'object' && !!property.items.properties;\n }\n\n return false;\n};\n\n/**\n * Extracts field options from JSON Schema properties at a given level\n */\nexport const getFieldOptionsFromProperties = (\n properties: Record<string, JsonSchemaProperty> | undefined,\n parentPath: string = '',\n): FieldOption[] => {\n if (!properties) return [];\n\n return Object.entries(properties).map(([key, property]) => {\n const path = parentPath ? `${parentPath}.${key}` : key;\n const type = getPropertyType(property);\n const hasChildren = hasNestedChildren(property);\n\n return {\n path,\n label: property.title || key,\n type,\n hasChildren,\n children: type === 'object' ? property.properties : undefined,\n items: type === 'array' ? property.items : undefined,\n };\n });\n};\n\n/**\n * Gets field options from the root schema\n */\nexport const getFieldOptionsFromSchema = (schema: JsonSchema): FieldOption[] => {\n return getFieldOptionsFromProperties(schema.properties);\n};\n\n/**\n * Gets child field options for a given field option\n */\nexport const getChildFieldOptions = (fieldOption: FieldOption, currentPath: string): FieldOption[] => {\n if (fieldOption.type === 'object' && fieldOption.children) {\n return getFieldOptionsFromProperties(fieldOption.children, currentPath);\n }\n\n if (fieldOption.type === 'array' && fieldOption.items) {\n const itemType = getPropertyType(fieldOption.items);\n if (itemType === 'object' && fieldOption.items.properties) {\n // For arrays, we use the current path directly (user will access via index or iteration)\n return getFieldOptionsFromProperties(fieldOption.items.properties, currentPath);\n }\n }\n\n return [];\n};\n\n/**\n * Parses a field path into segments\n */\nexport const parseFieldPath = (path: string): string[] => {\n return path.split('.').filter(Boolean);\n};\n\n/**\n * Gets the field option at a specific path in the schema\n */\nexport const getFieldOptionAtPath = (schema: JsonSchema, path: string): FieldOption | undefined => {\n const segments = parseFieldPath(path);\n if (segments.length === 0) return undefined;\n\n let currentProperties = schema.properties;\n let currentPath = '';\n let result: FieldOption | undefined;\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n if (segment === undefined) return undefined;\n\n const property = currentProperties?.[segment];\n if (!property) {\n return undefined;\n }\n\n currentPath = currentPath ? `${currentPath}.${segment}` : segment;\n const type = getPropertyType(property);\n const hasChildren = hasNestedChildren(property);\n\n result = {\n path: currentPath,\n label: property.title || segment,\n type,\n hasChildren,\n children: type === 'object' ? property.properties : undefined,\n items: type === 'array' ? property.items : undefined,\n };\n\n // Navigate deeper\n if (type === 'object' && property.properties) {\n currentProperties = property.properties;\n } else if (type === 'array' && property.items?.properties) {\n currentProperties = property.items.properties;\n } else {\n currentProperties = undefined;\n }\n }\n\n return result;\n};\n","import { Braces, Hash, List, ToggleLeft, Type } from 'lucide-react';\nimport * as React from 'react';\n\nimport { getFieldOptionsFromSchema, getFieldOptionAtPath, getChildFieldOptions, parseFieldPath } from './schema-utils';\nimport type { FieldOption, RuleFieldSelectProps } from './types';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Get icon for a field type\n */\nconst getFieldTypeIcon = (type: string): React.ReactNode => {\n switch (type) {\n case 'object':\n return <Braces />;\n case 'array':\n return <List />;\n case 'number':\n case 'integer':\n return <Hash />;\n case 'boolean':\n return <ToggleLeft />;\n case 'string':\n default:\n return <Type />;\n }\n};\n\n/**\n * A single level of field selection\n */\ntype FieldLevelSelectProps = {\n options: FieldOption[];\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n};\n\nconst FieldLevelSelect: React.FC<FieldLevelSelectProps> = ({\n options,\n value,\n onChange,\n placeholder = 'Select field',\n className,\n}) => {\n return (\n <div className={cn('relative', className)}>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger className=\"bg-muted text-foreground\" size=\"sm\">\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map(option => (\n <SelectItem key={option.path} value={option.path}>\n <span className=\"flex items-center gap-2\">\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n {getFieldTypeIcon(option.type)}\n </Icon>\n {option.label}\n {option.hasChildren && <span className=\"text-muted-foreground\">...</span>}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n};\n\n/**\n * Recursive field selector that shows additional dropdowns for nested objects/arrays\n */\nexport const RuleFieldSelect: React.FC<RuleFieldSelectProps> = ({ schema, value, onChange, className }) => {\n // Parse the current path into segments\n const pathSegments = React.useMemo(() => parseFieldPath(value), [value]);\n\n // Build the list of selectors needed based on the current value\n const selectors = React.useMemo(() => {\n const result: Array<{\n options: FieldOption[];\n value: string;\n basePath: string;\n }> = [];\n\n // First level: root schema properties\n const rootOptions = getFieldOptionsFromSchema(schema);\n if (rootOptions.length === 0) return result;\n\n result.push({\n options: rootOptions,\n value: pathSegments[0] || '',\n basePath: '',\n });\n\n // For each segment, check if we need to add more selectors\n let currentPath = '';\n for (let i = 0; i < pathSegments.length; i++) {\n const segment = pathSegments[i];\n if (segment === undefined) break;\n currentPath = currentPath ? `${currentPath}.${segment}` : segment;\n\n const fieldOption = getFieldOptionAtPath(schema, currentPath);\n if (!fieldOption || !fieldOption.hasChildren) break;\n\n // Get child options for the next level\n const childOptions = getChildFieldOptions(fieldOption, currentPath);\n if (childOptions.length === 0) break;\n\n // Check if there's a next segment selected\n const nextSegment = pathSegments[i + 1];\n const nextPath = nextSegment ? `${currentPath}.${nextSegment}` : '';\n\n result.push({\n options: childOptions,\n value: nextPath,\n basePath: currentPath,\n });\n }\n\n return result;\n }, [schema, pathSegments]);\n\n // Handle change at a specific level\n const handleChange = React.useCallback(\n (levelIndex: number, newValue: string) => {\n // When changing a level, we truncate any deeper selections\n onChange(newValue);\n },\n [onChange],\n );\n\n if (selectors.length === 0) {\n return <div className={cn('text-body text-muted-foreground', className)}>No fields available</div>;\n }\n\n return (\n <div className={cn('flex items-center gap-1', className)}>\n {selectors.map((selector, index) => (\n <React.Fragment key={`${selector.basePath}-${index}`}>\n {index > 0 && <span className=\"text-muted-foreground\">.</span>}\n <FieldLevelSelect\n options={selector.options}\n value={selector.value}\n onChange={newValue => handleChange(index, newValue)}\n placeholder={index === 0 ? 'Select field' : 'Select property'}\n />\n </React.Fragment>\n ))}\n </div>\n );\n};\n","import type { ConditionOperator, Rule, RuleGroup } from '../types';\nimport type { JsonSchema, JsonSchemaProperty } from '@/lib/json-schema';\n\nexport type { JsonSchema, JsonSchemaProperty };\n\n/**\n * Represents a field option extracted from JSON Schema\n */\nexport type FieldOption = {\n /** The field path (e.g., \"user.email\") */\n path: string;\n /** Display label */\n label: string;\n /** The JSON Schema type of the field */\n type: string;\n /** Whether this field has nested properties */\n hasChildren: boolean;\n /** Child properties if type is object */\n children?: Record<string, JsonSchemaProperty>;\n /** Item schema if type is array */\n items?: JsonSchemaProperty;\n};\n\n/**\n * Props for the RuleBuilder root component\n */\nexport type RuleBuilderProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current rule group (recursive, supports nested groups) */\n ruleGroup: RuleGroup | undefined;\n /** Callback when rule group changes */\n onChange: (ruleGroup: RuleGroup | undefined) => void;\n /** Maximum nesting depth (default: 3) */\n maxDepth?: number;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Internal props for the recursive RuleGroupView component\n */\nexport type RuleGroupViewProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** The rule group to render */\n group: RuleGroup;\n /** Callback when this group changes */\n onChange: (group: RuleGroup) => void;\n /** Callback to remove this group (undefined for root) */\n onRemove?: () => void;\n /** Current nesting depth (0 = root) */\n depth: number;\n /** Maximum nesting depth */\n maxDepth: number;\n};\n\n/**\n * Props for a single rule row\n */\nexport type RuleRowProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current rule */\n rule: Rule;\n /** Callback when rule changes */\n onChange: (rule: Rule) => void;\n /** Callback to remove this rule */\n onRemove: () => void;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the field selector\n */\nexport type RuleFieldSelectProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current selected field path */\n value: string;\n /** Callback when field changes */\n onChange: (field: string) => void;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the operator selector\n */\nexport type RuleOperatorSelectProps = {\n /** Current selected operator */\n value: ConditionOperator;\n /** Callback when operator changes */\n onChange: (operator: ConditionOperator) => void;\n /** Subset of operators to show. Defaults to all operators. */\n operators?: readonly ConditionOperator[];\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the value input\n */\nexport type RuleValueInputProps = {\n /** Current value */\n value: unknown;\n /** Callback when value changes */\n onChange: (value: unknown) => void;\n /** The operator (affects input behavior for \"in\" and \"not_in\") */\n operator: ConditionOperator;\n /** The field type from JSON Schema (string, number, boolean, etc.) */\n fieldType?: string;\n /** Optional placeholder */\n placeholder?: string;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Operator labels for display\n */\nexport const OPERATOR_LABELS: Record<ConditionOperator, string> = {\n equals: 'equals',\n not_equals: 'not equals',\n contains: 'contains',\n not_contains: 'not contains',\n greater_than: 'greater than',\n less_than: 'less than',\n greater_than_or_equal: 'greater than or equal',\n less_than_or_equal: 'less than or equal',\n in: 'in',\n not_in: 'not in',\n exists: 'exists',\n not_exists: 'not exists',\n};\n\n/**\n * All available operators\n */\nexport const OPERATORS: ConditionOperator[] = [\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal',\n 'in',\n 'not_in',\n 'exists',\n 'not_exists',\n];\n","import {\n Equal,\n EqualNot,\n Text,\n TextSearch,\n ChevronRight,\n ChevronLeft,\n ChevronsRight,\n ChevronsLeft,\n List,\n ListX,\n Check,\n Ban,\n} from 'lucide-react';\nimport * as React from 'react';\n\nimport type { ConditionOperator } from '../types';\nimport type { RuleOperatorSelectProps } from './types';\nimport { OPERATOR_LABELS, OPERATORS } from './types';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Icons for each operator type\n */\nconst OPERATOR_ICONS: Record<ConditionOperator, React.ReactNode> = {\n equals: <Equal />,\n not_equals: <EqualNot />,\n contains: <TextSearch />,\n not_contains: <Text />,\n greater_than: <ChevronRight />,\n less_than: <ChevronLeft />,\n greater_than_or_equal: <ChevronsRight />,\n less_than_or_equal: <ChevronsLeft />,\n in: <List />,\n not_in: <ListX />,\n exists: <Check />,\n not_exists: <Ban />,\n};\n\n/**\n * Select component for choosing a rule operator\n */\nexport const RuleOperatorSelect: React.FC<RuleOperatorSelectProps> = ({ value, onChange, operators, className }) => {\n const operatorList = operators ?? OPERATORS;\n\n return (\n <div className={cn('relative', className)}>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger className=\"bg-muted text-foreground\" size=\"sm\">\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {operatorList.map(operator => (\n <SelectItem key={operator} value={operator}>\n <span className=\"flex items-center gap-2\">\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n {OPERATOR_ICONS[operator]}\n </Icon>\n {OPERATOR_LABELS[operator]}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n};\n","import { Hash, ToggleLeft, Type } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { RuleValueInputProps } from './types';\nimport { Input } from '@/ds/components/Input/input';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Parses a string value to the appropriate type\n */\nconst parseValue = (stringValue: string): unknown => {\n const trimmed = stringValue.trim();\n\n // Empty string\n if (trimmed === '') return '';\n\n // Boolean\n if (trimmed === 'true') return true;\n if (trimmed === 'false') return false;\n\n // Null\n if (trimmed === 'null') return null;\n\n // Reject special number strings - keep as strings\n const lowerTrimmed = trimmed.toLowerCase();\n if (lowerTrimmed === 'infinity' || lowerTrimmed === '-infinity' || lowerTrimmed === 'nan') {\n return trimmed;\n }\n\n // Number\n const num = Number(trimmed);\n if (!Number.isNaN(num)) return num;\n\n // String (default)\n return stringValue;\n};\n\n/**\n * Parses a comma-separated string into an array of values\n */\nconst parseArrayValue = (stringValue: string): unknown[] => {\n if (stringValue.trim() === '') return [];\n\n return stringValue.split(',').map(item => parseValue(item.trim()));\n};\n\n/**\n * Converts a value to a display string\n */\nconst valueToString = (value: unknown): string => {\n if (value === null) return 'null';\n if (value === undefined) return '';\n if (Array.isArray(value)) return value.map(valueToString).join(', ');\n return String(value);\n};\n\n/**\n * Converts a boolean value to a string for the select\n */\nconst booleanToString = (value: unknown): string => {\n if (value === true) return 'true';\n if (value === false) return 'false';\n return '';\n};\n\ntype BaseInputProps = {\n value: unknown;\n onChange: (value: unknown) => void;\n placeholder?: string;\n className?: string;\n};\n\n/**\n * Boolean value input using a Select dropdown with icon inside\n */\nconst BooleanValueInput: React.FC<BaseInputProps> = ({ value, onChange, className }) => {\n const stringValue = booleanToString(value);\n\n const handleChange = React.useCallback(\n (newValue: string) => {\n onChange(newValue === 'true');\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon\n size=\"xs\"\n className=\"text-muted-foreground pointer-events-none absolute top-1/2 left-2 z-10 -translate-y-1/2\"\n >\n <ToggleLeft />\n </Icon>\n <Select value={stringValue} onValueChange={handleChange}>\n <SelectTrigger className=\"bg-muted pl-7\" size=\"sm\">\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n </div>\n );\n};\n\n/**\n * Number value input with icon inside\n */\nconst NumberValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = value === undefined || value === '' ? '' : String(value);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (inputValue === '') {\n onChange('');\n } else {\n const num = Number(inputValue);\n onChange(Number.isNaN(num) ? inputValue : num);\n }\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon size=\"xs\" className=\"text-muted-foreground pointer-events-none absolute top-1/2 left-2 -translate-y-1/2\">\n <Hash />\n </Icon>\n <Input\n type=\"number\"\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter number'}\n className=\"bg-muted min-w-35 pl-7\"\n size=\"sm\"\n />\n </div>\n );\n};\n\n/**\n * Text value input with icon inside\n */\nconst TextValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = valueToString(value);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(parseValue(e.target.value));\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon size=\"xs\" className=\"text-muted-foreground pointer-events-none absolute top-1/2 left-2 -translate-y-1/2\">\n <Type />\n </Icon>\n <Input\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter value'}\n className=\"bg-muted min-w-35 pl-7\"\n size=\"sm\"\n />\n </div>\n );\n};\n\n/**\n * Array value input (for \"in\" and \"not_in\" operators)\n */\nconst ArrayValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = React.useMemo(() => {\n if (Array.isArray(value)) {\n return value.map(valueToString).join(', ');\n }\n return valueToString(value);\n }, [value]);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(parseArrayValue(e.target.value));\n },\n [onChange],\n );\n\n return (\n <Input\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter values (comma-separated)'}\n className={cn('min-w-40 bg-muted', className)}\n size=\"sm\"\n />\n );\n};\n\n/**\n * Input component for entering rule values\n * Supports different modes based on the operator and field type:\n * - \"in\" and \"not_in\": Comma-separated values (parsed as array)\n * - Boolean fields: Select dropdown with true/false\n * - Number fields: Number input\n * - Other: Text input\n */\nexport const RuleValueInput: React.FC<RuleValueInputProps> = ({\n value,\n onChange,\n operator,\n fieldType,\n placeholder,\n className,\n}) => {\n const isArrayOperator = operator === 'in' || operator === 'not_in';\n\n // Array operators always use text input for comma-separated values\n if (isArrayOperator) {\n return <ArrayValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Boolean fields use Select dropdown\n if (fieldType === 'boolean') {\n return <BooleanValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Number fields use number input\n if (fieldType === 'number' || fieldType === 'integer') {\n return <NumberValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Default to text input\n return <TextValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n};\n","import { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { ConditionOperator } from '../types';\n\nimport { RuleFieldSelect } from './rule-field-select';\nimport { RuleOperatorSelect } from './rule-operator-select';\nimport { RuleValueInput } from './rule-value-input';\nimport { getFieldOptionAtPath } from './schema-utils';\nimport type { RuleRowProps } from './types';\n\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nconst PRIMITIVE_TYPES = new Set(['string', 'number', 'boolean', 'integer']);\n\n/**\n * A single rule row with field selector, operator selector, and value input\n */\nexport const RuleRow: React.FC<RuleRowProps> = ({ schema, rule, onChange, onRemove, className }) => {\n const fieldType = React.useMemo(() => {\n return getFieldOptionAtPath(schema, rule.field)?.type;\n }, [schema, rule.field]);\n\n const isPrimitive = fieldType !== undefined && PRIMITIVE_TYPES.has(fieldType);\n const isArray = fieldType === 'array';\n const isArrayOperator = rule.operator === 'in' || rule.operator === 'not_in';\n const isExistenceOperator = rule.operator === 'exists' || rule.operator === 'not_exists';\n\n // Show operator + value for primitive types, or for array types (restricted to in/not_in)\n const showComparator = isPrimitive || isArray;\n const showValueInput = !isExistenceOperator && (isPrimitive || (isArray && isArrayOperator));\n\n const handleFieldChange = React.useCallback(\n (field: string) => {\n onChange({ ...rule, field });\n },\n [rule, onChange],\n );\n\n const handleOperatorChange = React.useCallback(\n (operator: ConditionOperator) => {\n const isNewExistence = operator === 'exists' || operator === 'not_exists';\n\n // Existence operators don't need a value\n if (isNewExistence) {\n onChange({ ...rule, operator, value: undefined });\n return;\n }\n\n // Reset value when changing to/from array operators\n const isArrayOperator = operator === 'in' || operator === 'not_in';\n const wasArrayOperator = rule.operator === 'in' || rule.operator === 'not_in';\n\n let newValue = rule.value;\n if (isArrayOperator && !wasArrayOperator) {\n // Converting to array operator: wrap value in array\n newValue = rule.value !== undefined ? [rule.value] : [];\n } else if (!isArrayOperator && wasArrayOperator) {\n // Converting from array operator: take first value\n newValue = Array.isArray(rule.value) ? rule.value[0] : rule.value;\n }\n\n onChange({ ...rule, operator, value: newValue });\n },\n [rule, onChange],\n );\n\n const handleValueChange = React.useCallback(\n (value: unknown) => {\n onChange({ ...rule, value });\n },\n [rule, onChange],\n );\n\n return (\n <div className=\"flex justify-between gap-2\">\n <div className={cn('flex flex-wrap items-center gap-2', className)}>\n <RuleFieldSelect schema={schema} value={rule.field} onChange={handleFieldChange} />\n\n {showComparator && (\n <>\n <RuleOperatorSelect\n value={rule.operator}\n onChange={handleOperatorChange}\n operators={isArray ? (['in', 'not_in'] as const) : undefined}\n />\n\n {showValueInput && (\n <RuleValueInput\n value={rule.value}\n onChange={handleValueChange}\n operator={rule.operator}\n fieldType={fieldType}\n />\n )}\n </>\n )}\n </div>\n\n <Button type=\"button\" onClick={onRemove} tooltip=\"Remove rule\" size=\"icon-sm\" variant=\"ghost\">\n <X />\n </Button>\n </div>\n );\n};\n","import { Plus, X, Component } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { Rule, RuleGroup, RuleGroupDepth1 } from '../types';\nimport { isRule, createDefaultRule, createDefaultRuleGroup } from '../utils';\n\nimport { RuleRow } from './rule-row';\nimport type { RuleBuilderProps, RuleGroupViewProps } from './types';\nimport { Button } from '@/ds/components/Button';\nimport { Icon } from '@/ds/icons';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_MAX_DEPTH = 3;\n\n/**\n * Internal recursive component that renders one level of a rule group.\n */\nconst RuleGroupView: React.FC<RuleGroupViewProps> = ({ schema, group, onChange, onRemove, depth, maxDepth }) => {\n const isRoot = depth === 0;\n\n const handleToggleOperator = () => {\n onChange({ ...group, operator: group.operator === 'AND' ? 'OR' : 'AND' });\n };\n\n const handleConditionChange = (index: number, condition: Rule | RuleGroup) => {\n onChange({\n ...group,\n conditions: group.conditions.map((c, i) => (i === index ? (condition as Rule | RuleGroupDepth1) : c)),\n });\n };\n\n const handleRemoveCondition = (index: number) => {\n const newConditions = group.conditions.filter((_, i) => i !== index);\n if (newConditions.length === 0 && onRemove) {\n onRemove();\n } else {\n onChange({ ...group, conditions: newConditions });\n }\n };\n\n const handleAddRule = () => {\n onChange({ ...group, conditions: [...group.conditions, createDefaultRule()] });\n };\n\n const handleAddGroup = () => {\n onChange({\n ...group,\n conditions: [\n ...group.conditions,\n createDefaultRuleGroup(group.operator === 'AND' ? 'OR' : 'AND') as RuleGroupDepth1,\n ],\n });\n };\n\n return (\n <div className={cn(isRoot ? 'bg-background' : 'bg-card pl-6')}>\n {/* Non-root group header */}\n {!isRoot && (\n <div className=\"border-border flex items-center justify-between border-b border-dashed py-1.5 pr-4 pl-3\">\n <span className=\"text-meta text-muted-foreground\">Group</span>\n {onRemove && (\n <Button type=\"button\" onClick={onRemove} tooltip=\"Remove group\" size=\"icon-sm\" variant=\"ghost\">\n <X />\n </Button>\n )}\n </div>\n )}\n\n {group.conditions.map((condition, index) => (\n <div key={index} className=\"border-border border-b border-dashed last:border-b-0\">\n <div className={cn('relative', isRule(condition) && 'border-l-4 border-border p-4')}>\n {index > 0 && (\n <button\n type=\"button\"\n onClick={handleToggleOperator}\n className={cn(\n 'absolute top-0 left-1/2 z-10 -translate-1/2 cursor-pointer rounded-full px-3 py-0.5 text-meta',\n group.operator === 'OR'\n ? 'bg-accent6Dark text-accent6 hover:bg-accent6Dark/70'\n : 'bg-accent3Dark text-accent3 hover:bg-accent3Dark/70',\n )}\n >\n {group.operator.toLowerCase()}\n </button>\n )}\n\n {isRule(condition) ? (\n <RuleRow\n schema={schema}\n rule={condition}\n onChange={updatedRule => handleConditionChange(index, updatedRule)}\n onRemove={() => handleRemoveCondition(index)}\n />\n ) : (\n <RuleGroupView\n schema={schema}\n group={condition}\n onChange={updatedGroup => handleConditionChange(index, updatedGroup)}\n onRemove={() => handleRemoveCondition(index)}\n depth={depth + 1}\n maxDepth={maxDepth}\n />\n )}\n </div>\n </div>\n ))}\n\n <div className=\"flex gap-1 p-2\">\n <Button type=\"button\" onClick={handleAddRule} variant=\"ghost\" size=\"sm\" icon={<Plus />}>\n Add rule\n </Button>\n {depth < maxDepth - 1 && (\n <Button type=\"button\" onClick={handleAddGroup} variant=\"ghost\" size=\"sm\" icon={<Component />}>\n Add group\n </Button>\n )}\n </div>\n </div>\n );\n};\n\n/**\n * Rule builder component for creating and managing a recursive set of rules\n * based on a JSON Schema defining available fields.\n *\n * Supports nested rule groups with AND/OR operators at each level.\n */\nexport const RuleBuilder: React.FC<RuleBuilderProps> = ({\n schema,\n ruleGroup,\n onChange,\n maxDepth = DEFAULT_MAX_DEPTH,\n className,\n}) => {\n const handleGroupChange = React.useCallback(\n (group: RuleGroup) => {\n onChange(group);\n },\n [onChange],\n );\n\n const handleAddFirstRule = React.useCallback(() => {\n onChange({ operator: 'AND', conditions: [createDefaultRule()] });\n }, [onChange]);\n\n if (!ruleGroup) {\n return (\n <button\n type=\"button\"\n onClick={handleAddFirstRule}\n className={cn(\n quietTextHover,\n controlStateColorTransition,\n 'border-border text-caption flex w-full items-center justify-center gap-2 rounded-md border border-dashed p-2',\n )}\n >\n <Icon>\n <Plus />\n </Icon>\n Add conditional rule\n </button>\n );\n }\n\n return (\n <div className={className}>\n <RuleGroupView schema={schema} group={ruleGroup} onChange={handleGroupChange} depth={0} maxDepth={maxDepth} />\n </div>\n );\n};\n"],"names":["isArrayOperator"],"mappings":"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"}
1
+ {"version":3,"file":"RuleBuilder.es.js","sources":["../../src/lib/rule-engine/components/schema-utils.ts","../../src/lib/rule-engine/components/rule-field-select.tsx","../../src/lib/rule-engine/components/types.ts","../../src/lib/rule-engine/components/rule-operator-select.tsx","../../src/lib/rule-engine/components/rule-value-input.tsx","../../src/lib/rule-engine/components/rule-row.tsx","../../src/lib/rule-engine/components/rule-builder.tsx"],"sourcesContent":["import type { FieldOption, JsonSchema, JsonSchemaProperty } from './types';\n\n/**\n * Gets the primary type from a JSON Schema property\n */\nexport const getPropertyType = (property: JsonSchemaProperty): string => {\n if (Array.isArray(property.type)) {\n // Return the first non-null type\n return property.type.find(t => t !== 'null') || 'string';\n }\n return property.type || 'string';\n};\n\n/**\n * Checks if a property has nested children (object or array of objects)\n */\nexport const hasNestedChildren = (property: JsonSchemaProperty): boolean => {\n const type = getPropertyType(property);\n\n if (type === 'object' && property.properties) {\n return Object.keys(property.properties).length > 0;\n }\n\n if (type === 'array' && property.items) {\n const itemType = getPropertyType(property.items);\n return itemType === 'object' && !!property.items.properties;\n }\n\n return false;\n};\n\n/**\n * Extracts field options from JSON Schema properties at a given level\n */\nexport const getFieldOptionsFromProperties = (\n properties: Record<string, JsonSchemaProperty> | undefined,\n parentPath: string = '',\n): FieldOption[] => {\n if (!properties) return [];\n\n return Object.entries(properties).map(([key, property]) => {\n const path = parentPath ? `${parentPath}.${key}` : key;\n const type = getPropertyType(property);\n const hasChildren = hasNestedChildren(property);\n\n return {\n path,\n label: property.title || key,\n type,\n hasChildren,\n children: type === 'object' ? property.properties : undefined,\n items: type === 'array' ? property.items : undefined,\n };\n });\n};\n\n/**\n * Gets field options from the root schema\n */\nexport const getFieldOptionsFromSchema = (schema: JsonSchema): FieldOption[] => {\n return getFieldOptionsFromProperties(schema.properties);\n};\n\n/**\n * Gets child field options for a given field option\n */\nexport const getChildFieldOptions = (fieldOption: FieldOption, currentPath: string): FieldOption[] => {\n if (fieldOption.type === 'object' && fieldOption.children) {\n return getFieldOptionsFromProperties(fieldOption.children, currentPath);\n }\n\n if (fieldOption.type === 'array' && fieldOption.items) {\n const itemType = getPropertyType(fieldOption.items);\n if (itemType === 'object' && fieldOption.items.properties) {\n // For arrays, we use the current path directly (user will access via index or iteration)\n return getFieldOptionsFromProperties(fieldOption.items.properties, currentPath);\n }\n }\n\n return [];\n};\n\n/**\n * Parses a field path into segments\n */\nexport const parseFieldPath = (path: string): string[] => {\n return path.split('.').filter(Boolean);\n};\n\n/**\n * Gets the field option at a specific path in the schema\n */\nexport const getFieldOptionAtPath = (schema: JsonSchema, path: string): FieldOption | undefined => {\n const segments = parseFieldPath(path);\n if (segments.length === 0) return undefined;\n\n let currentProperties = schema.properties;\n let currentPath = '';\n let result: FieldOption | undefined;\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n if (segment === undefined) return undefined;\n\n const property = currentProperties?.[segment];\n if (!property) {\n return undefined;\n }\n\n currentPath = currentPath ? `${currentPath}.${segment}` : segment;\n const type = getPropertyType(property);\n const hasChildren = hasNestedChildren(property);\n\n result = {\n path: currentPath,\n label: property.title || segment,\n type,\n hasChildren,\n children: type === 'object' ? property.properties : undefined,\n items: type === 'array' ? property.items : undefined,\n };\n\n // Navigate deeper\n if (type === 'object' && property.properties) {\n currentProperties = property.properties;\n } else if (type === 'array' && property.items?.properties) {\n currentProperties = property.items.properties;\n } else {\n currentProperties = undefined;\n }\n }\n\n return result;\n};\n","import { Braces, Hash, List, ToggleLeft, Type } from 'lucide-react';\nimport * as React from 'react';\n\nimport { getFieldOptionsFromSchema, getFieldOptionAtPath, getChildFieldOptions, parseFieldPath } from './schema-utils';\nimport type { FieldOption, RuleFieldSelectProps } from './types';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Get icon for a field type\n */\nconst getFieldTypeIcon = (type: string): React.ReactNode => {\n switch (type) {\n case 'object':\n return <Braces />;\n case 'array':\n return <List />;\n case 'number':\n case 'integer':\n return <Hash />;\n case 'boolean':\n return <ToggleLeft />;\n case 'string':\n default:\n return <Type />;\n }\n};\n\n/**\n * A single level of field selection\n */\ntype FieldLevelSelectProps = {\n options: FieldOption[];\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n};\n\nconst FieldLevelSelect: React.FC<FieldLevelSelectProps> = ({\n options,\n value,\n onChange,\n placeholder = 'Select field',\n className,\n}) => {\n return (\n <div className={cn('relative', className)}>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger className=\"bg-muted text-foreground\" size=\"sm\">\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map(option => (\n <SelectItem key={option.path} value={option.path}>\n <span className=\"flex items-center gap-2\">\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n {getFieldTypeIcon(option.type)}\n </Icon>\n {option.label}\n {option.hasChildren && <span className=\"text-muted-foreground\">...</span>}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n};\n\n/**\n * Recursive field selector that shows additional dropdowns for nested objects/arrays\n */\nexport const RuleFieldSelect: React.FC<RuleFieldSelectProps> = ({ schema, value, onChange, className }) => {\n // Parse the current path into segments\n const pathSegments = React.useMemo(() => parseFieldPath(value), [value]);\n\n // Build the list of selectors needed based on the current value\n const selectors = React.useMemo(() => {\n const result: Array<{\n options: FieldOption[];\n value: string;\n basePath: string;\n }> = [];\n\n // First level: root schema properties\n const rootOptions = getFieldOptionsFromSchema(schema);\n if (rootOptions.length === 0) return result;\n\n result.push({\n options: rootOptions,\n value: pathSegments[0] || '',\n basePath: '',\n });\n\n // For each segment, check if we need to add more selectors\n let currentPath = '';\n for (let i = 0; i < pathSegments.length; i++) {\n const segment = pathSegments[i];\n if (segment === undefined) break;\n currentPath = currentPath ? `${currentPath}.${segment}` : segment;\n\n const fieldOption = getFieldOptionAtPath(schema, currentPath);\n if (!fieldOption || !fieldOption.hasChildren) break;\n\n // Get child options for the next level\n const childOptions = getChildFieldOptions(fieldOption, currentPath);\n if (childOptions.length === 0) break;\n\n // Check if there's a next segment selected\n const nextSegment = pathSegments[i + 1];\n const nextPath = nextSegment ? `${currentPath}.${nextSegment}` : '';\n\n result.push({\n options: childOptions,\n value: nextPath,\n basePath: currentPath,\n });\n }\n\n return result;\n }, [schema, pathSegments]);\n\n // Handle change at a specific level\n const handleChange = React.useCallback(\n (levelIndex: number, newValue: string) => {\n // When changing a level, we truncate any deeper selections\n onChange(newValue);\n },\n [onChange],\n );\n\n if (selectors.length === 0) {\n return <div className={cn('text-body text-muted-foreground', className)}>No fields available</div>;\n }\n\n return (\n <div className={cn('flex items-center gap-1', className)}>\n {selectors.map((selector, index) => (\n <React.Fragment key={`${selector.basePath}-${index}`}>\n {index > 0 && <span className=\"text-muted-foreground\">.</span>}\n <FieldLevelSelect\n options={selector.options}\n value={selector.value}\n onChange={newValue => handleChange(index, newValue)}\n placeholder={index === 0 ? 'Select field' : 'Select property'}\n />\n </React.Fragment>\n ))}\n </div>\n );\n};\n","import type { ConditionOperator, Rule, RuleGroup } from '../types';\nimport type { JsonSchema, JsonSchemaProperty } from '@/lib/json-schema';\n\nexport type { JsonSchema, JsonSchemaProperty };\n\n/**\n * Represents a field option extracted from JSON Schema\n */\nexport type FieldOption = {\n /** The field path (e.g., \"user.email\") */\n path: string;\n /** Display label */\n label: string;\n /** The JSON Schema type of the field */\n type: string;\n /** Whether this field has nested properties */\n hasChildren: boolean;\n /** Child properties if type is object */\n children?: Record<string, JsonSchemaProperty>;\n /** Item schema if type is array */\n items?: JsonSchemaProperty;\n};\n\n/**\n * Props for the RuleBuilder root component\n */\nexport type RuleBuilderProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current rule group (recursive, supports nested groups) */\n ruleGroup: RuleGroup | undefined;\n /** Callback when rule group changes */\n onChange: (ruleGroup: RuleGroup | undefined) => void;\n /** Maximum nesting depth (default: 3) */\n maxDepth?: number;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Internal props for the recursive RuleGroupView component\n */\nexport type RuleGroupViewProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** The rule group to render */\n group: RuleGroup;\n /** Callback when this group changes */\n onChange: (group: RuleGroup) => void;\n /** Callback to remove this group (undefined for root) */\n onRemove?: () => void;\n /** Current nesting depth (0 = root) */\n depth: number;\n /** Maximum nesting depth */\n maxDepth: number;\n};\n\n/**\n * Props for a single rule row\n */\nexport type RuleRowProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current rule */\n rule: Rule;\n /** Callback when rule changes */\n onChange: (rule: Rule) => void;\n /** Callback to remove this rule */\n onRemove: () => void;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the field selector\n */\nexport type RuleFieldSelectProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current selected field path */\n value: string;\n /** Callback when field changes */\n onChange: (field: string) => void;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the operator selector\n */\nexport type RuleOperatorSelectProps = {\n /** Current selected operator */\n value: ConditionOperator;\n /** Callback when operator changes */\n onChange: (operator: ConditionOperator) => void;\n /** Subset of operators to show. Defaults to all operators. */\n operators?: readonly ConditionOperator[];\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the value input\n */\nexport type RuleValueInputProps = {\n /** Current value */\n value: unknown;\n /** Callback when value changes */\n onChange: (value: unknown) => void;\n /** The operator (affects input behavior for \"in\" and \"not_in\") */\n operator: ConditionOperator;\n /** The field type from JSON Schema (string, number, boolean, etc.) */\n fieldType?: string;\n /** Optional placeholder */\n placeholder?: string;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Operator labels for display\n */\nexport const OPERATOR_LABELS: Record<ConditionOperator, string> = {\n equals: 'equals',\n not_equals: 'not equals',\n contains: 'contains',\n not_contains: 'not contains',\n greater_than: 'greater than',\n less_than: 'less than',\n greater_than_or_equal: 'greater than or equal',\n less_than_or_equal: 'less than or equal',\n in: 'in',\n not_in: 'not in',\n exists: 'exists',\n not_exists: 'not exists',\n};\n\n/**\n * All available operators\n */\nexport const OPERATORS: ConditionOperator[] = [\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal',\n 'in',\n 'not_in',\n 'exists',\n 'not_exists',\n];\n","import {\n Equal,\n EqualNot,\n Text,\n TextSearch,\n ChevronRight,\n ChevronLeft,\n ChevronsRight,\n ChevronsLeft,\n List,\n ListX,\n Check,\n Ban,\n} from 'lucide-react';\nimport * as React from 'react';\n\nimport type { ConditionOperator } from '../types';\nimport type { RuleOperatorSelectProps } from './types';\nimport { OPERATOR_LABELS, OPERATORS } from './types';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Icons for each operator type\n */\nconst OPERATOR_ICONS: Record<ConditionOperator, React.ReactNode> = {\n equals: <Equal />,\n not_equals: <EqualNot />,\n contains: <TextSearch />,\n not_contains: <Text />,\n greater_than: <ChevronRight />,\n less_than: <ChevronLeft />,\n greater_than_or_equal: <ChevronsRight />,\n less_than_or_equal: <ChevronsLeft />,\n in: <List />,\n not_in: <ListX />,\n exists: <Check />,\n not_exists: <Ban />,\n};\n\n/**\n * Select component for choosing a rule operator\n */\nexport const RuleOperatorSelect: React.FC<RuleOperatorSelectProps> = ({ value, onChange, operators, className }) => {\n const operatorList = operators ?? OPERATORS;\n\n return (\n <div className={cn('relative', className)}>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger className=\"bg-muted text-foreground\" size=\"sm\">\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {operatorList.map(operator => (\n <SelectItem key={operator} value={operator}>\n <span className=\"flex items-center gap-2\">\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n {OPERATOR_ICONS[operator]}\n </Icon>\n {OPERATOR_LABELS[operator]}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n};\n","import { Hash, ToggleLeft, Type } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { RuleValueInputProps } from './types';\nimport { Input } from '@/ds/components/Input/input';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Parses a string value to the appropriate type\n */\nconst parseValue = (stringValue: string): unknown => {\n const trimmed = stringValue.trim();\n\n // Empty string\n if (trimmed === '') return '';\n\n // Boolean\n if (trimmed === 'true') return true;\n if (trimmed === 'false') return false;\n\n // Null\n if (trimmed === 'null') return null;\n\n // Reject special number strings - keep as strings\n const lowerTrimmed = trimmed.toLowerCase();\n if (lowerTrimmed === 'infinity' || lowerTrimmed === '-infinity' || lowerTrimmed === 'nan') {\n return trimmed;\n }\n\n // Number\n const num = Number(trimmed);\n if (!Number.isNaN(num)) return num;\n\n // String (default)\n return stringValue;\n};\n\n/**\n * Parses a comma-separated string into an array of values\n */\nconst parseArrayValue = (stringValue: string): unknown[] => {\n if (stringValue.trim() === '') return [];\n\n return stringValue.split(',').map(item => parseValue(item.trim()));\n};\n\n/**\n * Converts a value to a display string\n */\nconst valueToString = (value: unknown): string => {\n if (value === null) return 'null';\n if (value === undefined) return '';\n if (Array.isArray(value)) return value.map(valueToString).join(', ');\n return String(value);\n};\n\n/**\n * Converts a boolean value to a string for the select\n */\nconst booleanToString = (value: unknown): string => {\n if (value === true) return 'true';\n if (value === false) return 'false';\n return '';\n};\n\ntype BaseInputProps = {\n value: unknown;\n onChange: (value: unknown) => void;\n placeholder?: string;\n className?: string;\n};\n\n/**\n * Boolean value input using a Select dropdown with icon inside\n */\nconst BooleanValueInput: React.FC<BaseInputProps> = ({ value, onChange, className }) => {\n const stringValue = booleanToString(value);\n\n const handleChange = React.useCallback(\n (newValue: string) => {\n onChange(newValue === 'true');\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon\n size=\"xs\"\n className=\"pointer-events-none absolute top-1/2 left-2 z-10 -translate-y-1/2 text-muted-foreground\"\n >\n <ToggleLeft />\n </Icon>\n <Select value={stringValue} onValueChange={handleChange}>\n <SelectTrigger className=\"bg-muted pl-7\" size=\"sm\">\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n </div>\n );\n};\n\n/**\n * Number value input with icon inside\n */\nconst NumberValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = value === undefined || value === '' ? '' : String(value);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (inputValue === '') {\n onChange('');\n } else {\n const num = Number(inputValue);\n onChange(Number.isNaN(num) ? inputValue : num);\n }\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon size=\"xs\" className=\"pointer-events-none absolute top-1/2 left-2 -translate-y-1/2 text-muted-foreground\">\n <Hash />\n </Icon>\n <Input\n type=\"number\"\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter number'}\n className=\"min-w-35 bg-muted pl-7\"\n size=\"sm\"\n />\n </div>\n );\n};\n\n/**\n * Text value input with icon inside\n */\nconst TextValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = valueToString(value);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(parseValue(e.target.value));\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon size=\"xs\" className=\"pointer-events-none absolute top-1/2 left-2 -translate-y-1/2 text-muted-foreground\">\n <Type />\n </Icon>\n <Input\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter value'}\n className=\"min-w-35 bg-muted pl-7\"\n size=\"sm\"\n />\n </div>\n );\n};\n\n/**\n * Array value input (for \"in\" and \"not_in\" operators)\n */\nconst ArrayValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = React.useMemo(() => {\n if (Array.isArray(value)) {\n return value.map(valueToString).join(', ');\n }\n return valueToString(value);\n }, [value]);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(parseArrayValue(e.target.value));\n },\n [onChange],\n );\n\n return (\n <Input\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter values (comma-separated)'}\n className={cn('min-w-40 bg-muted', className)}\n size=\"sm\"\n />\n );\n};\n\n/**\n * Input component for entering rule values\n * Supports different modes based on the operator and field type:\n * - \"in\" and \"not_in\": Comma-separated values (parsed as array)\n * - Boolean fields: Select dropdown with true/false\n * - Number fields: Number input\n * - Other: Text input\n */\nexport const RuleValueInput: React.FC<RuleValueInputProps> = ({\n value,\n onChange,\n operator,\n fieldType,\n placeholder,\n className,\n}) => {\n const isArrayOperator = operator === 'in' || operator === 'not_in';\n\n // Array operators always use text input for comma-separated values\n if (isArrayOperator) {\n return <ArrayValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Boolean fields use Select dropdown\n if (fieldType === 'boolean') {\n return <BooleanValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Number fields use number input\n if (fieldType === 'number' || fieldType === 'integer') {\n return <NumberValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Default to text input\n return <TextValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n};\n","import { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { ConditionOperator } from '../types';\n\nimport { RuleFieldSelect } from './rule-field-select';\nimport { RuleOperatorSelect } from './rule-operator-select';\nimport { RuleValueInput } from './rule-value-input';\nimport { getFieldOptionAtPath } from './schema-utils';\nimport type { RuleRowProps } from './types';\n\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nconst PRIMITIVE_TYPES = new Set(['string', 'number', 'boolean', 'integer']);\n\n/**\n * A single rule row with field selector, operator selector, and value input\n */\nexport const RuleRow: React.FC<RuleRowProps> = ({ schema, rule, onChange, onRemove, className }) => {\n const fieldType = React.useMemo(() => {\n return getFieldOptionAtPath(schema, rule.field)?.type;\n }, [schema, rule.field]);\n\n const isPrimitive = fieldType !== undefined && PRIMITIVE_TYPES.has(fieldType);\n const isArray = fieldType === 'array';\n const isArrayOperator = rule.operator === 'in' || rule.operator === 'not_in';\n const isExistenceOperator = rule.operator === 'exists' || rule.operator === 'not_exists';\n\n // Show operator + value for primitive types, or for array types (restricted to in/not_in)\n const showComparator = isPrimitive || isArray;\n const showValueInput = !isExistenceOperator && (isPrimitive || (isArray && isArrayOperator));\n\n const handleFieldChange = React.useCallback(\n (field: string) => {\n onChange({ ...rule, field });\n },\n [rule, onChange],\n );\n\n const handleOperatorChange = React.useCallback(\n (operator: ConditionOperator) => {\n const isNewExistence = operator === 'exists' || operator === 'not_exists';\n\n // Existence operators don't need a value\n if (isNewExistence) {\n onChange({ ...rule, operator, value: undefined });\n return;\n }\n\n // Reset value when changing to/from array operators\n const isArrayOperator = operator === 'in' || operator === 'not_in';\n const wasArrayOperator = rule.operator === 'in' || rule.operator === 'not_in';\n\n let newValue = rule.value;\n if (isArrayOperator && !wasArrayOperator) {\n // Converting to array operator: wrap value in array\n newValue = rule.value !== undefined ? [rule.value] : [];\n } else if (!isArrayOperator && wasArrayOperator) {\n // Converting from array operator: take first value\n newValue = Array.isArray(rule.value) ? rule.value[0] : rule.value;\n }\n\n onChange({ ...rule, operator, value: newValue });\n },\n [rule, onChange],\n );\n\n const handleValueChange = React.useCallback(\n (value: unknown) => {\n onChange({ ...rule, value });\n },\n [rule, onChange],\n );\n\n return (\n <div className=\"flex justify-between gap-2\">\n <div className={cn('flex flex-wrap items-center gap-2', className)}>\n <RuleFieldSelect schema={schema} value={rule.field} onChange={handleFieldChange} />\n\n {showComparator && (\n <>\n <RuleOperatorSelect\n value={rule.operator}\n onChange={handleOperatorChange}\n operators={isArray ? (['in', 'not_in'] as const) : undefined}\n />\n\n {showValueInput && (\n <RuleValueInput\n value={rule.value}\n onChange={handleValueChange}\n operator={rule.operator}\n fieldType={fieldType}\n />\n )}\n </>\n )}\n </div>\n\n <Button type=\"button\" onClick={onRemove} tooltip=\"Remove rule\" size=\"icon-sm\" variant=\"ghost\">\n <X />\n </Button>\n </div>\n );\n};\n","import { Plus, X, Component } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { Rule, RuleGroup, RuleGroupDepth1 } from '../types';\nimport { isRule, createDefaultRule, createDefaultRuleGroup } from '../utils';\n\nimport { RuleRow } from './rule-row';\nimport type { RuleBuilderProps, RuleGroupViewProps } from './types';\nimport { Button } from '@/ds/components/Button';\nimport { Icon } from '@/ds/icons';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_MAX_DEPTH = 3;\n\n/**\n * Internal recursive component that renders one level of a rule group.\n */\nconst RuleGroupView: React.FC<RuleGroupViewProps> = ({ schema, group, onChange, onRemove, depth, maxDepth }) => {\n const isRoot = depth === 0;\n\n const handleToggleOperator = () => {\n onChange({ ...group, operator: group.operator === 'AND' ? 'OR' : 'AND' });\n };\n\n const handleConditionChange = (index: number, condition: Rule | RuleGroup) => {\n onChange({\n ...group,\n conditions: group.conditions.map((c, i) => (i === index ? (condition as Rule | RuleGroupDepth1) : c)),\n });\n };\n\n const handleRemoveCondition = (index: number) => {\n const newConditions = group.conditions.filter((_, i) => i !== index);\n if (newConditions.length === 0 && onRemove) {\n onRemove();\n } else {\n onChange({ ...group, conditions: newConditions });\n }\n };\n\n const handleAddRule = () => {\n onChange({ ...group, conditions: [...group.conditions, createDefaultRule()] });\n };\n\n const handleAddGroup = () => {\n onChange({\n ...group,\n conditions: [\n ...group.conditions,\n createDefaultRuleGroup(group.operator === 'AND' ? 'OR' : 'AND') as RuleGroupDepth1,\n ],\n });\n };\n\n return (\n <div className={cn(isRoot ? 'bg-background' : 'bg-card pl-6')}>\n {/* Non-root group header */}\n {!isRoot && (\n <div className=\"flex items-center justify-between border-b border-dashed border-border py-1.5 pr-4 pl-3\">\n <span className=\"text-meta text-muted-foreground\">Group</span>\n {onRemove && (\n <Button type=\"button\" onClick={onRemove} tooltip=\"Remove group\" size=\"icon-sm\" variant=\"ghost\">\n <X />\n </Button>\n )}\n </div>\n )}\n\n {group.conditions.map((condition, index) => (\n <div key={index} className=\"border-b border-dashed border-border last:border-b-0\">\n <div className={cn('relative', isRule(condition) && 'border-l-4 border-border p-4')}>\n {index > 0 && (\n <button\n type=\"button\"\n onClick={handleToggleOperator}\n className={cn(\n 'absolute top-0 left-1/2 z-10 -translate-1/2 cursor-pointer rounded-full px-3 py-0.5 text-meta',\n group.operator === 'OR'\n ? 'bg-accent6Dark text-accent6 hover:bg-accent6Dark/70'\n : 'bg-accent3Dark text-accent3 hover:bg-accent3Dark/70',\n )}\n >\n {group.operator.toLowerCase()}\n </button>\n )}\n\n {isRule(condition) ? (\n <RuleRow\n schema={schema}\n rule={condition}\n onChange={updatedRule => handleConditionChange(index, updatedRule)}\n onRemove={() => handleRemoveCondition(index)}\n />\n ) : (\n <RuleGroupView\n schema={schema}\n group={condition}\n onChange={updatedGroup => handleConditionChange(index, updatedGroup)}\n onRemove={() => handleRemoveCondition(index)}\n depth={depth + 1}\n maxDepth={maxDepth}\n />\n )}\n </div>\n </div>\n ))}\n\n <div className=\"flex gap-1 p-2\">\n <Button type=\"button\" onClick={handleAddRule} variant=\"ghost\" size=\"sm\" icon={<Plus />}>\n Add rule\n </Button>\n {depth < maxDepth - 1 && (\n <Button type=\"button\" onClick={handleAddGroup} variant=\"ghost\" size=\"sm\" icon={<Component />}>\n Add group\n </Button>\n )}\n </div>\n </div>\n );\n};\n\n/**\n * Rule builder component for creating and managing a recursive set of rules\n * based on a JSON Schema defining available fields.\n *\n * Supports nested rule groups with AND/OR operators at each level.\n */\nexport const RuleBuilder: React.FC<RuleBuilderProps> = ({\n schema,\n ruleGroup,\n onChange,\n maxDepth = DEFAULT_MAX_DEPTH,\n className,\n}) => {\n const handleGroupChange = React.useCallback(\n (group: RuleGroup) => {\n onChange(group);\n },\n [onChange],\n );\n\n const handleAddFirstRule = React.useCallback(() => {\n onChange({ operator: 'AND', conditions: [createDefaultRule()] });\n }, [onChange]);\n\n if (!ruleGroup) {\n return (\n <button\n type=\"button\"\n onClick={handleAddFirstRule}\n className={cn(\n quietTextHover,\n controlStateColorTransition,\n 'flex w-full items-center justify-center gap-2 rounded-md border border-dashed border-border p-2 text-caption',\n )}\n >\n <Icon>\n <Plus />\n </Icon>\n Add conditional rule\n </button>\n );\n }\n\n return (\n <div className={className}>\n <RuleGroupView schema={schema} group={ruleGroup} onChange={handleGroupChange} depth={0} maxDepth={maxDepth} />\n </div>\n );\n};\n"],"names":["isArrayOperator"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const sankeyChart = require('../sankey-chart-Bcm9jMhe.cjs');
5
+ const sankeyChart = require('../sankey-chart-C1e0nRc3.cjs');
6
6
  const sankeyColor = require('../sankeyColor-DHE7ggh8.cjs');
7
7
 
8
8
 
@@ -1,3 +1,3 @@
1
- export { S as Sankey, a as SankeyChart, b as buildSankeyChartGraph, g as getSankeyChartCurveSelection, c as getSankeyChartNodeSelection, d as getSankeyChartNodeWeights, e as getSankeyChartValue, r as reorderSankeyChartColumns, u as useSankey } from '../sankey-chart-CqngN2lw.js';
1
+ export { S as Sankey, a as SankeyChart, b as buildSankeyChartGraph, g as getSankeyChartCurveSelection, c as getSankeyChartNodeSelection, d as getSankeyChartNodeWeights, e as getSankeyChartValue, r as reorderSankeyChartColumns, u as useSankey } from '../sankey-chart-jvMXKzud.js';
2
2
  export { b as buildSankeyHueMap, h as hashHue, n as nodeColor, a as nodeColorVivid } from '../sankeyColor-BoMbAWtq.js';
3
3
  //# sourceMappingURL=SankeyChart.es.js.map
@@ -24,8 +24,8 @@ function ScatterPlotChartTooltip({
24
24
  const xValue = point[xKey];
25
25
  const yValue = point[yKey];
26
26
  return /* @__PURE__ */ jsxRuntime.jsxs(chartTooltip.ChartTooltip, { children: [
27
- label !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground text-column mb-1", children: String(label) }),
28
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-placeholder grid gap-1", children: [
27
+ label !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-column text-foreground", children: String(label) }),
28
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-1 text-placeholder", children: [
29
29
  /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
30
30
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "X:" }),
31
31
  " ",
@@ -1 +1 @@
1
- {"version":3,"file":"ScatterPlotChart.cjs.js","sources":["../../src/ds/components/ScatterPlotChart/scatter-plot-chart-tooltip.tsx","../../src/ds/components/ScatterPlotChart/scatter-plot-chart-utils.ts","../../src/ds/components/ScatterPlotChart/scatter-plot-chart.tsx"],"sourcesContent":["import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\nimport { ChartTooltip } from '@/ds/components/ChartTooltip';\n\ntype ScatterTooltipPayload = Array<{\n color?: string;\n payload?: Record<string, unknown>;\n}>;\n\nexport function ScatterPlotChartTooltip({\n active,\n payload,\n xKey,\n yKey,\n nameKey,\n formatX,\n formatY,\n formatTooltipLabel,\n}: {\n active?: boolean;\n payload?: ScatterTooltipPayload;\n xKey: string;\n yKey: string;\n nameKey?: string;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n}) {\n const point = payload?.[0]?.payload;\n if (!active || !point) return null;\n\n const label = formatTooltipLabel?.(point) ?? (nameKey ? point[nameKey] : undefined);\n const xValue = point[xKey];\n const yValue = point[yKey];\n\n return (\n <ChartTooltip>\n {label !== undefined && <p className=\"text-foreground text-column mb-1\">{String(label)}</p>}\n <div className=\"text-placeholder grid gap-1\">\n <p>\n <span className=\"text-muted-foreground\">X:</span>{' '}\n <span className=\"font-mono\">{formatX ? formatX(xValue, point) : String(xValue)}</span>\n </p>\n <p>\n <span className=\"text-muted-foreground\">Y:</span>{' '}\n <span className=\"font-mono\">{formatY ? formatY(yValue, point) : String(yValue)}</span>\n </p>\n </div>\n </ChartTooltip>\n );\n}\n","import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\nimport { Colors } from '@/ds/tokens';\n\nexport function getScatterPlotPointColor(point: Record<string, unknown>, colorKey?: string) {\n const color = colorKey ? point[colorKey] : undefined;\n return typeof color === 'string' && color.length > 0 ? color : Colors.accent3;\n}\n\nexport function getScatterPlotClickedPoint(payload: unknown) {\n return (payload as { payload?: Record<string, unknown> } | undefined)?.payload;\n}\n\nexport function formatScatterPlotAxisTick(value: unknown, formatter?: ScatterPlotChartFormatter) {\n return (formatter?.(value, {}) ?? String(value)).replace(/\\s+/g, '\\u00A0');\n}\n","import { CartesianGrid, ResponsiveContainer, Scatter, ScatterChart, Tooltip, XAxis, YAxis, ZAxis } from 'recharts';\nimport { ScatterPlotChartTooltip } from './scatter-plot-chart-tooltip';\nimport {\n formatScatterPlotAxisTick,\n getScatterPlotClickedPoint,\n getScatterPlotPointColor,\n} from './scatter-plot-chart-utils';\nimport { CHART_LABEL_COLOR, CHART_TICK_FONT_SIZE, Colors } from '@/ds/tokens';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_POINT_SIZE = 48;\nconst CHART_MARGIN = { top: 16, right: 16, bottom: 16, left: 16 };\n\nexport type ScatterPlotChartDomain = [number | 'auto', number | 'auto'];\nexport type ScatterPlotChartFormatter = (value: unknown, point: Record<string, unknown>) => string;\nexport type ScatterPlotChartPointClickHandler = (point: Record<string, unknown>) => void;\n\nexport type ScatterPlotChartProps = {\n data: Array<Record<string, unknown>>;\n xKey: string;\n yKey: string;\n nameKey?: string;\n colorKey?: string;\n height?: React.CSSProperties['height'];\n xLabel?: string;\n yLabel?: string;\n xDomain?: ScatterPlotChartDomain;\n yDomain?: ScatterPlotChartDomain;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n onPointClick?: ScatterPlotChartPointClickHandler;\n className?: string;\n};\n\nexport function ScatterPlotChart({\n data,\n xKey,\n yKey,\n nameKey,\n colorKey,\n height = 210,\n xLabel,\n yLabel,\n xDomain,\n yDomain,\n formatX,\n formatY,\n formatTooltipLabel,\n onPointClick,\n className,\n}: ScatterPlotChartProps) {\n const isClickable = typeof onPointClick === 'function';\n const fillsContainer = height === '100%';\n\n if (data.length === 0) {\n return (\n <div\n className={cn(\n 'flex items-center justify-center rounded-md border border-border text-caption text-muted-foreground',\n className,\n )}\n style={{ height }}\n >\n No data to display\n </div>\n );\n }\n\n return (\n <div className={cn(fillsContainer && 'flex h-full min-h-0 flex-col', className)}>\n <div className={cn(fillsContainer && 'min-h-0 flex-1')} style={{ height: fillsContainer ? undefined : height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ScatterChart data={data} margin={CHART_MARGIN}>\n <CartesianGrid\n stroke={Colors['muted-foreground']}\n strokeDasharray=\"4 4\"\n strokeOpacity={0.18}\n vertical={false}\n />\n <XAxis\n dataKey={xKey}\n name={xLabel}\n type=\"number\"\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n domain={xDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatX)}\n />\n <YAxis\n dataKey={yKey}\n name={yLabel}\n type=\"number\"\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n width={44}\n domain={yDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatY)}\n />\n <ZAxis range={[DEFAULT_POINT_SIZE, DEFAULT_POINT_SIZE]} />\n <Tooltip\n cursor={{ stroke: Colors['muted-foreground'], strokeOpacity: 0.16 }}\n content={\n <ScatterPlotChartTooltip\n xKey={xKey}\n yKey={yKey}\n nameKey={nameKey}\n formatX={formatX}\n formatY={formatY}\n formatTooltipLabel={formatTooltipLabel}\n />\n }\n />\n <Scatter\n data={data}\n fill={Colors.accent3}\n shape={(props: unknown) => {\n const point = (props as { payload?: Record<string, unknown> }).payload ?? {};\n const cx = (props as { cx?: number }).cx;\n const cy = (props as { cy?: number }).cy;\n if (typeof cx !== 'number' || typeof cy !== 'number') return <g />;\n return (\n <circle\n cx={cx}\n cy={cy}\n r={4}\n fill={getScatterPlotPointColor(point, colorKey)}\n opacity={0.9}\n style={{ cursor: isClickable ? 'pointer' : undefined }}\n />\n );\n }}\n onClick={(_: unknown, payload: unknown) => {\n const point = getScatterPlotClickedPoint(payload);\n if (point) onPointClick?.(point);\n }}\n />\n </ScatterChart>\n </ResponsiveContainer>\n </div>\n </div>\n );\n}\n"],"names":["ChartTooltip","jsx","jsxs","Colors","cn","ResponsiveContainer","ScatterChart","CartesianGrid","XAxis","CHART_TICK_FONT_SIZE","CHART_LABEL_COLOR","YAxis","ZAxis","Tooltip","Scatter"],"mappings":"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"}
1
+ {"version":3,"file":"ScatterPlotChart.cjs.js","sources":["../../src/ds/components/ScatterPlotChart/scatter-plot-chart-tooltip.tsx","../../src/ds/components/ScatterPlotChart/scatter-plot-chart-utils.ts","../../src/ds/components/ScatterPlotChart/scatter-plot-chart.tsx"],"sourcesContent":["import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\nimport { ChartTooltip } from '@/ds/components/ChartTooltip';\n\ntype ScatterTooltipPayload = Array<{\n color?: string;\n payload?: Record<string, unknown>;\n}>;\n\nexport function ScatterPlotChartTooltip({\n active,\n payload,\n xKey,\n yKey,\n nameKey,\n formatX,\n formatY,\n formatTooltipLabel,\n}: {\n active?: boolean;\n payload?: ScatterTooltipPayload;\n xKey: string;\n yKey: string;\n nameKey?: string;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n}) {\n const point = payload?.[0]?.payload;\n if (!active || !point) return null;\n\n const label = formatTooltipLabel?.(point) ?? (nameKey ? point[nameKey] : undefined);\n const xValue = point[xKey];\n const yValue = point[yKey];\n\n return (\n <ChartTooltip>\n {label !== undefined && <p className=\"mb-1 text-column text-foreground\">{String(label)}</p>}\n <div className=\"grid gap-1 text-placeholder\">\n <p>\n <span className=\"text-muted-foreground\">X:</span>{' '}\n <span className=\"font-mono\">{formatX ? formatX(xValue, point) : String(xValue)}</span>\n </p>\n <p>\n <span className=\"text-muted-foreground\">Y:</span>{' '}\n <span className=\"font-mono\">{formatY ? formatY(yValue, point) : String(yValue)}</span>\n </p>\n </div>\n </ChartTooltip>\n );\n}\n","import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\nimport { Colors } from '@/ds/tokens';\n\nexport function getScatterPlotPointColor(point: Record<string, unknown>, colorKey?: string) {\n const color = colorKey ? point[colorKey] : undefined;\n return typeof color === 'string' && color.length > 0 ? color : Colors.accent3;\n}\n\nexport function getScatterPlotClickedPoint(payload: unknown) {\n return (payload as { payload?: Record<string, unknown> } | undefined)?.payload;\n}\n\nexport function formatScatterPlotAxisTick(value: unknown, formatter?: ScatterPlotChartFormatter) {\n return (formatter?.(value, {}) ?? String(value)).replace(/\\s+/g, '\\u00A0');\n}\n","import { CartesianGrid, ResponsiveContainer, Scatter, ScatterChart, Tooltip, XAxis, YAxis, ZAxis } from 'recharts';\nimport { ScatterPlotChartTooltip } from './scatter-plot-chart-tooltip';\nimport {\n formatScatterPlotAxisTick,\n getScatterPlotClickedPoint,\n getScatterPlotPointColor,\n} from './scatter-plot-chart-utils';\nimport { CHART_LABEL_COLOR, CHART_TICK_FONT_SIZE, Colors } from '@/ds/tokens';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_POINT_SIZE = 48;\nconst CHART_MARGIN = { top: 16, right: 16, bottom: 16, left: 16 };\n\nexport type ScatterPlotChartDomain = [number | 'auto', number | 'auto'];\nexport type ScatterPlotChartFormatter = (value: unknown, point: Record<string, unknown>) => string;\nexport type ScatterPlotChartPointClickHandler = (point: Record<string, unknown>) => void;\n\nexport type ScatterPlotChartProps = {\n data: Array<Record<string, unknown>>;\n xKey: string;\n yKey: string;\n nameKey?: string;\n colorKey?: string;\n height?: React.CSSProperties['height'];\n xLabel?: string;\n yLabel?: string;\n xDomain?: ScatterPlotChartDomain;\n yDomain?: ScatterPlotChartDomain;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n onPointClick?: ScatterPlotChartPointClickHandler;\n className?: string;\n};\n\nexport function ScatterPlotChart({\n data,\n xKey,\n yKey,\n nameKey,\n colorKey,\n height = 210,\n xLabel,\n yLabel,\n xDomain,\n yDomain,\n formatX,\n formatY,\n formatTooltipLabel,\n onPointClick,\n className,\n}: ScatterPlotChartProps) {\n const isClickable = typeof onPointClick === 'function';\n const fillsContainer = height === '100%';\n\n if (data.length === 0) {\n return (\n <div\n className={cn(\n 'flex items-center justify-center rounded-md border border-border text-caption text-muted-foreground',\n className,\n )}\n style={{ height }}\n >\n No data to display\n </div>\n );\n }\n\n return (\n <div className={cn(fillsContainer && 'flex h-full min-h-0 flex-col', className)}>\n <div className={cn(fillsContainer && 'min-h-0 flex-1')} style={{ height: fillsContainer ? undefined : height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ScatterChart data={data} margin={CHART_MARGIN}>\n <CartesianGrid\n stroke={Colors['muted-foreground']}\n strokeDasharray=\"4 4\"\n strokeOpacity={0.18}\n vertical={false}\n />\n <XAxis\n dataKey={xKey}\n name={xLabel}\n type=\"number\"\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n domain={xDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatX)}\n />\n <YAxis\n dataKey={yKey}\n name={yLabel}\n type=\"number\"\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n width={44}\n domain={yDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatY)}\n />\n <ZAxis range={[DEFAULT_POINT_SIZE, DEFAULT_POINT_SIZE]} />\n <Tooltip\n cursor={{ stroke: Colors['muted-foreground'], strokeOpacity: 0.16 }}\n content={\n <ScatterPlotChartTooltip\n xKey={xKey}\n yKey={yKey}\n nameKey={nameKey}\n formatX={formatX}\n formatY={formatY}\n formatTooltipLabel={formatTooltipLabel}\n />\n }\n />\n <Scatter\n data={data}\n fill={Colors.accent3}\n shape={(props: unknown) => {\n const point = (props as { payload?: Record<string, unknown> }).payload ?? {};\n const cx = (props as { cx?: number }).cx;\n const cy = (props as { cy?: number }).cy;\n if (typeof cx !== 'number' || typeof cy !== 'number') return <g />;\n return (\n <circle\n cx={cx}\n cy={cy}\n r={4}\n fill={getScatterPlotPointColor(point, colorKey)}\n opacity={0.9}\n style={{ cursor: isClickable ? 'pointer' : undefined }}\n />\n );\n }}\n onClick={(_: unknown, payload: unknown) => {\n const point = getScatterPlotClickedPoint(payload);\n if (point) onPointClick?.(point);\n }}\n />\n </ScatterChart>\n </ResponsiveContainer>\n </div>\n </div>\n );\n}\n"],"names":["ChartTooltip","jsx","jsxs","Colors","cn","ResponsiveContainer","ScatterChart","CartesianGrid","XAxis","CHART_TICK_FONT_SIZE","CHART_LABEL_COLOR","YAxis","ZAxis","Tooltip","Scatter"],"mappings":";;;;;;;;;;AAQO,SAAS,uBAAA,CAAwB;AAAA,EACtC,MAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EASG;AACD,EAAA,MAAM,KAAA,GAAQ,OAAA,GAAU,CAAC,CAAA,EAAG,OAAA;AAC5B,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,KAAA,EAAO,OAAO,IAAA;AAE9B,EAAA,MAAM,QAAQ,kBAAA,GAAqB,KAAK,MAAM,OAAA,GAAU,KAAA,CAAM,OAAO,CAAA,GAAI,MAAA,CAAA;AACzE,EAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzB,EAAA,MAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AAEzB,EAAA,uCACGA,yBAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,KAAA,KAAU,0BAAaC,cAAA,CAAC,GAAA,EAAA,EAAE,WAAU,kCAAA,EAAoC,QAAA,EAAA,MAAA,CAAO,KAAK,CAAA,EAAE,CAAA;AAAA,oBACvFC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,eAAA,CAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAwB,QAAA,EAAA,IAAA,EAAE,CAAA;AAAA,QAAQ,GAAA;AAAA,wBAClDA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EAAa,QAAA,EAAA,OAAA,GAAU,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA,GAAI,MAAA,CAAO,MAAM,CAAA,EAAE;AAAA,OAAA,EACjF,CAAA;AAAA,sCACC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAwB,QAAA,EAAA,IAAA,EAAE,CAAA;AAAA,QAAQ,GAAA;AAAA,wBAClDA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EAAa,QAAA,EAAA,OAAA,GAAU,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA,GAAI,MAAA,CAAO,MAAM,CAAA,EAAE;AAAA,OAAA,EACjF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;AC9CO,SAAS,wBAAA,CAAyB,OAAgC,QAAA,EAAmB;AAC1F,EAAA,MAAM,KAAA,GAAQ,QAAA,GAAW,KAAA,CAAM,QAAQ,CAAA,GAAI,MAAA;AAC3C,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,MAAM,MAAA,GAAS,CAAA,GAAI,QAAQE,aAAA,CAAO,OAAA;AACxE;AAEO,SAAS,2BAA2B,OAAA,EAAkB;AAC3D,EAAA,OAAQ,OAAA,EAA+D,OAAA;AACzE;AAEO,SAAS,yBAAA,CAA0B,OAAgB,SAAA,EAAuC;AAC/F,EAAA,OAAA,CAAQ,SAAA,GAAY,KAAA,EAAO,EAAE,CAAA,IAAK,OAAO,KAAK,CAAA,EAAG,OAAA,CAAQ,MAAA,EAAQ,GAAQ,CAAA;AAC3E;;ACJA,MAAM,kBAAA,GAAqB,EAAA;AAC3B,MAAM,YAAA,GAAe,EAAE,GAAA,EAAK,EAAA,EAAI,OAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAI,IAAA,EAAM,EAAA,EAAG;AAwBzD,SAAS,gBAAA,CAAiB;AAAA,EAC/B,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA,GAAS,GAAA;AAAA,EACT,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,kBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,WAAA,GAAc,OAAO,YAAA,KAAiB,UAAA;AAC5C,EAAA,MAAM,iBAAiB,MAAA,KAAW,MAAA;AAElC,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,uBACEF,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWG,WAAA;AAAA,UACT,qGAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO,EAAE,MAAA,EAAO;AAAA,QACjB,QAAA,EAAA;AAAA;AAAA,KAED;AAAA,EAEJ;AAEA,EAAA,uBACEH,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWG,WAAA,CAAG,kBAAkB,8BAAA,EAAgC,SAAS,CAAA,EAC5E,QAAA,kBAAAH,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWG,WAAA,CAAG,cAAA,IAAkB,gBAAgB,CAAA,EAAG,KAAA,EAAO,EAAE,MAAA,EAAQ,cAAA,GAAiB,MAAA,GAAY,MAAA,EAAO,EAC3G,yCAACC,4BAAA,EAAA,EAAoB,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,MAAA,EACvC,QAAA,kBAAAH,eAAA,CAACI,qBAAA,EAAA,EAAa,IAAA,EAAY,QAAQ,YAAA,EAChC,QAAA,EAAA;AAAA,oBAAAL,cAAA;AAAA,MAACM,sBAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQJ,cAAO,kBAAkB,CAAA;AAAA,QACjC,eAAA,EAAgB,KAAA;AAAA,QAChB,aAAA,EAAe,IAAA;AAAA,QACf,QAAA,EAAU;AAAA;AAAA,KACZ;AAAA,oBACAF,cAAA;AAAA,MAACO,cAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA;AAAA,QACT,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAK,QAAA;AAAA,QACL,MAAM,EAAE,QAAA,EAAUC,6BAAsB,IAAA,EAAMC,wBAAA,EAAmB,YAAY,kBAAA,EAAmB;AAAA,QAChG,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,KAAA;AAAA,QACV,MAAA,EAAQ,OAAA;AAAA,QACR,aAAA,EAAe,CAAA,KAAA,KAAS,yBAAA,CAA0B,KAAA,EAAO,OAAO;AAAA;AAAA,KAClE;AAAA,oBACAT,cAAA;AAAA,MAACU,cAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,IAAA;AAAA,QACT,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAK,QAAA;AAAA,QACL,MAAM,EAAE,QAAA,EAAUF,6BAAsB,IAAA,EAAMC,wBAAA,EAAmB,YAAY,kBAAA,EAAmB;AAAA,QAChG,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,KAAA;AAAA,QACV,KAAA,EAAO,EAAA;AAAA,QACP,MAAA,EAAQ,OAAA;AAAA,QACR,aAAA,EAAe,CAAA,KAAA,KAAS,yBAAA,CAA0B,KAAA,EAAO,OAAO;AAAA;AAAA,KAClE;AAAA,mCACCE,cAAA,EAAA,EAAM,KAAA,EAAO,CAAC,kBAAA,EAAoB,kBAAkB,CAAA,EAAG,CAAA;AAAA,oBACxDX,cAAA;AAAA,MAACY,gBAAA;AAAA,MAAA;AAAA,QACC,QAAQ,EAAE,MAAA,EAAQV,cAAO,kBAAkB,CAAA,EAAG,eAAe,IAAA,EAAK;AAAA,QAClE,OAAA,kBACEF,cAAA;AAAA,UAAC,uBAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,IAAA;AAAA,YACA,OAAA;AAAA,YACA,OAAA;AAAA,YACA,OAAA;AAAA,YACA;AAAA;AAAA;AACF;AAAA,KAEJ;AAAA,oBACAA,cAAA;AAAA,MAACa,gBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,MAAMX,aAAA,CAAO,OAAA;AAAA,QACb,KAAA,EAAO,CAAC,KAAA,KAAmB;AACzB,UAAA,MAAM,KAAA,GAAS,KAAA,CAAgD,OAAA,IAAW,EAAC;AAC3E,UAAA,MAAM,KAAM,KAAA,CAA0B,EAAA;AACtC,UAAA,MAAM,KAAM,KAAA,CAA0B,EAAA;AACtC,UAAA,IAAI,OAAO,OAAO,QAAA,IAAY,OAAO,OAAO,QAAA,EAAU,sCAAQ,GAAA,EAAA,EAAE,CAAA;AAChE,UAAA,uBACEF,cAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,EAAA;AAAA,cACA,EAAA;AAAA,cACA,CAAA,EAAG,CAAA;AAAA,cACH,IAAA,EAAM,wBAAA,CAAyB,KAAA,EAAO,QAAQ,CAAA;AAAA,cAC9C,OAAA,EAAS,GAAA;AAAA,cACT,KAAA,EAAO,EAAE,MAAA,EAAQ,WAAA,GAAc,YAAY,MAAA;AAAU;AAAA,WACvD;AAAA,QAEJ,CAAA;AAAA,QACA,OAAA,EAAS,CAAC,CAAA,EAAY,OAAA,KAAqB;AACzC,UAAA,MAAM,KAAA,GAAQ,2BAA2B,OAAO,CAAA;AAChD,UAAA,IAAI,KAAA,iBAAsB,KAAK,CAAA;AAAA,QACjC;AAAA;AAAA;AACF,GAAA,EACF,CAAA,EACF,GACF,CAAA,EACF,CAAA;AAEJ;;;;;;;;"}
@@ -20,8 +20,8 @@ function ScatterPlotChartTooltip({
20
20
  const xValue = point[xKey];
21
21
  const yValue = point[yKey];
22
22
  return /* @__PURE__ */ jsxs(ChartTooltip, { children: [
23
- label !== void 0 && /* @__PURE__ */ jsx("p", { className: "text-foreground text-column mb-1", children: String(label) }),
24
- /* @__PURE__ */ jsxs("div", { className: "text-placeholder grid gap-1", children: [
23
+ label !== void 0 && /* @__PURE__ */ jsx("p", { className: "mb-1 text-column text-foreground", children: String(label) }),
24
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-1 text-placeholder", children: [
25
25
  /* @__PURE__ */ jsxs("p", { children: [
26
26
  /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "X:" }),
27
27
  " ",
@@ -1 +1 @@
1
- {"version":3,"file":"ScatterPlotChart.es.js","sources":["../../src/ds/components/ScatterPlotChart/scatter-plot-chart-tooltip.tsx","../../src/ds/components/ScatterPlotChart/scatter-plot-chart-utils.ts","../../src/ds/components/ScatterPlotChart/scatter-plot-chart.tsx"],"sourcesContent":["import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\nimport { ChartTooltip } from '@/ds/components/ChartTooltip';\n\ntype ScatterTooltipPayload = Array<{\n color?: string;\n payload?: Record<string, unknown>;\n}>;\n\nexport function ScatterPlotChartTooltip({\n active,\n payload,\n xKey,\n yKey,\n nameKey,\n formatX,\n formatY,\n formatTooltipLabel,\n}: {\n active?: boolean;\n payload?: ScatterTooltipPayload;\n xKey: string;\n yKey: string;\n nameKey?: string;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n}) {\n const point = payload?.[0]?.payload;\n if (!active || !point) return null;\n\n const label = formatTooltipLabel?.(point) ?? (nameKey ? point[nameKey] : undefined);\n const xValue = point[xKey];\n const yValue = point[yKey];\n\n return (\n <ChartTooltip>\n {label !== undefined && <p className=\"text-foreground text-column mb-1\">{String(label)}</p>}\n <div className=\"text-placeholder grid gap-1\">\n <p>\n <span className=\"text-muted-foreground\">X:</span>{' '}\n <span className=\"font-mono\">{formatX ? formatX(xValue, point) : String(xValue)}</span>\n </p>\n <p>\n <span className=\"text-muted-foreground\">Y:</span>{' '}\n <span className=\"font-mono\">{formatY ? formatY(yValue, point) : String(yValue)}</span>\n </p>\n </div>\n </ChartTooltip>\n );\n}\n","import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\nimport { Colors } from '@/ds/tokens';\n\nexport function getScatterPlotPointColor(point: Record<string, unknown>, colorKey?: string) {\n const color = colorKey ? point[colorKey] : undefined;\n return typeof color === 'string' && color.length > 0 ? color : Colors.accent3;\n}\n\nexport function getScatterPlotClickedPoint(payload: unknown) {\n return (payload as { payload?: Record<string, unknown> } | undefined)?.payload;\n}\n\nexport function formatScatterPlotAxisTick(value: unknown, formatter?: ScatterPlotChartFormatter) {\n return (formatter?.(value, {}) ?? String(value)).replace(/\\s+/g, '\\u00A0');\n}\n","import { CartesianGrid, ResponsiveContainer, Scatter, ScatterChart, Tooltip, XAxis, YAxis, ZAxis } from 'recharts';\nimport { ScatterPlotChartTooltip } from './scatter-plot-chart-tooltip';\nimport {\n formatScatterPlotAxisTick,\n getScatterPlotClickedPoint,\n getScatterPlotPointColor,\n} from './scatter-plot-chart-utils';\nimport { CHART_LABEL_COLOR, CHART_TICK_FONT_SIZE, Colors } from '@/ds/tokens';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_POINT_SIZE = 48;\nconst CHART_MARGIN = { top: 16, right: 16, bottom: 16, left: 16 };\n\nexport type ScatterPlotChartDomain = [number | 'auto', number | 'auto'];\nexport type ScatterPlotChartFormatter = (value: unknown, point: Record<string, unknown>) => string;\nexport type ScatterPlotChartPointClickHandler = (point: Record<string, unknown>) => void;\n\nexport type ScatterPlotChartProps = {\n data: Array<Record<string, unknown>>;\n xKey: string;\n yKey: string;\n nameKey?: string;\n colorKey?: string;\n height?: React.CSSProperties['height'];\n xLabel?: string;\n yLabel?: string;\n xDomain?: ScatterPlotChartDomain;\n yDomain?: ScatterPlotChartDomain;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n onPointClick?: ScatterPlotChartPointClickHandler;\n className?: string;\n};\n\nexport function ScatterPlotChart({\n data,\n xKey,\n yKey,\n nameKey,\n colorKey,\n height = 210,\n xLabel,\n yLabel,\n xDomain,\n yDomain,\n formatX,\n formatY,\n formatTooltipLabel,\n onPointClick,\n className,\n}: ScatterPlotChartProps) {\n const isClickable = typeof onPointClick === 'function';\n const fillsContainer = height === '100%';\n\n if (data.length === 0) {\n return (\n <div\n className={cn(\n 'flex items-center justify-center rounded-md border border-border text-caption text-muted-foreground',\n className,\n )}\n style={{ height }}\n >\n No data to display\n </div>\n );\n }\n\n return (\n <div className={cn(fillsContainer && 'flex h-full min-h-0 flex-col', className)}>\n <div className={cn(fillsContainer && 'min-h-0 flex-1')} style={{ height: fillsContainer ? undefined : height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ScatterChart data={data} margin={CHART_MARGIN}>\n <CartesianGrid\n stroke={Colors['muted-foreground']}\n strokeDasharray=\"4 4\"\n strokeOpacity={0.18}\n vertical={false}\n />\n <XAxis\n dataKey={xKey}\n name={xLabel}\n type=\"number\"\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n domain={xDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatX)}\n />\n <YAxis\n dataKey={yKey}\n name={yLabel}\n type=\"number\"\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n width={44}\n domain={yDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatY)}\n />\n <ZAxis range={[DEFAULT_POINT_SIZE, DEFAULT_POINT_SIZE]} />\n <Tooltip\n cursor={{ stroke: Colors['muted-foreground'], strokeOpacity: 0.16 }}\n content={\n <ScatterPlotChartTooltip\n xKey={xKey}\n yKey={yKey}\n nameKey={nameKey}\n formatX={formatX}\n formatY={formatY}\n formatTooltipLabel={formatTooltipLabel}\n />\n }\n />\n <Scatter\n data={data}\n fill={Colors.accent3}\n shape={(props: unknown) => {\n const point = (props as { payload?: Record<string, unknown> }).payload ?? {};\n const cx = (props as { cx?: number }).cx;\n const cy = (props as { cy?: number }).cy;\n if (typeof cx !== 'number' || typeof cy !== 'number') return <g />;\n return (\n <circle\n cx={cx}\n cy={cy}\n r={4}\n fill={getScatterPlotPointColor(point, colorKey)}\n opacity={0.9}\n style={{ cursor: isClickable ? 'pointer' : undefined }}\n />\n );\n }}\n onClick={(_: unknown, payload: unknown) => {\n const point = getScatterPlotClickedPoint(payload);\n if (point) onPointClick?.(point);\n }}\n />\n </ScatterChart>\n </ResponsiveContainer>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScatterPlotChart.es.js","sources":["../../src/ds/components/ScatterPlotChart/scatter-plot-chart-tooltip.tsx","../../src/ds/components/ScatterPlotChart/scatter-plot-chart-utils.ts","../../src/ds/components/ScatterPlotChart/scatter-plot-chart.tsx"],"sourcesContent":["import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\nimport { ChartTooltip } from '@/ds/components/ChartTooltip';\n\ntype ScatterTooltipPayload = Array<{\n color?: string;\n payload?: Record<string, unknown>;\n}>;\n\nexport function ScatterPlotChartTooltip({\n active,\n payload,\n xKey,\n yKey,\n nameKey,\n formatX,\n formatY,\n formatTooltipLabel,\n}: {\n active?: boolean;\n payload?: ScatterTooltipPayload;\n xKey: string;\n yKey: string;\n nameKey?: string;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n}) {\n const point = payload?.[0]?.payload;\n if (!active || !point) return null;\n\n const label = formatTooltipLabel?.(point) ?? (nameKey ? point[nameKey] : undefined);\n const xValue = point[xKey];\n const yValue = point[yKey];\n\n return (\n <ChartTooltip>\n {label !== undefined && <p className=\"mb-1 text-column text-foreground\">{String(label)}</p>}\n <div className=\"grid gap-1 text-placeholder\">\n <p>\n <span className=\"text-muted-foreground\">X:</span>{' '}\n <span className=\"font-mono\">{formatX ? formatX(xValue, point) : String(xValue)}</span>\n </p>\n <p>\n <span className=\"text-muted-foreground\">Y:</span>{' '}\n <span className=\"font-mono\">{formatY ? formatY(yValue, point) : String(yValue)}</span>\n </p>\n </div>\n </ChartTooltip>\n );\n}\n","import type { ScatterPlotChartFormatter } from './scatter-plot-chart';\nimport { Colors } from '@/ds/tokens';\n\nexport function getScatterPlotPointColor(point: Record<string, unknown>, colorKey?: string) {\n const color = colorKey ? point[colorKey] : undefined;\n return typeof color === 'string' && color.length > 0 ? color : Colors.accent3;\n}\n\nexport function getScatterPlotClickedPoint(payload: unknown) {\n return (payload as { payload?: Record<string, unknown> } | undefined)?.payload;\n}\n\nexport function formatScatterPlotAxisTick(value: unknown, formatter?: ScatterPlotChartFormatter) {\n return (formatter?.(value, {}) ?? String(value)).replace(/\\s+/g, '\\u00A0');\n}\n","import { CartesianGrid, ResponsiveContainer, Scatter, ScatterChart, Tooltip, XAxis, YAxis, ZAxis } from 'recharts';\nimport { ScatterPlotChartTooltip } from './scatter-plot-chart-tooltip';\nimport {\n formatScatterPlotAxisTick,\n getScatterPlotClickedPoint,\n getScatterPlotPointColor,\n} from './scatter-plot-chart-utils';\nimport { CHART_LABEL_COLOR, CHART_TICK_FONT_SIZE, Colors } from '@/ds/tokens';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_POINT_SIZE = 48;\nconst CHART_MARGIN = { top: 16, right: 16, bottom: 16, left: 16 };\n\nexport type ScatterPlotChartDomain = [number | 'auto', number | 'auto'];\nexport type ScatterPlotChartFormatter = (value: unknown, point: Record<string, unknown>) => string;\nexport type ScatterPlotChartPointClickHandler = (point: Record<string, unknown>) => void;\n\nexport type ScatterPlotChartProps = {\n data: Array<Record<string, unknown>>;\n xKey: string;\n yKey: string;\n nameKey?: string;\n colorKey?: string;\n height?: React.CSSProperties['height'];\n xLabel?: string;\n yLabel?: string;\n xDomain?: ScatterPlotChartDomain;\n yDomain?: ScatterPlotChartDomain;\n formatX?: ScatterPlotChartFormatter;\n formatY?: ScatterPlotChartFormatter;\n formatTooltipLabel?: (point: Record<string, unknown>) => string;\n onPointClick?: ScatterPlotChartPointClickHandler;\n className?: string;\n};\n\nexport function ScatterPlotChart({\n data,\n xKey,\n yKey,\n nameKey,\n colorKey,\n height = 210,\n xLabel,\n yLabel,\n xDomain,\n yDomain,\n formatX,\n formatY,\n formatTooltipLabel,\n onPointClick,\n className,\n}: ScatterPlotChartProps) {\n const isClickable = typeof onPointClick === 'function';\n const fillsContainer = height === '100%';\n\n if (data.length === 0) {\n return (\n <div\n className={cn(\n 'flex items-center justify-center rounded-md border border-border text-caption text-muted-foreground',\n className,\n )}\n style={{ height }}\n >\n No data to display\n </div>\n );\n }\n\n return (\n <div className={cn(fillsContainer && 'flex h-full min-h-0 flex-col', className)}>\n <div className={cn(fillsContainer && 'min-h-0 flex-1')} style={{ height: fillsContainer ? undefined : height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <ScatterChart data={data} margin={CHART_MARGIN}>\n <CartesianGrid\n stroke={Colors['muted-foreground']}\n strokeDasharray=\"4 4\"\n strokeOpacity={0.18}\n vertical={false}\n />\n <XAxis\n dataKey={xKey}\n name={xLabel}\n type=\"number\"\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n domain={xDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatX)}\n />\n <YAxis\n dataKey={yKey}\n name={yLabel}\n type=\"number\"\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n width={44}\n domain={yDomain}\n tickFormatter={value => formatScatterPlotAxisTick(value, formatY)}\n />\n <ZAxis range={[DEFAULT_POINT_SIZE, DEFAULT_POINT_SIZE]} />\n <Tooltip\n cursor={{ stroke: Colors['muted-foreground'], strokeOpacity: 0.16 }}\n content={\n <ScatterPlotChartTooltip\n xKey={xKey}\n yKey={yKey}\n nameKey={nameKey}\n formatX={formatX}\n formatY={formatY}\n formatTooltipLabel={formatTooltipLabel}\n />\n }\n />\n <Scatter\n data={data}\n fill={Colors.accent3}\n shape={(props: unknown) => {\n const point = (props as { payload?: Record<string, unknown> }).payload ?? {};\n const cx = (props as { cx?: number }).cx;\n const cy = (props as { cy?: number }).cy;\n if (typeof cx !== 'number' || typeof cy !== 'number') return <g />;\n return (\n <circle\n cx={cx}\n cy={cy}\n r={4}\n fill={getScatterPlotPointColor(point, colorKey)}\n opacity={0.9}\n style={{ cursor: isClickable ? 'pointer' : undefined }}\n />\n );\n }}\n onClick={(_: unknown, payload: unknown) => {\n const point = getScatterPlotClickedPoint(payload);\n if (point) onPointClick?.(point);\n }}\n />\n </ScatterChart>\n </ResponsiveContainer>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const scrollArea = require('../scroll-area-Qjf7e0Ik.cjs');
5
+ const scrollArea = require('../scroll-area-BzOyuS8Y.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { S as ScrollArea, a as ScrollBar } from '../scroll-area-CdQ_5bLm.js';
1
+ export { S as ScrollArea, a as ScrollBar } from '../scroll-area-DyTZoISq.js';
2
2
  //# sourceMappingURL=ScrollArea.es.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const select = require('../select-7ACAVdGX.cjs');
5
+ const select = require('../select-CH5XO18L.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { S as Select, a as SelectContent, b as SelectGroup, c as SelectItem, d as SelectTrigger, e as SelectValue } from '../select--DXpTg0O.js';
1
+ export { S as Select, a as SelectContent, b as SelectGroup, c as SelectItem, d as SelectTrigger, e as SelectValue } from '../select-CDIt5aab.js';
2
2
  //# sourceMappingURL=Select.es.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const SessionExpired = require('../SessionExpired-CF0BGNo_.cjs');
5
+ const SessionExpired = require('../SessionExpired-CFGTqnU5.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { S as SessionExpired } from '../SessionExpired-Bq5LcsDu.js';
1
+ export { S as SessionExpired } from '../SessionExpired-COK6flhT.js';
2
2
  //# sourceMappingURL=SessionExpired.es.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const settingsLayout = require('../settings-layout-NP_1dC-e.cjs');
5
+ const settingsLayout = require('../settings-layout-BGvMSClL.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { S as SettingsLayout } from '../settings-layout-C80s-D31.js';
1
+ export { S as SettingsLayout } from '../settings-layout-DA-JWqW3.js';
2
2
  //# sourceMappingURL=SettingsLayout.es.js.map
@@ -11,13 +11,13 @@ const codemirrorThemeDracula = require('@uiw/codemirror-theme-dracula');
11
11
  const ReactCodeMirror = require('@uiw/react-codemirror');
12
12
  const lucideReact = require('lucide-react');
13
13
  const React = require('react');
14
- const Button = require('../Button-CVewl8nT.cjs');
15
- const buttonsGroup = require('../buttons-group-BiLEV_Ak.cjs');
16
- const copyButton = require('../copy-button-BbDBpBMl.cjs');
14
+ const Button = require('../Button-C0DBEBcJ.cjs');
15
+ const buttonsGroup = require('../buttons-group-CoZP3lJt.cjs');
16
+ const copyButton = require('../copy-button-C5dMlWsW.cjs');
17
17
  const section = require('../section-CTihfzmc.cjs');
18
18
  const themeProvider = require('../theme-provider-aO5-jZVp.cjs');
19
19
  const primitives_raisedSurface = require('../primitives/raised-surface.cjs.js');
20
- const drawer = require('../drawer-BL5shtHH.cjs');
20
+ const drawer = require('../drawer-9eoZbmRK.cjs');
21
21
  const utils_cn = require('../cn-DG0X1KEP.cjs');
22
22
  const primitives_portalContainer = require('../primitives/portal-container.cjs.js');
23
23
  const primitives_transitions = require('../primitives/transitions.cjs.js');
@@ -120,16 +120,23 @@ function SideDialogCodeSection({ codeStr = "", title, icon, simplified = false }
120
120
  icon,
121
121
  title
122
122
  ] }),
123
- /* @__PURE__ */ jsxRuntime.jsxs(buttonsGroup.ButtonsGroup, { children: [
123
+ /* @__PURE__ */ jsxRuntime.jsxs(buttonsGroup.ButtonsGroup, { size: "sm", children: [
124
124
  /* @__PURE__ */ jsxRuntime.jsx(copyButton.CopyButton, { content: codeStr || "No content" }),
125
- hasMultilineText && /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { onClick: () => setShowAsMultilineText(!showAsMultilineText), children: showAsMultilineText ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlignLeftIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlignJustifyIcon, {}) })
125
+ hasMultilineText && /* @__PURE__ */ jsxRuntime.jsx(
126
+ Button.Button,
127
+ {
128
+ "aria-label": showAsMultilineText ? "Show escaped newlines" : "Show multiline text",
129
+ onClick: () => setShowAsMultilineText(!showAsMultilineText),
130
+ children: showAsMultilineText ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlignLeftIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlignJustifyIcon, {})
131
+ }
132
+ )
126
133
  ] })
127
134
  ] }),
128
135
  codeStr && /* @__PURE__ */ jsxRuntime.jsx(
129
136
  "div",
130
137
  {
131
- className: `${primitives_raisedSurface.raisedSurfaceStyle} text-body text-muted-foreground max-h-[30vh] overflow-hidden overflow-y-auto rounded-xl p-3 break-all`,
132
- children: simplified ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground px-2 font-mono break-all", children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-wrap", children: codeStr }) }) : /* @__PURE__ */ jsxRuntime.jsx(ReactCodeMirror, { extensions: [langJson.json(), view.EditorView.lineWrapping], theme, value: finalCodeStr })
138
+ className: `${primitives_raisedSurface.raisedSurfaceStyle} max-h-[30vh] overflow-hidden overflow-y-auto rounded-xl p-3 text-body break-all text-muted-foreground`,
139
+ children: simplified ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 font-mono break-all text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "text-wrap", children: codeStr }) }) : /* @__PURE__ */ jsxRuntime.jsx(ReactCodeMirror, { extensions: [langJson.json(), view.EditorView.lineWrapping], theme, value: finalCodeStr })
133
140
  }
134
141
  )
135
142
  ] });
@@ -219,7 +226,7 @@ function SideDialogRoot({
219
226
  "w-[75vw] 2xl:w-[65vw] 4xl:w-[55vw]": level === 1,
220
227
  "w-[70vw] 2xl:w-[59vw] 4xl:w-[48vw]": level === 2,
221
228
  "w-[65vw] 2xl:w-[53vw] 4xl:w-[41vw]": level === 3,
222
- "pointer-events-auto bg-background/70 backdrop-blur-sm shadow-none": isConfirmation
229
+ "pointer-events-auto bg-background/70 shadow-none backdrop-blur-sm": isConfirmation
223
230
  },
224
231
  className
225
232
  ),
@@ -267,7 +274,7 @@ function SideDialogTop({ children, className }) {
267
274
  "div",
268
275
  {
269
276
  className: utils_cn.cn(
270
- `text-body text-foreground relative flex h-11 items-center gap-3 pl-4`,
277
+ `relative flex h-11 items-center gap-3 pl-4 text-body text-foreground`,
271
278
  '[&:after]:absolute [&:after]:inset-x-6 [&:after]:bottom-0 [&:after]:border-b [&:after]:border-border [&:after]:content-[""]',
272
279
  className
273
280
  ),