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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/dist/{EmptyState-CdRjFB06.cjs → EmptyState-0MgNiP40.cjs} +11 -5
  2. package/dist/EmptyState-0MgNiP40.cjs.map +1 -0
  3. package/dist/{EmptyState-UWXhBp5U.js → EmptyState-CiZVWvpH.js} +11 -5
  4. package/dist/EmptyState-CiZVWvpH.js.map +1 -0
  5. package/dist/ErrorState-C7-4A-rB.cjs +21 -0
  6. package/dist/ErrorState-C7-4A-rB.cjs.map +1 -0
  7. package/dist/ErrorState-l5gg5Nzw.js +19 -0
  8. package/dist/ErrorState-l5gg5Nzw.js.map +1 -0
  9. package/dist/Header-BVnFQlzE.js +31 -0
  10. package/dist/Header-BVnFQlzE.js.map +1 -0
  11. package/dist/Header-CGjhJ0nQ.cjs +36 -0
  12. package/dist/Header-CGjhJ0nQ.cjs.map +1 -0
  13. package/dist/{PermissionDenied-Dz5qXpQj.cjs → PermissionDenied-CwLIzjpC.cjs} +11 -6
  14. package/dist/PermissionDenied-CwLIzjpC.cjs.map +1 -0
  15. package/dist/{PermissionDenied-B6TSGolC.js → PermissionDenied-DPM04x0a.js} +11 -6
  16. package/dist/PermissionDenied-DPM04x0a.js.map +1 -0
  17. package/dist/{SessionExpired-CF0BGNo_.cjs → SessionExpired-07Lz91i3.cjs} +4 -5
  18. package/dist/SessionExpired-07Lz91i3.cjs.map +1 -0
  19. package/dist/{SessionExpired-Bq5LcsDu.js → SessionExpired-CnJ8zr5Y.js} +4 -5
  20. package/dist/SessionExpired-CnJ8zr5Y.js.map +1 -0
  21. package/dist/ask-user-B_O3GEjY.cjs +216 -0
  22. package/dist/ask-user-B_O3GEjY.cjs.map +1 -0
  23. package/dist/ask-user-gT9rODOe.js +206 -0
  24. package/dist/ask-user-gT9rODOe.js.map +1 -0
  25. package/dist/{combobox-BWM3VH-n.cjs → combobox-BTZyTiyL.cjs} +3 -4
  26. package/dist/{combobox-BWM3VH-n.cjs.map → combobox-BTZyTiyL.cjs.map} +1 -1
  27. package/dist/{combobox-D7xJFZuO.js → combobox-B_gv8nUN.js} +2 -3
  28. package/dist/{combobox-D7xJFZuO.js.map → combobox-B_gv8nUN.js.map} +1 -1
  29. package/dist/components/ActionRow.cjs.js +38 -0
  30. package/dist/components/ActionRow.cjs.js.map +1 -0
  31. package/dist/components/ActionRow.d.ts +2 -0
  32. package/dist/components/ActionRow.es.js +34 -0
  33. package/dist/components/ActionRow.es.js.map +1 -0
  34. package/dist/components/Combobox.cjs.js +1 -1
  35. package/dist/components/Combobox.es.js +1 -1
  36. package/dist/components/Comment.cjs.js +2 -3
  37. package/dist/components/Comment.cjs.js.map +1 -1
  38. package/dist/components/Comment.es.js +1 -2
  39. package/dist/components/Comment.es.js.map +1 -1
  40. package/dist/components/DataCodeSection.cjs.js +1 -1
  41. package/dist/components/DataCodeSection.es.js +1 -1
  42. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  43. package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
  44. package/dist/components/DataDetailsPanel.es.js +2 -2
  45. package/dist/components/DataDetailsPanel.es.js.map +1 -1
  46. package/dist/components/DataPanel.cjs.js +1 -1
  47. package/dist/components/DataPanel.es.js +1 -1
  48. package/dist/components/DateTimePicker.cjs.js +1 -1
  49. package/dist/components/DateTimePicker.es.js +1 -1
  50. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  51. package/dist/components/DateTimeRangePicker.es.js +1 -1
  52. package/dist/components/EmptyState.cjs.js +1 -1
  53. package/dist/components/EmptyState.es.js +1 -1
  54. package/dist/components/EnvironmentVariablesEditor.cjs.js +7 -8
  55. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  56. package/dist/components/EnvironmentVariablesEditor.es.js +1 -2
  57. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  58. package/dist/components/ErrorState.cjs.js +1 -1
  59. package/dist/components/ErrorState.es.js +1 -1
  60. package/dist/components/FilterBar.cjs.js +490 -38
  61. package/dist/components/FilterBar.cjs.js.map +1 -1
  62. package/dist/components/FilterBar.es.js +490 -42
  63. package/dist/components/FilterBar.es.js.map +1 -1
  64. package/dist/components/FormFieldBlocks.cjs.js +11 -12
  65. package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
  66. package/dist/components/FormFieldBlocks.es.js +4 -5
  67. package/dist/components/FormFieldBlocks.es.js.map +1 -1
  68. package/dist/components/Header.cjs.js +6 -31
  69. package/dist/components/Header.cjs.js.map +1 -1
  70. package/dist/components/Header.es.js +1 -30
  71. package/dist/components/Header.es.js.map +1 -1
  72. package/dist/components/IntegrationDialog.cjs.js +1 -1
  73. package/dist/components/IntegrationDialog.es.js +1 -1
  74. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  75. package/dist/components/JSONSchemaForm.es.js +2 -2
  76. package/dist/components/ListSearch.cjs.js +1 -1
  77. package/dist/components/ListSearch.es.js +1 -1
  78. package/dist/components/LogsDataList.cjs.js +2 -0
  79. package/dist/components/LogsDataList.cjs.js.map +1 -1
  80. package/dist/components/LogsDataList.es.js +2 -0
  81. package/dist/components/LogsDataList.es.js.map +1 -1
  82. package/dist/components/Message.cjs.js +1 -1
  83. package/dist/components/Message.es.js +2 -2
  84. package/dist/components/MetricsCard.cjs.js +1 -1
  85. package/dist/components/MetricsCard.es.js +1 -1
  86. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  87. package/dist/components/MetricsKpiCard.es.js +1 -1
  88. package/dist/components/PageLayout.cjs.js +30 -8
  89. package/dist/components/PageLayout.cjs.js.map +1 -1
  90. package/dist/components/PageLayout.es.js +32 -3
  91. package/dist/components/PageLayout.es.js.map +1 -1
  92. package/dist/components/PermissionDenied.cjs.js +1 -1
  93. package/dist/components/PermissionDenied.es.js +1 -1
  94. package/dist/components/PropertyFilter.cjs.js +2 -2
  95. package/dist/components/PropertyFilter.es.js +3 -3
  96. package/dist/components/RadioGroup.cjs.js +3 -56
  97. package/dist/components/RadioGroup.cjs.js.map +1 -1
  98. package/dist/components/RadioGroup.es.js +1 -39
  99. package/dist/components/RadioGroup.es.js.map +1 -1
  100. package/dist/components/SessionExpired.cjs.js +1 -1
  101. package/dist/components/SessionExpired.es.js +1 -1
  102. package/dist/components/SideDialog.cjs.js +10 -2
  103. package/dist/components/SideDialog.cjs.js.map +1 -1
  104. package/dist/components/SideDialog.es.js +10 -2
  105. package/dist/components/SideDialog.es.js.map +1 -1
  106. package/dist/components/Spinner.cjs.js +1 -1
  107. package/dist/components/Spinner.es.js +1 -1
  108. package/dist/components/Steps.cjs.js +1 -1
  109. package/dist/components/Steps.es.js +1 -1
  110. package/dist/components/Workflow.cjs.js +6 -6
  111. package/dist/components/Workflow.cjs.js.map +1 -1
  112. package/dist/components/Workflow.es.js +6 -6
  113. package/dist/components/Workflow.es.js.map +1 -1
  114. package/dist/components/ai/ask-user.cjs.js +4 -3
  115. package/dist/components/ai/ask-user.cjs.js.map +1 -1
  116. package/dist/components/ai/ask-user.es.js +1 -1
  117. package/dist/components/ai/tool-call.cjs.js +1 -1
  118. package/dist/components/ai/tool-call.es.js +2 -2
  119. package/dist/{data-code-section-qujvEc6j.cjs → data-code-section-Dpd2hzmU.cjs} +4 -4
  120. package/dist/{data-code-section-qujvEc6j.cjs.map → data-code-section-Dpd2hzmU.cjs.map} +1 -1
  121. package/dist/{data-code-section-DKz9Okaz.js → data-code-section-O-DRRO6N.js} +4 -4
  122. package/dist/{data-code-section-DKz9Okaz.js.map → data-code-section-O-DRRO6N.js.map} +1 -1
  123. package/dist/{data-panel-CWjgS1Gh.js → data-panel-CDJMMCvz.js} +3 -3
  124. package/dist/{data-panel-CWjgS1Gh.js.map → data-panel-CDJMMCvz.js.map} +1 -1
  125. package/dist/{data-panel-CWZJKBeW.cjs → data-panel-DNPcL38C.cjs} +3 -3
  126. package/dist/{data-panel-CWZJKBeW.cjs.map → data-panel-DNPcL38C.cjs.map} +1 -1
  127. package/dist/{date-time-range-picker-BcjLbkGu.js → date-time-range-picker-B-C-PPI4.js} +2 -3
  128. package/dist/{date-time-range-picker-BcjLbkGu.js.map → date-time-range-picker-B-C-PPI4.js.map} +1 -1
  129. package/dist/{date-time-range-picker-C6hjZswK.cjs → date-time-range-picker-D_mHYCx_.cjs} +3 -4
  130. package/dist/{date-time-range-picker-C6hjZswK.cjs.map → date-time-range-picker-D_mHYCx_.cjs.map} +1 -1
  131. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  132. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  133. package/dist/domains/chat/components/loading-badge.cjs.js +1 -1
  134. package/dist/domains/chat/components/loading-badge.es.js +1 -1
  135. package/dist/domains/chat/messages/reasoning.cjs.js +1 -1
  136. package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
  137. package/dist/domains/chat/messages/reasoning.es.js +1 -1
  138. package/dist/domains/chat/messages/reasoning.es.js.map +1 -1
  139. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +2 -2
  140. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js.map +1 -1
  141. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +2 -2
  142. package/dist/domains/chat/tools/badges/ask-user-badge.es.js.map +1 -1
  143. package/dist/domains/logs/components/logs-error-content.cjs.js +4 -7
  144. package/dist/domains/logs/components/logs-error-content.cjs.js.map +1 -1
  145. package/dist/domains/logs/components/logs-error-content.es.js +4 -7
  146. package/dist/domains/logs/components/logs-error-content.es.js.map +1 -1
  147. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  148. package/dist/domains/logs/components/logs-toolbar.cjs.js.map +1 -1
  149. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  150. package/dist/domains/logs/components/logs-toolbar.es.js.map +1 -1
  151. package/dist/domains/logs/components/no-logs-info.cjs.js +5 -5
  152. package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
  153. package/dist/domains/logs/components/no-logs-info.es.js +6 -6
  154. package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
  155. package/dist/domains/memory/components/flame-graph.cjs.js +6 -6
  156. package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
  157. package/dist/domains/memory/components/flame-graph.es.js +6 -6
  158. package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
  159. package/dist/domains/memory/components/observation-detail-view.cjs.js +10 -11
  160. package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
  161. package/dist/domains/memory/components/observation-detail-view.es.js +10 -11
  162. package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
  163. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  164. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  165. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  166. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  167. package/dist/domains/metrics/components/latency-card-view.cjs.js +1 -1
  168. package/dist/domains/metrics/components/latency-card-view.es.js +1 -1
  169. package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
  170. package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
  171. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
  172. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
  173. package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
  174. package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
  175. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +1 -1
  176. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +1 -1
  177. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +1 -1
  178. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +1 -1
  179. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +1 -1
  180. package/dist/domains/metrics/components/traces-volume-card-view.es.js +1 -1
  181. package/dist/domains/traces/components/no-traces-info.cjs.js +2 -3
  182. package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
  183. package/dist/domains/traces/components/no-traces-info.es.js +2 -3
  184. package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
  185. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
  186. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
  187. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  188. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  189. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  190. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  191. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +1 -1
  192. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +1 -1
  193. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  194. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  195. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  196. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  197. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  198. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  199. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  200. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  201. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  202. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  203. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  204. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  205. package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
  206. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  207. package/dist/domains/traces/components/trace-columns-menu.es.js +2 -2
  208. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  209. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  210. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  211. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  212. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  213. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  214. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  215. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  216. package/dist/domains/traces/components/traces-error-content.cjs.js +3 -3
  217. package/dist/domains/traces/components/traces-error-content.cjs.js.map +1 -1
  218. package/dist/domains/traces/components/traces-error-content.es.js +3 -3
  219. package/dist/domains/traces/components/traces-error-content.es.js.map +1 -1
  220. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -0
  221. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  222. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -0
  223. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  224. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +4 -2
  225. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js.map +1 -1
  226. package/dist/domains/traces/hooks/use-trace-url-state.es.js +5 -3
  227. package/dist/domains/traces/hooks/use-trace-url-state.es.js.map +1 -1
  228. package/dist/domains/traces/trace-filters.cjs.js +92 -11
  229. package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
  230. package/dist/domains/traces/trace-filters.es.js +87 -13
  231. package/dist/domains/traces/trace-filters.es.js.map +1 -1
  232. package/dist/domains/traces/trace-query-filters.cjs.js +76 -45
  233. package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
  234. package/dist/domains/traces/trace-query-filters.es.js +76 -46
  235. package/dist/domains/traces/trace-query-filters.es.js.map +1 -1
  236. package/dist/domains/traces.cjs.js +7 -0
  237. package/dist/domains/traces.cjs.js.map +1 -1
  238. package/dist/domains/traces.es.js +2 -2
  239. package/dist/ee/signals/components/entity-index-list.cjs.js +2 -0
  240. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  241. package/dist/ee/signals/components/entity-index-list.es.js +2 -0
  242. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  243. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +5 -7
  244. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js.map +1 -1
  245. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +5 -7
  246. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js.map +1 -1
  247. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +11 -13
  248. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  249. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +12 -14
  250. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  251. package/dist/ee/signals/sankey-signals.cjs.js +2 -2
  252. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
  253. package/dist/ee/signals/sankey-signals.es.js +2 -2
  254. package/dist/ee/signals/sankey-signals.es.js.map +1 -1
  255. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +10 -11
  256. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
  257. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -4
  258. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
  259. package/dist/ee/topics/components/topics-layout.cjs.js +1 -1
  260. package/dist/ee/topics/components/topics-layout.cjs.js.map +1 -1
  261. package/dist/ee/topics/components/topics-layout.es.js +1 -1
  262. package/dist/ee/topics/components/topics-layout.es.js.map +1 -1
  263. package/dist/{field-block-DWkbNcsV.js → field-error-id-BLxISyNV.js} +4 -2
  264. package/dist/field-error-id-BLxISyNV.js.map +1 -0
  265. package/dist/{field-block-Dy1IaWbv.cjs → field-error-id-CXi0XkjZ.cjs} +4 -1
  266. package/dist/field-error-id-CXi0XkjZ.cjs.map +1 -0
  267. package/dist/{filter-bar-chip-BxI0NgEz.cjs → filter-bar-chip-D-IRgccJ.cjs} +296 -65
  268. package/dist/filter-bar-chip-D-IRgccJ.cjs.map +1 -0
  269. package/dist/{filter-bar-chip-C-JxWUU8.js → filter-bar-chip-luoMVy8-.js} +293 -67
  270. package/dist/filter-bar-chip-luoMVy8-.js.map +1 -0
  271. package/dist/filter-bar-chip.css +33 -1
  272. package/dist/layout/tabbed-container.cjs.js +2 -2
  273. package/dist/layout/tabbed-container.es.js +2 -2
  274. package/dist/{list-search-vyxsZMAK.cjs → list-search-BEDvqI5f.cjs} +2 -2
  275. package/dist/{list-search-vyxsZMAK.cjs.map → list-search-BEDvqI5f.cjs.map} +1 -1
  276. package/dist/{list-search-BTW0Neuc.js → list-search-BcOawrgy.js} +2 -2
  277. package/dist/{list-search-BTW0Neuc.js.map → list-search-BcOawrgy.js.map} +1 -1
  278. package/dist/{message-BrwbcLPi.js → message-Cs8NW-MR.js} +2 -2
  279. package/dist/{message-BrwbcLPi.js.map → message-Cs8NW-MR.js.map} +1 -1
  280. package/dist/{message-CszposMZ.cjs → message-D9b33Pf_.cjs} +2 -2
  281. package/dist/{message-CszposMZ.cjs.map → message-D9b33Pf_.cjs.map} +1 -1
  282. package/dist/{metrics-card-BUJxiwec.cjs → metrics-card-D-VjFkUM.cjs} +3 -3
  283. package/dist/{metrics-card-BUJxiwec.cjs.map → metrics-card-D-VjFkUM.cjs.map} +1 -1
  284. package/dist/{metrics-card-BlBt1WHw.js → metrics-card-jjLRvic4.js} +3 -3
  285. package/dist/{metrics-card-BlBt1WHw.js.map → metrics-card-jjLRvic4.js.map} +1 -1
  286. package/dist/{metrics-kpi-card-CBSNmtc5.js → metrics-kpi-card-CY6F7nTX.js} +2 -2
  287. package/dist/{metrics-kpi-card-CBSNmtc5.js.map → metrics-kpi-card-CY6F7nTX.js.map} +1 -1
  288. package/dist/{metrics-kpi-card-CgqmNcEC.cjs → metrics-kpi-card-krK6uG7U.cjs} +2 -2
  289. package/dist/{metrics-kpi-card-CgqmNcEC.cjs.map → metrics-kpi-card-krK6uG7U.cjs.map} +1 -1
  290. package/dist/new/layout/app-shell.cjs.js +23 -28
  291. package/dist/new/layout/app-shell.cjs.js.map +1 -1
  292. package/dist/new/layout/app-shell.es.js +23 -28
  293. package/dist/new/layout/app-shell.es.js.map +1 -1
  294. package/dist/{property-filter-applied-BmxCPe2d.cjs → property-filter-applied-CAiO4FBw.cjs} +2 -2
  295. package/dist/{property-filter-applied-BmxCPe2d.cjs.map → property-filter-applied-CAiO4FBw.cjs.map} +1 -1
  296. package/dist/{property-filter-applied-BBiUbtr0.js → property-filter-applied-MIKU9okW.js} +2 -2
  297. package/dist/{property-filter-applied-BBiUbtr0.js.map → property-filter-applied-MIKU9okW.js.map} +1 -1
  298. package/dist/radio-group-BdEPWGzi.cjs +62 -0
  299. package/dist/radio-group-BdEPWGzi.cjs.map +1 -0
  300. package/dist/radio-group-CFZXUXZ5.js +40 -0
  301. package/dist/radio-group-CFZXUXZ5.js.map +1 -0
  302. package/dist/{search-field-block-D0PUUCAE.cjs → search-field-block-DAdvPs1N.cjs} +8 -9
  303. package/dist/{search-field-block-D0PUUCAE.cjs.map → search-field-block-DAdvPs1N.cjs.map} +1 -1
  304. package/dist/{search-field-block-B5vUVTpl.js → search-field-block-DjN9AgLw.js} +2 -3
  305. package/dist/{search-field-block-B5vUVTpl.js.map → search-field-block-DjN9AgLw.js.map} +1 -1
  306. package/dist/{select-field-block-W2u2WmN3.cjs → select-field-block-7EHxArfT.cjs} +8 -9
  307. package/dist/{select-field-block-W2u2WmN3.cjs.map → select-field-block-7EHxArfT.cjs.map} +1 -1
  308. package/dist/{select-field-block-Bu7UXI2H.js → select-field-block-CBte2DyW.js} +2 -3
  309. package/dist/{select-field-block-Bu7UXI2H.js.map → select-field-block-CBte2DyW.js.map} +1 -1
  310. package/dist/{span-payload-primitives-DnRsP93D.cjs → span-payload-primitives-BLKf0qn0.cjs} +2 -2
  311. package/dist/{span-payload-primitives-DnRsP93D.cjs.map → span-payload-primitives-BLKf0qn0.cjs.map} +1 -1
  312. package/dist/{span-payload-primitives-sbxk4CHC.js → span-payload-primitives-CDLOoJfp.js} +2 -2
  313. package/dist/{span-payload-primitives-sbxk4CHC.js.map → span-payload-primitives-CDLOoJfp.js.map} +1 -1
  314. package/dist/{spinner-CqP-NaB2.cjs → spinner-BCpN7LL9.cjs} +9 -3
  315. package/dist/spinner-BCpN7LL9.cjs.map +1 -0
  316. package/dist/{spinner-D2C2DYw8.js → spinner-ylbE0TJA.js} +9 -3
  317. package/dist/spinner-ylbE0TJA.js.map +1 -0
  318. package/dist/src/domains/traces/components/traces-error-content.d.ts +2 -2
  319. package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +5 -3
  320. package/dist/src/domains/traces/trace-filters.d.ts +19 -4
  321. package/dist/src/domains/traces/trace-query-filters.d.ts +13 -1
  322. package/dist/src/ds/components/ActionRow/action-row.d.ts +9 -0
  323. package/dist/src/ds/components/ActionRow/action-row.stories.d.ts +8 -0
  324. package/dist/src/ds/components/ActionRow/index.d.ts +5 -0
  325. package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +7 -5
  326. package/dist/src/ds/components/EmptyState/EmptyState.d.ts +8 -2
  327. package/dist/src/ds/components/EmptyState/empty-state.stories.d.ts +1 -0
  328. package/dist/src/ds/components/ErrorState/ErrorState.d.ts +3 -1
  329. package/dist/src/ds/components/ErrorState/error-state.stories.d.ts +1 -0
  330. package/dist/src/ds/components/FilterBar/filter-bar-advanced-chip.d.ts +10 -0
  331. package/dist/src/ds/components/FilterBar/filter-bar-context.d.ts +46 -9
  332. package/dist/src/ds/components/FilterBar/filter-bar-group-editor.d.ts +25 -0
  333. package/dist/src/ds/components/FilterBar/filter-bar-input.d.ts +8 -1
  334. package/dist/src/ds/components/FilterBar/filter-bar-option-list.d.ts +5 -0
  335. package/dist/src/ds/components/FilterBar/filter-bar-tree.d.ts +36 -0
  336. package/dist/src/ds/components/FilterBar/filter-bar.d.ts +28 -7
  337. package/dist/src/ds/components/FilterBar/filter-bar.stories.d.ts +3 -0
  338. package/dist/src/ds/components/FilterBar/index.d.ts +6 -1
  339. package/dist/src/ds/components/FilterBar/types.d.ts +36 -0
  340. package/dist/src/ds/components/FilterBar/use-settle-on-leave.d.ts +2 -0
  341. package/dist/src/ds/components/PageLayout/index.d.ts +1 -2
  342. package/dist/src/ds/components/PageLayout/page-layout.d.ts +13 -11
  343. package/dist/src/ds/components/PageLayout/page-layout.stories.d.ts +1 -2
  344. package/dist/src/ds/components/PermissionDenied/PermissionDenied.d.ts +3 -1
  345. package/dist/src/ds/components/PermissionDenied/permission-denied.stories.d.ts +1 -0
  346. package/dist/src/ds/components/SessionExpired/SessionExpired.d.ts +3 -1
  347. package/dist/src/ds/components/SessionExpired/session-expired.stories.d.ts +1 -0
  348. package/dist/src/ds/components/Spinner/spinner.d.ts +6 -3
  349. package/dist/src/ds/components/Spinner/spinner.stories.d.ts +1 -0
  350. package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +13 -8
  351. package/dist/src/ds/new/layout/app-shell/app-shell.d.ts +2 -8
  352. package/dist/src/ds/new/layout/app-shell/app-shell.stories.d.ts +0 -1
  353. package/dist/style.css +42 -92
  354. package/dist/{text-field-block--EUJKlY_.js → text-field-block-DBesvdaa.js} +2 -3
  355. package/dist/{text-field-block--EUJKlY_.js.map → text-field-block-DBesvdaa.js.map} +1 -1
  356. package/dist/{text-field-block-BLpLWmu8.cjs → text-field-block-DUMc8MTJ.cjs} +8 -9
  357. package/dist/{text-field-block-BLpLWmu8.cjs.map → text-field-block-DUMc8MTJ.cjs.map} +1 -1
  358. package/dist/{tool-call-K147tCug.js → tool-call-Du8XIzfo.js} +2 -2
  359. package/dist/{tool-call-K147tCug.js.map → tool-call-Du8XIzfo.js.map} +1 -1
  360. package/dist/{tool-call-CMRvRE-v.cjs → tool-call-ZKSbU3LR.cjs} +2 -2
  361. package/dist/{tool-call-CMRvRE-v.cjs.map → tool-call-ZKSbU3LR.cjs.map} +1 -1
  362. package/dist/types-CIPrYAzY.js +9 -0
  363. package/dist/types-CIPrYAzY.js.map +1 -0
  364. package/dist/types-Ns4ZNp-g.cjs +12 -0
  365. package/dist/types-Ns4ZNp-g.cjs.map +1 -0
  366. package/package.json +6 -6
  367. package/dist/EmptyState-CdRjFB06.cjs.map +0 -1
  368. package/dist/EmptyState-UWXhBp5U.js.map +0 -1
  369. package/dist/ErrorState-B3uTRAEd.cjs +0 -16
  370. package/dist/ErrorState-B3uTRAEd.cjs.map +0 -1
  371. package/dist/ErrorState-DqRx8Dw_.js +0 -14
  372. package/dist/ErrorState-DqRx8Dw_.js.map +0 -1
  373. package/dist/PermissionDenied-B6TSGolC.js.map +0 -1
  374. package/dist/PermissionDenied-Dz5qXpQj.cjs.map +0 -1
  375. package/dist/SessionExpired-Bq5LcsDu.js.map +0 -1
  376. package/dist/SessionExpired-CF0BGNo_.cjs.map +0 -1
  377. package/dist/ask-user-CS2e6Re4.cjs +0 -147
  378. package/dist/ask-user-CS2e6Re4.cjs.map +0 -1
  379. package/dist/ask-user-gS3Y1bCc.js +0 -138
  380. package/dist/ask-user-gS3Y1bCc.js.map +0 -1
  381. package/dist/components/MainContent.cjs.js +0 -81
  382. package/dist/components/MainContent.cjs.js.map +0 -1
  383. package/dist/components/MainContent.d.ts +0 -2
  384. package/dist/components/MainContent.es.js +0 -75
  385. package/dist/components/MainContent.es.js.map +0 -1
  386. package/dist/field-block-DWkbNcsV.js.map +0 -1
  387. package/dist/field-block-Dy1IaWbv.cjs.map +0 -1
  388. package/dist/field-error-id-B3Z2Zu5y.cjs +0 -6
  389. package/dist/field-error-id-B3Z2Zu5y.cjs.map +0 -1
  390. package/dist/field-error-id-D3yg1nBh.js +0 -4
  391. package/dist/field-error-id-D3yg1nBh.js.map +0 -1
  392. package/dist/filter-bar-chip-BxI0NgEz.cjs.map +0 -1
  393. package/dist/filter-bar-chip-C-JxWUU8.js.map +0 -1
  394. package/dist/new/layout/page-shell.cjs.js +0 -34
  395. package/dist/new/layout/page-shell.cjs.js.map +0 -1
  396. package/dist/new/layout/page-shell.d.ts +0 -2
  397. package/dist/new/layout/page-shell.es.js +0 -30
  398. package/dist/new/layout/page-shell.es.js.map +0 -1
  399. package/dist/no-data-page-layout-DcVPjj-J.js +0 -9
  400. package/dist/no-data-page-layout-DcVPjj-J.js.map +0 -1
  401. package/dist/no-data-page-layout-Drzbg_w8.cjs +0 -11
  402. package/dist/no-data-page-layout-Drzbg_w8.cjs.map +0 -1
  403. package/dist/page-heading-context-D3yjYoJE.js +0 -9
  404. package/dist/page-heading-context-D3yjYoJE.js.map +0 -1
  405. package/dist/page-heading-context-Du-CpxAx.cjs +0 -12
  406. package/dist/page-heading-context-Du-CpxAx.cjs.map +0 -1
  407. package/dist/page-layout-C9ifD9Q8.cjs +0 -99
  408. package/dist/page-layout-C9ifD9Q8.cjs.map +0 -1
  409. package/dist/page-layout-xcM8IR-B.js +0 -97
  410. package/dist/page-layout-xcM8IR-B.js.map +0 -1
  411. package/dist/spinner-CqP-NaB2.cjs.map +0 -1
  412. package/dist/spinner-D2C2DYw8.js.map +0 -1
  413. package/dist/src/ds/components/MainContent/index.d.ts +0 -1
  414. package/dist/src/ds/components/MainContent/main-content.d.ts +0 -21
  415. package/dist/src/ds/components/MainContent/main-content.stories.d.ts +0 -10
  416. package/dist/src/ds/components/PageLayout/no-data-page-layout.d.ts +0 -6
  417. package/dist/src/ds/components/PageLayout/page-heading-context.d.ts +0 -2
  418. package/dist/src/ds/components/PageLayout/page-layout-column.d.ts +0 -5
  419. package/dist/src/ds/components/PageLayout/page-layout-main-area.d.ts +0 -7
  420. package/dist/src/ds/components/PageLayout/page-layout-root.d.ts +0 -7
  421. package/dist/src/ds/components/PageLayout/page-layout-row.d.ts +0 -11
  422. package/dist/src/ds/components/PageLayout/page-layout-top-area.d.ts +0 -5
  423. package/dist/src/ds/new/layout/page-shell/index.d.ts +0 -1
  424. package/dist/src/ds/new/layout/page-shell/page-shell.d.ts +0 -24
  425. package/dist/src/ds/new/layout/page-shell/page-shell.stories.d.ts +0 -63
