@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
@@ -3,9 +3,10 @@
3
3
  require('./filter-bar-chip.css');const jsxRuntime = require('react/jsx-runtime');
4
4
  const lucideReact = require('lucide-react');
5
5
  const React = require('react');
6
+ const types = require('./types-Ns4ZNp-g.cjs');
6
7
  const comboboxStyles = require('./combobox-styles-DYlNNjKC.cjs');
7
8
  const combobox = require('@base-ui/react/combobox');
8
- const spinner = require('./spinner-CqP-NaB2.cjs');
9
+ const spinner = require('./spinner-BCpN7LL9.cjs');
9
10
  const primitives_fluidMenu = require('./primitives/fluid-menu.cjs.js');
10
11
  const utils_cn = require('./cn-DG0X1KEP.cjs');
11
12
  const Button = require('./Button-CVewl8nT.cjs');
@@ -17,8 +18,92 @@ const primitives_menuItem = require('./primitives/menu-item.cjs.js');
17
18
  const primitives_portalContainer = require('./primitives/portal-container.cjs.js');
18
19
  const hooks_useKeyboardShortcutLabel = require('./hooks/use-keyboard-shortcut-label.cjs.js');
19
20
 
21
+ const ROOT_GROUP_ID = "root";
22
+ const normalize = (value) => Array.isArray(value) ? { logic: "and", nodes: value } : value;
23
+ const denormalize = (expr, flat) => flat ? expr.nodes.filter((node) => !types.isFilterBarGroup(node)) : expr;
24
+ const flattenItems = (expr) => {
25
+ const out = [];
26
+ const walk = (nodes, groupId) => {
27
+ for (const node of nodes) {
28
+ if (types.isFilterBarGroup(node)) walk(node.nodes, node.id);
29
+ else out.push(groupId ? { item: node, groupId } : { item: node });
30
+ }
31
+ };
32
+ walk(expr.nodes, void 0);
33
+ return out;
34
+ };
35
+ const findGroupIn = (nodes, groupId) => {
36
+ for (const node of nodes) {
37
+ if (!types.isFilterBarGroup(node)) continue;
38
+ if (node.id === groupId) return node;
39
+ const nested = findGroupIn(node.nodes, groupId);
40
+ if (nested) return nested;
41
+ }
42
+ return void 0;
43
+ };
44
+ const findGroup = (expr, groupId) => findGroupIn(expr.nodes, groupId);
45
+ const groupDepth = (expr, groupId) => {
46
+ const walk = (nodes, depth) => {
47
+ for (const node of nodes) {
48
+ if (!types.isFilterBarGroup(node)) continue;
49
+ if (node.id === groupId) return depth;
50
+ const nested = walk(node.nodes, depth + 1);
51
+ if (nested) return nested;
52
+ }
53
+ return 0;
54
+ };
55
+ return walk(expr.nodes, 1);
56
+ };
57
+ const countLeaves = (group) => group.nodes.reduce((sum, node) => sum + (types.isFilterBarGroup(node) ? countLeaves(node) : 1), 0);
58
+ const collectIds = (group) => [
59
+ group.id,
60
+ ...group.nodes.flatMap((node) => types.isFilterBarGroup(node) ? collectIds(node) : [node.id])
61
+ ];
62
+ const mapGroup = (nodes, groupId, fn) => nodes.map((node) => {
63
+ if (!types.isFilterBarGroup(node)) return node;
64
+ return node.id === groupId ? fn(node) : { ...node, nodes: mapGroup(node.nodes, groupId, fn) };
65
+ });
66
+ const mapItems = (nodes, fn) => nodes.map((node) => types.isFilterBarGroup(node) ? { ...node, nodes: mapItems(node.nodes, fn) } : fn(node));
67
+ const filterNodes = (nodes, keep) => nodes.filter(keep).map((node) => types.isFilterBarGroup(node) ? { ...node, nodes: filterNodes(node.nodes, keep) } : node);
68
+ const updateItem = (expr, itemId, patch) => ({
69
+ ...expr,
70
+ nodes: mapItems(expr.nodes, (item) => item.id === itemId ? { ...item, ...patch } : item)
71
+ });
72
+ const removeNode = (expr, id) => ({
73
+ ...expr,
74
+ nodes: filterNodes(expr.nodes, (node) => node.id !== id)
75
+ });
76
+ const pruneNodes = (nodes) => nodes.flatMap((node) => {
77
+ if (!types.isFilterBarGroup(node)) return [node];
78
+ const pruned = pruneNodes(node.nodes);
79
+ return pruned.length === 0 ? [] : [{ ...node, nodes: pruned }];
80
+ });
81
+ const pruneEmptyGroups = (expr) => ({
82
+ ...expr,
83
+ nodes: pruneNodes(expr.nodes)
84
+ });
85
+ const insertItem = (expr, groupId, item) => {
86
+ if (!groupId || groupId === ROOT_GROUP_ID) return { ...expr, nodes: [...expr.nodes, item] };
87
+ return { ...expr, nodes: mapGroup(expr.nodes, groupId, (group) => ({ ...group, nodes: [...group.nodes, item] })) };
88
+ };
89
+ const setGroupLogic = (expr, groupId, logic) => {
90
+ if (groupId === ROOT_GROUP_ID) return { ...expr, logic };
91
+ return { ...expr, nodes: mapGroup(expr.nodes, groupId, (group) => ({ ...group, logic })) };
92
+ };
93
+ const createGroup = (expr, parentId, group) => {
94
+ if (!parentId || parentId === ROOT_GROUP_ID) return { ...expr, nodes: [...expr.nodes, group] };
95
+ return { ...expr, nodes: mapGroup(expr.nodes, parentId, (parent) => ({ ...parent, nodes: [...parent.nodes, group] })) };
96
+ };
97
+ const clearRemovable = (expr, pinned) => pruneEmptyGroups({
98
+ ...expr,
99
+ nodes: filterNodes(expr.nodes, (node) => types.isFilterBarGroup(node) || pinned.has(node.id))
100
+ });
101
+
20
102
  const SEGMENTS_LEFT_TO_RIGHT = ["field", "operator", "value", "remove"];