@@ -1,9 +1,10 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { CheckIcon, LockIcon, XIcon, SearchIcon, PencilIcon } from 'lucide-react';
3
- import { createContext, useContext, useRef, useState, useCallback, useMemo, forwardRef, useEffect } from 'react';
3
+ import { createContext, useContext, useRef, useMemo, useState, useCallback, forwardRef, useEffect } from 'react';
4
+ import { i as isFilterBarGroup, p as parseFieldValue } from './types-CIPrYAzY.js';
4
5
  import { c as comboboxStyles } from './combobox-styles-CRebmeht.js';
5
6
  import { Combobox } from '@base-ui/react/combobox';
6
- import { S as Spinner } from './spinner-D2C2DYw8.js';
7
+ import { S as Spinner } from './spinner-ylbE0TJA.js';
7
8
  import { useFluidMenu, FluidMenuItems, useFluidMenuItemRef } from './primitives/fluid-menu.es.js';
8
9
  import { c as cn } from './cn-65Adrsfj.js';
9
10
  import { B as Button } from './Button-cWcBEd-G.js';
@@ -15,8 +16,92 @@ import { MENU_SIDE_OFFSET } from './primitives/menu-item.es.js';
15
16
  import { usePortalContainer } from './primitives/portal-container.es.js';
16
17
  import { useIsApplePlatform } from './hooks/use-keyboard-shortcut-label.es.js';
17
18
 
18
- import './filter-bar-chip.css';const SEGMENTS_LEFT_TO_RIGHT = ["field", "operator", "value", "remove"];
19
+ import './filter-bar-chip.css';const ROOT_GROUP_ID = "root";
20
+ const normalize = (value) => Array.isArray(value) ? { logic: "and", nodes: value } : value;
21
+ const denormalize = (expr, flat) => flat ? expr.nodes.filter((node) => !isFilterBarGroup(node)) : expr;
22
+ const flattenItems = (expr) => {
23
+ const out = [];
24
+ const walk = (nodes, groupId) => {
25
+ for (const node of nodes) {
26
+ if (isFilterBarGroup(node)) walk(node.nodes, node.id);
27
+ else out.push(groupId ? { item: node, groupId } : { item: node });
28
+ }
29
+ };
30
+ walk(expr.nodes, void 0);
31
+ return out;
32
+ };
33
+ const findGroupIn = (nodes, groupId) => {
34
+ for (const node of nodes) {
35
+ if (!isFilterBarGroup(node)) continue;
36
+ if (node.id === groupId) return node;
37
+ const nested = findGroupIn(node.nodes, groupId);
38
+ if (nested) return nested;
39
+ }
40
+ return void 0;
41
+ };
42
+ const findGroup = (expr, groupId) => findGroupIn(expr.nodes, groupId);
43
+ const groupDepth = (expr, groupId) => {
44
+ const walk = (nodes, depth) => {
45
+ for (const node of nodes) {
46
+ if (!isFilterBarGroup(node)) continue;
47
+ if (node.id === groupId) return depth;
48
+ const nested = walk(node.nodes, depth + 1);
49
+ if (nested) return nested;
50
+ }
51
+ return 0;
52
+ };
53
+ return walk(expr.nodes, 1);
54
+ };
55
+ const countLeaves = (group) => group.nodes.reduce((sum, node) => sum + (isFilterBarGroup(node) ? countLeaves(node) : 1), 0);
56
+ const collectIds = (group) => [
57
+ group.id,
58
+ ...group.nodes.flatMap((node) => isFilterBarGroup(node) ? collectIds(node) : [node.id])
59
+ ];
60
+ const mapGroup = (nodes, groupId, fn) => nodes.map((node) => {
61
+ if (!isFilterBarGroup(node)) return node;
62
+ return node.id === groupId ? fn(node) : { ...node, nodes: mapGroup(node.nodes, groupId, fn) };
63
+ });
64
+ const mapItems = (nodes, fn) => nodes.map((node) => isFilterBarGroup(node) ? { ...node, nodes: mapItems(node.nodes, fn) } : fn(node));
65
+ const filterNodes = (nodes, keep) => nodes.filter(keep).map((node) => isFilterBarGroup(node) ? { ...node, nodes: filterNodes(node.nodes, keep) } : node);
66
+ const updateItem = (expr, itemId, patch) => ({
67
+ ...expr,
68
+ nodes: mapItems(expr.nodes, (item) => item.id === itemId ? { ...item, ...patch } : item)
69
+ });
70
+ const removeNode = (expr, id) => ({
71
+ ...expr,
72
+ nodes: filterNodes(expr.nodes, (node) => node.id !== id)
73
+ });
74
+ const pruneNodes = (nodes) => nodes.flatMap((node) => {
75
+ if (!isFilterBarGroup(node)) return [node];
76
+ const pruned = pruneNodes(node.nodes);
77
+ return pruned.length === 0 ? [] : [{ ...node, nodes: pruned }];
78
+ });
79
+ const pruneEmptyGroups = (expr) => ({
80
+ ...expr,
81
+ nodes: pruneNodes(expr.nodes)
82
+ });
83
+ const insertItem = (expr, groupId, item) => {
84
+ if (!groupId || groupId === ROOT_GROUP_ID) return { ...expr, nodes: [...expr.nodes, item] };
85
+ return { ...expr, nodes: mapGroup(expr.nodes, groupId, (group) => ({ ...group, nodes: [...group.nodes, item] })) };
86
+ };
87
+ const setGroupLogic = (expr, groupId, logic) => {
88
+ if (groupId === ROOT_GROUP_ID) return { ...expr, logic };
89
+ return { ...expr, nodes: mapGroup(expr.nodes, groupId, (group) => ({ ...group, logic })) };
90
+ };
91
+ const createGroup = (expr, parentId, group) => {
92
+ if (!parentId || parentId === ROOT_GROUP_ID) return { ...expr, nodes: [...expr.nodes, group] };
93
+ return { ...expr, nodes: mapGroup(expr.nodes, parentId, (parent) => ({ ...parent, nodes: [...parent.nodes, group] })) };
94
+ };
95
+ const clearRemovable = (expr, pinned) => pruneEmptyGroups({
96
+ ...expr,
97
+ nodes: filterNodes(expr.nodes, (node) => isFilterBarGroup(node) || pinned.has(node.id))
98
+ });
99
+
100
+ const SEGMENTS_LEFT_TO_RIGHT = ["field", "operator", "value", "remove"];
19
101
  const SEGMENTS_RIGHT_TO_LEFT = [...SEGMENTS_LEFT_TO_RIGHT].reverse();