21
103
  const SEGMENTS_RIGHT_TO_LEFT = [...SEGMENTS_LEFT_TO_RIGHT].reverse();
104
+ const DEFAULT_MAX_GROUP_DEPTH = 3;
105
+ const FILTER_BAR_SCOPE_ATTR = "data-filter-bar-scope";
106
+ const scopeOf = (el) => el?.closest(`[${FILTER_BAR_SCOPE_ATTR}]`) ?? null;
22
107
  const stageOf = (draft) => {
23
108
  if (!draft) return "none";
24
109
  return draft.operatorId ? "operator" : "field";
@@ -38,21 +123,55 @@ function createFilterId() {
38
123
  function emptyValueFor(operator) {
39
124
  return operator?.arity === "many" ? [] : "";
40
125
  }
126
+ const idsOf = (nodes, out = /* @__PURE__ */ new Set()) => {
127
+ for (const node of nodes) {
128
+ out.add(node.id);
129
+ if (types.isFilterBarGroup(node)) idsOf(node.nodes, out);
130
+ }
131
+ return out;
132
+ };
133
+ const mergeNodes = (prev, next, leaving) => {
134
+ const nextById = new Map(next.map((node) => [node.id, node]));
135
+ const seen = /* @__PURE__ */ new Set();
136
+ const out = [];
137
+ for (const old of prev) {
138
+ const fresh = nextById.get(old.id);
139
+ if (fresh) {
140
+ seen.add(old.id);
141
+ out.push(
142
+ types.isFilterBarGroup(fresh) && types.isFilterBarGroup(old) ? { ...fresh, nodes: mergeNodes(old.nodes, fresh.nodes, leaving) } : fresh
143
+ );
144
+ } else if (leaving.has(old.id)) {
145
+ out.push(old);
146
+ }
147
+ }
148
+ for (const node of next) if (!seen.has(node.id)) out.push(node);
149
+ return out;
150
+ };
41
151
  function FilterBarProvider({
42
152
  fields,
43
153
  operators,
44
154
  value,
45
155
  onValueChange,
46
156
  createItemId,
157
+ maxDepth = DEFAULT_MAX_GROUP_DEPTH,
47
158
  ariaLabel,
48
159
  children
49
160
  }) {
50
161
  const segments = React.useRef(/* @__PURE__ */ new Map());
51
162
  const inputRef = React.useRef(null);
52
- const itemsRef = React.useRef(value);
53
- itemsRef.current = value;
163
+ const flat = Array.isArray(value);
164
+ const expression = React.useMemo(() => normalize(value), [value]);
165
+ const exprRef = React.useRef(expression);
166
+ exprRef.current = expression;
54
167
  const [announcement, setAnnouncement] = React.useState("");
55
168
  const [nonRemovableIds, setNonRemovableIds] = React.useState(() => /* @__PURE__ */ new Set());
169
+ const [inputTarget, setInputTarget] = React.useState(void 0);
170
+ const [openGroupId, setOpenGroupId] = React.useState(null);
171
+ const emit = React.useCallback(
172
+ (next) => onValueChange(denormalize(next, flat)),
173
+ [onValueChange, flat]
174
+ );
56
175
  const getField = React.useCallback((fieldId) => fields.find((f) => f.id === fieldId), [fields]);
57
176
  const getOperator = React.useCallback((operatorId) => operators.find((o) => o.id === operatorId), [operators]);
58
177
  const getFieldOperators = React.useCallback(
@@ -69,84 +188,162 @@ function FilterBarProvider({
69
188
  draftRef.current = draft;
70
189
  const [lastCommit, setLastCommit] = React.useState(null);
71
190
  const settleCommit = React.useCallback(() => setLastCommit((prev) => prev ? { ...prev, glint: false } : null), []);
72
- const [leavingItems, setLeavingItems] = React.useState(
73
- () => /* @__PURE__ */ new Map()
74
- );
191
+ const [leavingIds, setLeavingIds] = React.useState(() => /* @__PURE__ */ new Set());
75
192
  const settleRemove = React.useCallback((id) => {
76
- setLeavingItems((prev) => {
193
+ setLeavingIds((prev) => {
77
194
  if (!prev.has(id)) return prev;
78
- const next = new Map(prev);
195
+ const next = new Set(prev);
79
196
  next.delete(id);
80
197
  return next;
81
198
  });
82
199
  }, []);
83
- const markLeaving = React.useCallback((removed) => {
84
- if (removed.length === 0) return;
85
- setLeavingItems((prev) => {
86
- const next = new Map(prev);
87
- for (const entry of removed) next.set(entry.item.id, entry);
88
- return next;
89
- });
200
+ const markLeaving = React.useCallback((ids) => {
201
+ const list = [...ids];
202
+ if (list.length === 0) return;
203
+ setLeavingIds((prev) => /* @__PURE__ */ new Set([...prev, ...list]));
90
204
  }, []);
91
- const { items, leaving } = React.useMemo(() => {
92
- const present = new Set(value.map((item) => item.id));
93
- const items2 = lastCommit && !present.has(lastCommit.item.id) ? [...value, lastCommit.item] : [...value];
94
- const leaving2 = /* @__PURE__ */ new Set();
95
- const pending = [...leavingItems.values()].filter((entry) => !present.has(entry.item.id)).sort((a, b) => a.index - b.index);
96
- for (const entry of pending) {
97
- items2.splice(Math.min(entry.index, items2.length), 0, entry.item);
98
- leaving2.add(entry.item.id);
205
+ const renderedTreeRef = React.useRef(expression.nodes);
206
+ const { rendered, items, leaving, rootGroupOf } = React.useMemo(() => {
207
+ const present = idsOf(expression.nodes);
208
+ let rendered2 = leavingIds.size === 0 ? expression : { ...expression, nodes: mergeNodes(renderedTreeRef.current, expression.nodes, leavingIds) };
209
+ if (lastCommit && !present.has(lastCommit.item.id)) {
210
+ rendered2 = insertItem(rendered2, lastCommit.groupId, lastCommit.item);
211
+ }
212
+ renderedTreeRef.current = rendered2.nodes;
213
+ const shown = idsOf(rendered2.nodes);
214
+ const leaving2 = new Set([...leavingIds].filter((id) => shown.has(id) && !present.has(id)));
215
+ const rootGroupOf2 = /* @__PURE__ */ new Map();
216
+ for (const node of rendered2.nodes) {
217
+ if (types.isFilterBarGroup(node))
218
+ for (const { item } of flattenItems({ nodes: [node] })) rootGroupOf2.set(item.id, node.id);
99
219
  }
100
- return { items: items2, leaving: leaving2 };
101
- }, [value, lastCommit, leavingItems]);
220
+ return { rendered: rendered2, items: flattenItems(rendered2).map((e) => e.item), leaving: leaving2, rootGroupOf: rootGroupOf2 };
221
+ }, [expression, lastCommit, leavingIds]);
102
222
  const newItemId = React.useCallback(
103
- (fieldId) => createItemId ? createItemId(fieldId) : createFilterId(),
104
- [createItemId]
223
+ (fieldId) => createItemId && inputTarget === void 0 ? createItemId(fieldId) : createFilterId(),
224
+ [createItemId, inputTarget]
105
225
  );
106
226
  const setDraft = React.useCallback(
107
227
  (next) => {
108
228
  setLastCommit(null);
109
229
  setDraftState(
110
- (prev) => next ? { ...next, id: prev?.fieldId === next.fieldId ? prev.id : newItemId(next.fieldId), from: stageOf(prev) } : null
230
+ (prev) => next ? {
231
+ ...next,
232
+ id: prev?.fieldId === next.fieldId ? prev.id : newItemId(next.fieldId),
233
+ from: stageOf(prev),
234
+ groupId: inputTarget
235
+ } : null
111
236
  );
112
237
  },
113
- [newItemId]
238
+ [newItemId, inputTarget]
114
239
  );
115
240
  const commitDraft = React.useCallback(
116
241
  ({ fieldId, operatorId }, value2) => {
117
242
  const id = draftRef.current?.id ?? newItemId(fieldId);
243
+ const groupId = draftRef.current?.groupId ?? inputTarget;
118
244
  const item = { id, fieldId, operatorId, value: value2 };
119
- onValueChange([...itemsRef.current, item]);
120
- setLastCommit({ item, from: stageOf(draftRef.current), glint: true });
245
+ emit(insertItem(exprRef.current, groupId, item));
246
+ setLastCommit({ item, from: stageOf(draftRef.current), glint: true, groupId });
121
247
  setDraftState(null);
122
248
  announce("Filter added");
123
249
  },
124
- [onValueChange, announce, newItemId]
250
+ [emit, announce, newItemId, inputTarget]
125
251
  );
126
- const updateItem = React.useCallback(
252
+ const updateItem$1 = React.useCallback(
127
253
  (id, patch) => {
128
- onValueChange(itemsRef.current.map((item) => item.id === id ? { ...item, ...patch } : item));
254
+ emit(updateItem(exprRef.current, id, patch));
129
255
  },
130
- [onValueChange]
256
+ [emit]
131
257
  );
132
258
  const removeItem = React.useCallback(
133
259
  (id) => {
134
- const index = itemsRef.current.findIndex((item2) => item2.id === id);
135
- const item = itemsRef.current[index];
136
- if (item) markLeaving([{ item, index }]);
137
- onValueChange(itemsRef.current.filter((item2) => item2.id !== id));
260
+ markLeaving([id]);
261
+ emit(removeNode(exprRef.current, id));
138
262
  setLastCommit(null);
139
263
  announce("Filter removed");
140
264
  },
141
- [onValueChange, announce, markLeaving]
265
+ [emit, announce, markLeaving]
266
+ );
267
+ const releaseInputTarget = React.useCallback((gone) => {
268
+ setInputTarget((prev) => prev && gone.has(prev) ? void 0 : prev);
269
+ }, []);
270
+ const removeGroup = React.useCallback(
271
+ (groupId) => {
272
+ const expr = exprRef.current;
273
+ const group = findGroup(expr, groupId);
274
+ const gone = new Set(group ? collectIds(group) : [groupId]);
275
+ markLeaving(gone);
276
+ emit(removeNode(expr, groupId));
277
+ setLastCommit(null);
278
+ setDraftState(null);
279
+ releaseInputTarget(gone);
280
+ setOpenGroupId((prev) => prev === groupId ? null : prev);
281
+ announce("Advanced filter removed");
282
+ },
283
+ [emit, announce, markLeaving, releaseInputTarget]
284
+ );
285
+ const addGroup = React.useCallback(
286
+ (parentId, logic) => {
287
+ const group = { id: createFilterId(), kind: "group", logic, nodes: [] };
288
+ emit(createGroup(exprRef.current, parentId, group));
289
+ setLastCommit(null);
290
+ setDraftState(null);
291
+ setInputTarget(group.id);
292
+ announce(parentId ? "Nested group added" : "Advanced filter added");
293
+ return group.id;
294
+ },
295
+ [emit, announce]
296
+ );
297
+ const setLogic = React.useCallback(
298
+ (groupId, logic) => {
299
+ emit(setGroupLogic(exprRef.current, groupId, logic));
300
+ announce(`Conditions joined with ${logic}`);
301
+ },
302
+ [emit, announce]
303
+ );
304
+ const getGroupDepth = React.useCallback((groupId) => groupDepth(exprRef.current, groupId), []);
305
+ const setOpenGroup = React.useCallback(
306
+ (groupId) => {
307
+ setOpenGroupId(groupId);
308
+ if (groupId !== null) return;
309
+ const expr = exprRef.current;
310
+ const pruned = pruneEmptyGroups(expr);
311
+ const kept = idsOf(pruned.nodes);
312
+ const gone = new Set([...idsOf(expr.nodes)].filter((id) => !kept.has(id)));
313
+ if (gone.size > 0) {
314
+ markLeaving(gone);
315
+ emit(pruned);
316
+ }
317
+ setDraftState(null);
318
+ setInputTarget(void 0);
319
+ },
320
+ [emit, markLeaving]
321
+ );
322
+ const focusInput = React.useCallback(() => {
323
+ inputRef.current?.focus();
324
+ }, []);
325
+ const openGroupInput = React.useCallback(
326
+ (groupId) => {
327
+ setInputTarget(groupId);
328
+ setDraftState(null);
329
+ if (groupId === void 0) focusInput();
330
+ },
331
+ [focusInput]
142
332
  );
143
333
  const clear = React.useCallback(() => {
144
- const removed = itemsRef.current.map((item, index) => ({ item, index })).filter(({ item }) => !nonRemovableIds.has(item.id));
145
- markLeaving(removed);
146
- onValueChange(itemsRef.current.filter((item) => nonRemovableIds.has(item.id)));
334
+ const expr = exprRef.current;
335
+ const next = clearRemovable(expr, nonRemovableIds);
336
+ const kept = idsOf(next.nodes);
337
+ const gone = new Set([...idsOf(expr.nodes)].filter((id) => !kept.has(id)));
338
+ markLeaving(gone);
339
+ emit(next);
340
+ setLastCommit(null);
341
+ setDraftState(null);
342
+ setInputTarget(void 0);
343
+ setOpenGroupId(null);
147
344
  announce("All filters removed");
148
- }, [onValueChange, announce, nonRemovableIds, markLeaving]);
149
- const hasRemovableItems = value.some((item) => !nonRemovableIds.has(item.id));
345
+ }, [emit, announce, nonRemovableIds, markLeaving]);
346
+ const hasRemovableItems = flattenItems(expression).some(({ item }) => !nonRemovableIds.has(item.id));
150
347
  const registerNonRemovable = React.useCallback((itemId, nonRemovable) => {
151
348
  setNonRemovableIds((prev) => {
152
349
  if (prev.has(itemId) === nonRemovable) return prev;
@@ -162,24 +359,31 @@ function FilterBarProvider({
162
359
  else segments.current.delete(key);
163
360
  }, []);
164
361
  const registerInput = React.useCallback((el) => {
165
- inputRef.current = el;
166
- }, []);
167
- const focusInput = React.useCallback(() => {
168
- inputRef.current?.focus();
362
+ if (el) inputRef.current = el;
363
+ else if (!inputRef.current?.isConnected) inputRef.current = null;
169
364
  }, []);
170
365
  const renderedRef = React.useRef(items);
171
366
  renderedRef.current = items;
367
+ const rootGroupRef = React.useRef(rootGroupOf);
368
+ rootGroupRef.current = rootGroupOf;
172
369
  const focusChip = React.useCallback((fromIndex, direction, segment) => {
173
370
  const items2 = renderedRef.current;
371
+ const rootGroupOf2 = rootGroupRef.current;
372
+ const origin = items2[fromIndex - direction];
373
+ const originEl = origin ? [...SEGMENTS_LEFT_TO_RIGHT].map((s) => segments.current.get(`${origin.id}:${s}`)).find(Boolean) : null;
374
+ const scope = scopeOf(typeof document === "undefined" ? null : document.activeElement) ?? scopeOf(originEl) ?? void 0;
174
375
  const fallbacks = direction === -1 ? SEGMENTS_RIGHT_TO_LEFT : SEGMENTS_LEFT_TO_RIGHT;
175
376
  for (let i = fromIndex; i >= 0 && i < items2.length; i += direction) {
176
377
  const item = items2[i];
177
378
  if (!item) break;
178
- for (const candidate of [segment, ...fallbacks]) {
179
- const el = segments.current.get(`${item.id}:${candidate}`);
180
- if (el) {
181
- el.focus();
182
- return true;
379
+ const ownerIds = [item.id, rootGroupOf2.get(item.id)].filter((id) => id !== void 0);
380
+ for (const ownerId of ownerIds) {
381
+ for (const candidate of [segment, ...fallbacks]) {
382
+ const el = segments.current.get(`${ownerId}:${candidate}`);
383
+ if (el && (scope === void 0 || scopeOf(el) === scope)) {
384
+ el.focus();
385
+ return true;
386
+ }
183
387
  }
184
388
  }
185
389
  }
@@ -197,18 +401,29 @@ function FilterBarProvider({
197
401
  fields,
198
402
  operators,
199
403
  items,
404
+ expression: rendered,
405
+ groupsEnabled: !flat,
406
+ maxDepth,
200
407
  draft,
201
408
  setDraft,
202
409
  commitDraft,
203
410
  lastCommit,
204
411
  settleCommit,
205
- updateItem,
412
+ updateItem: updateItem$1,
206
413
  removeItem,
207
414
  leaving,
208
415
  settleRemove,
209
416
  clear,
210
417
  hasRemovableItems,
211
418
  registerNonRemovable,
419
+ addGroup,
420
+ removeGroup,
421
+ setLogic,
422
+ getGroupDepth,
423
+ openGroupId,
424
+ setOpenGroup,
425
+ inputTarget,
426
+ openGroupInput,
212
427
  getField,
213
428
  getOperator,
214
429
  getFieldOperators,
@@ -225,18 +440,29 @@ function FilterBarProvider({
225
440
  fields,
226
441
  operators,
227
442
  items,
443
+ rendered,
444
+ flat,
445
+ maxDepth,
228
446
  draft,
229
447
  setDraft,
230
448
  commitDraft,
231
449
  lastCommit,
232
450
  settleCommit,
233
- updateItem,
451
+ updateItem$1,
234
452
  removeItem,
235
453
  leaving,
236
454
  settleRemove,
237
455
  clear,
238
456
  hasRemovableItems,
239
457
  registerNonRemovable,
458
+ addGroup,
459
+ removeGroup,
460
+ setLogic,
461
+ getGroupDepth,
462
+ openGroupId,
463
+ setOpenGroup,
464
+ inputTarget,
465
+ openGroupInput,
240
466
  getField,
241
467
  getOperator,
242
468
  getFieldOperators,
@@ -253,6 +479,12 @@ function FilterBarProvider({
253
479
  return /* @__PURE__ */ jsxRuntime.jsx(FilterBarContext.Provider, { value: ctx, children });
254
480
  }
255
481
 
482
+ function FilterBarOptionLabel({ option }) {
483
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
484
+ option.start,
485
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children: option.label ?? option.value })
486
+ ] });
487
+ }
256
488
  const FluidItem = React.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(combobox.Combobox.Item, { ref: primitives_fluidMenu.useFluidMenuItemRef(ref), ...props }));
257
489
  FluidItem.displayName = "FilterBarOptionItem";
258
490
  function FilterBarOptionList({
@@ -322,12 +554,6 @@ function matchesQueryFilter(item, query, itemToString) {
322
554
  return matchesQuery(itemToString ? itemToString(item) : String(item), query);
323
555
  }
324
556
 
325
- const parseFieldValue = (type, text) => {
326
- if (type === "number") return Number(text);
327
- if (type === "boolean") return text.toLowerCase() === "true";
328
- return text;
329
- };
330
-
331
557
  const DEBOUNCE_MS = 150;
332
558
  const BOOLEAN_OPTIONS = [
333
559
  { value: "true", label: "True" },
@@ -405,7 +631,7 @@ function useValueStep({ field, operator, query, enabled, initialValue, onCommit
405
631
  setSelected((current) => current.includes(value) ? current.filter((v) => v !== value) : [...current, value]);
406
632
  }, []);
407
633
  const commit = React.useCallback(
408
- (values) => onCommit(Array.isArray(values) ? values.map((v) => parseFieldValue(type, v)) : parseFieldValue(type, values)),
634
+ (values) => onCommit(Array.isArray(values) ? values.map((v) => types.parseFieldValue(type, v)) : types.parseFieldValue(type, values)),
409
635
  [onCommit, type]
410
636
  );
411
637
  const handleSelect = React.useCallback(
@@ -883,7 +1109,7 @@ function ValueOptions({ step, onCancel }) {
883
1109
  "aria-label": "Values",
884
1110
  "aria-multiselectable": step.isMany || void 0,
885
1111
  getKey: (o) => o.value,
886
- renderOption: (o) => o.label ?? o.value,
1112
+ renderOption: (option) => /* @__PURE__ */ jsxRuntime.jsx(FilterBarOptionLabel, { option }),
887
1113
  isSelected: (o) => step.isMany ? step.selected.includes(o.value) : String(chip.item.value) === o.value,
888
1114
  isLoading: step.isLoading,
889
1115
  error: step.error,
@@ -983,18 +1209,23 @@ FilterBarChip.Value = FilterBarChipValue;
983
1209
  FilterBarChip.Remove = FilterBarChipRemove;
984
1210
 
985
1211
  exports.FILTER_BAR_CONTROL_SIZE = FILTER_BAR_CONTROL_SIZE;
1212
+ exports.FILTER_BAR_SCOPE_ATTR = FILTER_BAR_SCOPE_ATTR;
986
1213
  exports.FilterBarChip = FilterBarChip;
987
1214
  exports.FilterBarChipField = FilterBarChipField;
988
1215
  exports.FilterBarChipOperator = FilterBarChipOperator;
989
1216
  exports.FilterBarChipRemove = FilterBarChipRemove;
990
1217
  exports.FilterBarChipValue = FilterBarChipValue;
991
1218
  exports.FilterBarFieldLabel = FilterBarFieldLabel;
1219
+ exports.FilterBarOptionLabel = FilterBarOptionLabel;
992
1220
  exports.FilterBarOptionList = FilterBarOptionList;
993
1221
  exports.FilterBarProvider = FilterBarProvider;
1222
+ exports.chipClass = chipClass;
1223
+ exports.countLeaves = countLeaves;
994
1224
  exports.editableSegmentClass = editableSegmentClass;
995
1225
  exports.fieldSegmentAccentStyle = fieldSegmentAccentStyle;
1226
+ exports.findGroup = findGroup;
996
1227
  exports.matchesQueryFilter = matchesQueryFilter;
997
1228
  exports.segmentClass = segmentClass;
998
1229
  exports.useFilterBarContext = useFilterBarContext;
999
1230
  exports.useValueStep = useValueStep;
1000
- //# sourceMappingURL=filter-bar-chip-BxI0NgEz.cjs.map
1231
+ //# sourceMappingURL=filter-bar-chip-D-IRgccJ.cjs.map