102
+ const DEFAULT_MAX_GROUP_DEPTH = 3;
103
+ const FILTER_BAR_SCOPE_ATTR = "data-filter-bar-scope";
104
+ const scopeOf = (el) => el?.closest(`[${FILTER_BAR_SCOPE_ATTR}]`) ?? null;
20
105
  const stageOf = (draft) => {
21
106
  if (!draft) return "none";
22
107
  return draft.operatorId ? "operator" : "field";
@@ -36,21 +121,55 @@ function createFilterId() {
36
121
  function emptyValueFor(operator) {
37
122
  return operator?.arity === "many" ? [] : "";
38
123
  }
124
+ const idsOf = (nodes, out = /* @__PURE__ */ new Set()) => {
125
+ for (const node of nodes) {
126
+ out.add(node.id);
127
+ if (isFilterBarGroup(node)) idsOf(node.nodes, out);
128
+ }
129
+ return out;
130
+ };
131
+ const mergeNodes = (prev, next, leaving) => {
132
+ const nextById = new Map(next.map((node) => [node.id, node]));
133
+ const seen = /* @__PURE__ */ new Set();
134
+ const out = [];
135
+ for (const old of prev) {
136
+ const fresh = nextById.get(old.id);
137
+ if (fresh) {
138
+ seen.add(old.id);
139
+ out.push(
140
+ isFilterBarGroup(fresh) && isFilterBarGroup(old) ? { ...fresh, nodes: mergeNodes(old.nodes, fresh.nodes, leaving) } : fresh
141
+ );
142
+ } else if (leaving.has(old.id)) {
143
+ out.push(old);
144
+ }
145
+ }
146
+ for (const node of next) if (!seen.has(node.id)) out.push(node);
147
+ return out;
148
+ };
39
149
  function FilterBarProvider({
40
150
  fields,
41
151
  operators,
42
152
  value,
43
153
  onValueChange,
44
154
  createItemId,
155
+ maxDepth = DEFAULT_MAX_GROUP_DEPTH,
45
156
  ariaLabel,
46
157
  children
47
158
  }) {
48
159
  const segments = useRef(/* @__PURE__ */ new Map());
49
160
  const inputRef = useRef(null);
50
- const itemsRef = useRef(value);
51
- itemsRef.current = value;
161
+ const flat = Array.isArray(value);
162
+ const expression = useMemo(() => normalize(value), [value]);
163
+ const exprRef = useRef(expression);
164
+ exprRef.current = expression;
52
165
  const [announcement, setAnnouncement] = useState("");
53
166
  const [nonRemovableIds, setNonRemovableIds] = useState(() => /* @__PURE__ */ new Set());
167
+ const [inputTarget, setInputTarget] = useState(void 0);
168
+ const [openGroupId, setOpenGroupId] = useState(null);
169
+ const emit = useCallback(
170
+ (next) => onValueChange(denormalize(next, flat)),
171
+ [onValueChange, flat]
172
+ );
54
173
  const getField = useCallback((fieldId) => fields.find((f) => f.id === fieldId), [fields]);
55
174
  const getOperator = useCallback((operatorId) => operators.find((o) => o.id === operatorId), [operators]);
56
175
  const getFieldOperators = useCallback(
@@ -67,84 +186,162 @@ function FilterBarProvider({
67
186
  draftRef.current = draft;
68
187
  const [lastCommit, setLastCommit] = useState(null);
69
188
  const settleCommit = useCallback(() => setLastCommit((prev) => prev ? { ...prev, glint: false } : null), []);
70
- const [leavingItems, setLeavingItems] = useState(
71
- () => /* @__PURE__ */ new Map()
72
- );
189
+ const [leavingIds, setLeavingIds] = useState(() => /* @__PURE__ */ new Set());
73
190
  const settleRemove = useCallback((id) => {
74
- setLeavingItems((prev) => {
191
+ setLeavingIds((prev) => {
75
192
  if (!prev.has(id)) return prev;
76
- const next = new Map(prev);
193
+ const next = new Set(prev);
77
194
  next.delete(id);
78
195
  return next;
79
196
  });
80
197
  }, []);
81
- const markLeaving = useCallback((removed) => {
82
- if (removed.length === 0) return;
83
- setLeavingItems((prev) => {
84
- const next = new Map(prev);
85
- for (const entry of removed) next.set(entry.item.id, entry);
86
- return next;
87
- });
198
+ const markLeaving = useCallback((ids) => {
199
+ const list = [...ids];
200
+ if (list.length === 0) return;
201
+ setLeavingIds((prev) => /* @__PURE__ */ new Set([...prev, ...list]));
88
202
  }, []);
89
- const { items, leaving } = useMemo(() => {
90
- const present = new Set(value.map((item) => item.id));
91
- const items2 = lastCommit && !present.has(lastCommit.item.id) ? [...value, lastCommit.item] : [...value];
92
- const leaving2 = /* @__PURE__ */ new Set();
93
- const pending = [...leavingItems.values()].filter((entry) => !present.has(entry.item.id)).sort((a, b) => a.index - b.index);
94
- for (const entry of pending) {
95
- items2.splice(Math.min(entry.index, items2.length), 0, entry.item);
96
- leaving2.add(entry.item.id);
203
+ const renderedTreeRef = useRef(expression.nodes);
204
+ const { rendered, items, leaving, rootGroupOf } = useMemo(() => {
205
+ const present = idsOf(expression.nodes);
206
+ let rendered2 = leavingIds.size === 0 ? expression : { ...expression, nodes: mergeNodes(renderedTreeRef.current, expression.nodes, leavingIds) };
207
+ if (lastCommit && !present.has(lastCommit.item.id)) {
208
+ rendered2 = insertItem(rendered2, lastCommit.groupId, lastCommit.item);
209
+ }
210
+ renderedTreeRef.current = rendered2.nodes;
211
+ const shown = idsOf(rendered2.nodes);
212
+ const leaving2 = new Set([...leavingIds].filter((id) => shown.has(id) && !present.has(id)));
213
+ const rootGroupOf2 = /* @__PURE__ */ new Map();
214
+ for (const node of rendered2.nodes) {
215
+ if (isFilterBarGroup(node))
216
+ for (const { item } of flattenItems({ nodes: [node] })) rootGroupOf2.set(item.id, node.id);
97
217
  }
98
- return { items: items2, leaving: leaving2 };
99
- }, [value, lastCommit, leavingItems]);
218
+ return { rendered: rendered2, items: flattenItems(rendered2).map((e) => e.item), leaving: leaving2, rootGroupOf: rootGroupOf2 };
219
+ }, [expression, lastCommit, leavingIds]);
100
220
  const newItemId = useCallback(
101
- (fieldId) => createItemId ? createItemId(fieldId) : createFilterId(),
102
- [createItemId]
221
+ (fieldId) => createItemId && inputTarget === void 0 ? createItemId(fieldId) : createFilterId(),
222
+ [createItemId, inputTarget]
103
223
  );
104
224
  const setDraft = useCallback(
105
225
  (next) => {
106
226
  setLastCommit(null);
107
227
  setDraftState(
108
- (prev) => next ? { ...next, id: prev?.fieldId === next.fieldId ? prev.id : newItemId(next.fieldId), from: stageOf(prev) } : null
228
+ (prev) => next ? {
229
+ ...next,
230
+ id: prev?.fieldId === next.fieldId ? prev.id : newItemId(next.fieldId),
231
+ from: stageOf(prev),
232
+ groupId: inputTarget
233
+ } : null
109
234
  );
110
235
  },
111
- [newItemId]
236
+ [newItemId, inputTarget]
112
237
  );
113
238
  const commitDraft = useCallback(
114
239
  ({ fieldId, operatorId }, value2) => {
115
240
  const id = draftRef.current?.id ?? newItemId(fieldId);
241
+ const groupId = draftRef.current?.groupId ?? inputTarget;
116
242
  const item = { id, fieldId, operatorId, value: value2 };
117
- onValueChange([...itemsRef.current, item]);
118
- setLastCommit({ item, from: stageOf(draftRef.current), glint: true });
243
+ emit(insertItem(exprRef.current, groupId, item));
244
+ setLastCommit({ item, from: stageOf(draftRef.current), glint: true, groupId });
119
245
  setDraftState(null);
120
246
  announce("Filter added");
121
247
  },
122
- [onValueChange, announce, newItemId]
248
+ [emit, announce, newItemId, inputTarget]
123
249
  );
124
- const updateItem = useCallback(
250
+ const updateItem$1 = useCallback(
125
251
  (id, patch) => {
126
- onValueChange(itemsRef.current.map((item) => item.id === id ? { ...item, ...patch } : item));
252
+ emit(updateItem(exprRef.current, id, patch));
127
253
  },
128
- [onValueChange]
254
+ [emit]
129
255
  );
130
256
  const removeItem = useCallback(
131
257
  (id) => {
132
- const index = itemsRef.current.findIndex((item2) => item2.id === id);
133
- const item = itemsRef.current[index];
134
- if (item) markLeaving([{ item, index }]);
135
- onValueChange(itemsRef.current.filter((item2) => item2.id !== id));
258
+ markLeaving([id]);
259
+ emit(removeNode(exprRef.current, id));
136
260
  setLastCommit(null);
137
261
  announce("Filter removed");
138
262
  },
139
- [onValueChange, announce, markLeaving]
263
+ [emit, announce, markLeaving]
264
+ );
265
+ const releaseInputTarget = useCallback((gone) => {
266
+ setInputTarget((prev) => prev && gone.has(prev) ? void 0 : prev);
267
+ }, []);
268
+ const removeGroup = useCallback(
269
+ (groupId) => {
270
+ const expr = exprRef.current;
271
+ const group = findGroup(expr, groupId);
272
+ const gone = new Set(group ? collectIds(group) : [groupId]);
273
+ markLeaving(gone);
274
+ emit(removeNode(expr, groupId));
275
+ setLastCommit(null);
276
+ setDraftState(null);
277
+ releaseInputTarget(gone);
278
+ setOpenGroupId((prev) => prev === groupId ? null : prev);
279
+ announce("Advanced filter removed");
280
+ },
281
+ [emit, announce, markLeaving, releaseInputTarget]
282
+ );
283
+ const addGroup = useCallback(
284
+ (parentId, logic) => {
285
+ const group = { id: createFilterId(), kind: "group", logic, nodes: [] };
286
+ emit(createGroup(exprRef.current, parentId, group));
287
+ setLastCommit(null);
288
+ setDraftState(null);
289
+ setInputTarget(group.id);
290
+ announce(parentId ? "Nested group added" : "Advanced filter added");
291
+ return group.id;
292
+ },
293
+ [emit, announce]
294
+ );
295
+ const setLogic = useCallback(
296
+ (groupId, logic) => {
297
+ emit(setGroupLogic(exprRef.current, groupId, logic));
298
+ announce(`Conditions joined with ${logic}`);
299
+ },
300
+ [emit, announce]
301
+ );
302
+ const getGroupDepth = useCallback((groupId) => groupDepth(exprRef.current, groupId), []);
303
+ const setOpenGroup = useCallback(
304
+ (groupId) => {
305
+ setOpenGroupId(groupId);
306
+ if (groupId !== null) return;
307
+ const expr = exprRef.current;
308
+ const pruned = pruneEmptyGroups(expr);
309
+ const kept = idsOf(pruned.nodes);
310
+ const gone = new Set([...idsOf(expr.nodes)].filter((id) => !kept.has(id)));
311
+ if (gone.size > 0) {
312
+ markLeaving(gone);
313
+ emit(pruned);
314
+ }
315
+ setDraftState(null);
316
+ setInputTarget(void 0);
317
+ },
318
+ [emit, markLeaving]
319
+ );
320
+ const focusInput = useCallback(() => {
321
+ inputRef.current?.focus();
322
+ }, []);
323
+ const openGroupInput = useCallback(
324
+ (groupId) => {
325
+ setInputTarget(groupId);
326
+ setDraftState(null);
327
+ if (groupId === void 0) focusInput();
328
+ },
329
+ [focusInput]
140
330
  );
141
331
  const clear = useCallback(() => {
142
- const removed = itemsRef.current.map((item, index) => ({ item, index })).filter(({ item }) => !nonRemovableIds.has(item.id));
143
- markLeaving(removed);
144
- onValueChange(itemsRef.current.filter((item) => nonRemovableIds.has(item.id)));
332
+ const expr = exprRef.current;
333
+ const next = clearRemovable(expr, nonRemovableIds);
334
+ const kept = idsOf(next.nodes);
335
+ const gone = new Set([...idsOf(expr.nodes)].filter((id) => !kept.has(id)));
336
+ markLeaving(gone);
337
+ emit(next);
338
+ setLastCommit(null);
339
+ setDraftState(null);
340
+ setInputTarget(void 0);
341
+ setOpenGroupId(null);
145
342
  announce("All filters removed");
146
- }, [onValueChange, announce, nonRemovableIds, markLeaving]);
147
- const hasRemovableItems = value.some((item) => !nonRemovableIds.has(item.id));
343
+ }, [emit, announce, nonRemovableIds, markLeaving]);
344
+ const hasRemovableItems = flattenItems(expression).some(({ item }) => !nonRemovableIds.has(item.id));
148
345
  const registerNonRemovable = useCallback((itemId, nonRemovable) => {
149
346
  setNonRemovableIds((prev) => {
150
347
  if (prev.has(itemId) === nonRemovable) return prev;
@@ -160,24 +357,31 @@ function FilterBarProvider({
160
357
  else segments.current.delete(key);
161
358
  }, []);
162
359
  const registerInput = useCallback((el) => {
163
- inputRef.current = el;
164
- }, []);
165
- const focusInput = useCallback(() => {
166
- inputRef.current?.focus();
360
+ if (el) inputRef.current = el;
361
+ else if (!inputRef.current?.isConnected) inputRef.current = null;
167
362
  }, []);
168
363
  const renderedRef = useRef(items);
169
364
  renderedRef.current = items;
365
+ const rootGroupRef = useRef(rootGroupOf);
366
+ rootGroupRef.current = rootGroupOf;
170
367
  const focusChip = useCallback((fromIndex, direction, segment) => {
171
368
  const items2 = renderedRef.current;
369
+ const rootGroupOf2 = rootGroupRef.current;
370
+ const origin = items2[fromIndex - direction];
371
+ const originEl = origin ? [...SEGMENTS_LEFT_TO_RIGHT].map((s) => segments.current.get(`${origin.id}:${s}`)).find(Boolean) : null;
372
+ const scope = scopeOf(typeof document === "undefined" ? null : document.activeElement) ?? scopeOf(originEl) ?? void 0;
172
373
  const fallbacks = direction === -1 ? SEGMENTS_RIGHT_TO_LEFT : SEGMENTS_LEFT_TO_RIGHT;
173
374
  for (let i = fromIndex; i >= 0 && i < items2.length; i += direction) {
174
375
  const item = items2[i];
175
376
  if (!item) break;
176
- for (const candidate of [segment, ...fallbacks]) {
177
- const el = segments.current.get(`${item.id}:${candidate}`);
178
- if (el) {
179
- el.focus();
180
- return true;
377
+ const ownerIds = [item.id, rootGroupOf2.get(item.id)].filter((id) => id !== void 0);
378
+ for (const ownerId of ownerIds) {
379
+ for (const candidate of [segment, ...fallbacks]) {
380
+ const el = segments.current.get(`${ownerId}:${candidate}`);
381
+ if (el && (scope === void 0 || scopeOf(el) === scope)) {
382
+ el.focus();
383
+ return true;
384
+ }
181
385
  }
182
386
  }
183
387
  }
@@ -195,18 +399,29 @@ function FilterBarProvider({
195
399
  fields,
196
400
  operators,
197
401
  items,
402
+ expression: rendered,
403
+ groupsEnabled: !flat,
404
+ maxDepth,
198
405
  draft,
199
406
  setDraft,
200
407
  commitDraft,
201
408
  lastCommit,
202
409
  settleCommit,
203
- updateItem,
410
+ updateItem: updateItem$1,
204
411
  removeItem,
205
412
  leaving,
206
413
  settleRemove,
207
414
  clear,
208
415
  hasRemovableItems,
209
416
  registerNonRemovable,
417
+ addGroup,
418
+ removeGroup,
419
+ setLogic,
420
+ getGroupDepth,
421
+ openGroupId,
422
+ setOpenGroup,
423
+ inputTarget,
424
+ openGroupInput,
210
425
  getField,
211
426
  getOperator,
212
427
  getFieldOperators,
@@ -223,18 +438,29 @@ function FilterBarProvider({
223
438
  fields,
224
439
  operators,
225
440
  items,
441
+ rendered,
442
+ flat,
443
+ maxDepth,
226
444
  draft,
227
445
  setDraft,
228
446
  commitDraft,
229
447
  lastCommit,
230
448
  settleCommit,
231
- updateItem,
449
+ updateItem$1,
232
450
  removeItem,
233
451
  leaving,
234
452
  settleRemove,
235
453
  clear,
236
454
  hasRemovableItems,
237
455
  registerNonRemovable,
456
+ addGroup,
457
+ removeGroup,
458
+ setLogic,
459
+ getGroupDepth,
460
+ openGroupId,
461
+ setOpenGroup,
462
+ inputTarget,
463
+ openGroupInput,
238
464
  getField,
239
465
  getOperator,
240
466
  getFieldOperators,
@@ -251,6 +477,12 @@ function FilterBarProvider({
251
477
  return /* @__PURE__ */ jsx(FilterBarContext.Provider, { value: ctx, children });
252
478
  }
253
479
 
480
+ function FilterBarOptionLabel({ option }) {
481
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
482
+ option.start,
483
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: option.label ?? option.value })
484
+ ] });
485
+ }
254
486
  const FluidItem = forwardRef((props, ref) => /* @__PURE__ */ jsx(Combobox.Item, { ref: useFluidMenuItemRef(ref), ...props }));
255
487
  FluidItem.displayName = "FilterBarOptionItem";
256
488
  function FilterBarOptionList({
@@ -320,12 +552,6 @@ function matchesQueryFilter(item, query, itemToString) {
320
552
  return matchesQuery(itemToString ? itemToString(item) : String(item), query);
321
553
  }
322
554
 
323
- const parseFieldValue = (type, text) => {
324
- if (type === "number") return Number(text);
325
- if (type === "boolean") return text.toLowerCase() === "true";
326
- return text;
327
- };
328
-
329
555
  const DEBOUNCE_MS = 150;
330
556
  const BOOLEAN_OPTIONS = [
331
557
  { value: "true", label: "True" },
@@ -881,7 +1107,7 @@ function ValueOptions({ step, onCancel }) {
881
1107
  "aria-label": "Values",
882
1108
  "aria-multiselectable": step.isMany || void 0,
883
1109
  getKey: (o) => o.value,
884
- renderOption: (o) => o.label ?? o.value,
1110
+ renderOption: (option) => /* @__PURE__ */ jsx(FilterBarOptionLabel, { option }),
885
1111
  isSelected: (o) => step.isMany ? step.selected.includes(o.value) : String(chip.item.value) === o.value,
886
1112
  isLoading: step.isLoading,
887
1113
  error: step.error,
@@ -980,5 +1206,5 @@ FilterBarChip.Operator = FilterBarChipOperator;
980
1206
  FilterBarChip.Value = FilterBarChipValue;
981
1207
  FilterBarChip.Remove = FilterBarChipRemove;
982
1208
 
983
- export { FilterBarChip as F, FilterBarFieldLabel as a, useValueStep as b, FILTER_BAR_CONTROL_SIZE as c, FilterBarOptionList as d, editableSegmentClass as e, fieldSegmentAccentStyle as f, FilterBarProvider as g, FilterBarChipField as h, FilterBarChipOperator as i, FilterBarChipRemove as j, FilterBarChipValue as k, matchesQueryFilter as m, segmentClass as s, useFilterBarContext as u };
984
- //# sourceMappingURL=filter-bar-chip-C-JxWUU8.js.map
1209
+ export { FilterBarChip as F, FilterBarFieldLabel as a, findGroup as b, useValueStep as c, FILTER_BAR_CONTROL_SIZE as d, editableSegmentClass as e, fieldSegmentAccentStyle as f, FilterBarOptionList as g, FilterBarOptionLabel as h, countLeaves as i, chipClass as j, FILTER_BAR_SCOPE_ATTR as k, FilterBarProvider as l, matchesQueryFilter as m, FilterBarChipField as n, FilterBarChipOperator as o, FilterBarChipRemove as p, FilterBarChipValue as q, segmentClass as s, useFilterBarContext as u };
1210
+ //# sourceMappingURL=filter-bar-chip-luoMVy8-.js.map