@mastra/playground-ui 65.0.0-alpha.2 → 65.0.0-alpha.4

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 (883) hide show
  1. package/README.md +10 -0
  2. package/components.css +7 -0
  3. package/dist/{Avatar-98bsFrSV.js → Avatar-BjaG9NU_.js} +10 -8
  4. package/dist/Avatar-BjaG9NU_.js.map +1 -0
  5. package/dist/{Avatar-BCj8SvOb.cjs → Avatar-DM90rmwx.cjs} +10 -8
  6. package/dist/Avatar-DM90rmwx.cjs.map +1 -0
  7. package/dist/{Button-DH1aTzbs.cjs → Button-C4I05uT4.cjs} +17 -10
  8. package/dist/Button-C4I05uT4.cjs.map +1 -0
  9. package/dist/{Button-EGoajBQY.js → Button-D8a5EWJ5.js} +18 -11
  10. package/dist/Button-D8a5EWJ5.js.map +1 -0
  11. package/dist/{ErrorBoundary-DQPzT6am.js → ErrorBoundary-C6JifxpQ.js} +2 -2
  12. package/dist/{ErrorBoundary-DQPzT6am.js.map → ErrorBoundary-C6JifxpQ.js.map} +1 -1
  13. package/dist/{ErrorBoundary-CpUob9SO.cjs → ErrorBoundary-DP1JqmTo.cjs} +2 -2
  14. package/dist/{ErrorBoundary-CpUob9SO.cjs.map → ErrorBoundary-DP1JqmTo.cjs.map} +1 -1
  15. package/dist/Notice-BioYTS4b.js.map +1 -1
  16. package/dist/Notice-DYgIy4FO.cjs.map +1 -1
  17. package/dist/{activity-CsTUr5_l.js → activity-B7c_nQMn.js} +2 -2
  18. package/dist/activity-B7c_nQMn.js.map +1 -0
  19. package/dist/{activity-2tovEdIP.cjs → activity-D3iI9pYN.cjs} +2 -2
  20. package/dist/activity-D3iI9pYN.cjs.map +1 -0
  21. package/dist/{alert-dialog-B7JTnkF4.js → alert-dialog-B13NSeKN.js} +3 -3
  22. package/dist/{alert-dialog-B7JTnkF4.js.map → alert-dialog-B13NSeKN.js.map} +1 -1
  23. package/dist/{alert-dialog-B1gWLQm2.cjs → alert-dialog-DY2JJAnk.cjs} +3 -3
  24. package/dist/{alert-dialog-B1gWLQm2.cjs.map → alert-dialog-DY2JJAnk.cjs.map} +1 -1
  25. package/dist/arrival-C1hkyLHm.js.map +1 -1
  26. package/dist/arrival-Cvxloi0B.cjs.map +1 -1
  27. package/dist/{ask-user-card-DroerVbm.cjs → ask-user-card-DiFQcUzM.cjs} +2 -2
  28. package/dist/ask-user-card-DiFQcUzM.cjs.map +1 -0
  29. package/dist/{ask-user-card-BCjsjimu.js → ask-user-card-DnvW7jXS.js} +2 -2
  30. package/dist/{ask-user-card-BCjsjimu.js.map → ask-user-card-DnvW7jXS.js.map} +1 -1
  31. package/dist/{avatar-size-CNR0U-LW.js → avatar-size-BXzy28Bx.js} +4 -1
  32. package/dist/avatar-size-BXzy28Bx.js.map +1 -0
  33. package/dist/{avatar-size-DxStOo5A.cjs → avatar-size-DIFE4I8A.cjs} +4 -1
  34. package/dist/avatar-size-DIFE4I8A.cjs.map +1 -0
  35. package/dist/buttons-group.css +0 -4
  36. package/dist/code-DJReJPSX.cjs.map +1 -1
  37. package/dist/code-DLuATvYu.js.map +1 -1
  38. package/dist/{code-block-vpcX2sDQ.cjs → code-block-C79fiykv.cjs} +4 -4
  39. package/dist/{code-block-vpcX2sDQ.cjs.map → code-block-C79fiykv.cjs.map} +1 -1
  40. package/dist/{code-block-DIDa6lg6.js → code-block-D6A1DMv-.js} +4 -4
  41. package/dist/{code-block-DIDa6lg6.js.map → code-block-D6A1DMv-.js.map} +1 -1
  42. package/dist/{code-editor-BDxYMkGm.js → code-editor-8Fpinga4.js} +2 -2
  43. package/dist/{code-editor-BDxYMkGm.js.map → code-editor-8Fpinga4.js.map} +1 -1
  44. package/dist/{code-editor-DQuJ1XXd.cjs → code-editor-Bd-Cldem.cjs} +2 -2
  45. package/dist/{code-editor-DQuJ1XXd.cjs.map → code-editor-Bd-Cldem.cjs.map} +1 -1
  46. package/dist/{collapsible-box-B9ATVQzW.cjs → collapsible-box-CzU0OwJx.cjs} +2 -2
  47. package/dist/{collapsible-box-B9ATVQzW.cjs.map → collapsible-box-CzU0OwJx.cjs.map} +1 -1
  48. package/dist/{collapsible-box-CMBYunuM.js → collapsible-box-DotFa3hr.js} +2 -2
  49. package/dist/{collapsible-box-CMBYunuM.js.map → collapsible-box-DotFa3hr.js.map} +1 -1
  50. package/dist/{combobox-Bw13EcK0.js → combobox-BCoCVZHs.js} +7 -5
  51. package/dist/combobox-BCoCVZHs.js.map +1 -0
  52. package/dist/{combobox-BNlVCFgY.cjs → combobox-DbZAWh8q.cjs} +7 -5
  53. package/dist/combobox-DbZAWh8q.cjs.map +1 -0
  54. package/dist/{combobox-styles-Dr66ofEp.js → combobox-styles-Cens2tsx.js} +2 -2
  55. package/dist/{combobox-styles-Dr66ofEp.js.map → combobox-styles-Cens2tsx.js.map} +1 -1
  56. package/dist/{combobox-styles-BK2nGTNl.cjs → combobox-styles-Cy4rpw03.cjs} +2 -2
  57. package/dist/{combobox-styles-BK2nGTNl.cjs.map → combobox-styles-Cy4rpw03.cjs.map} +1 -1
  58. package/dist/{command-UEPxVJlE.cjs → command-Duh5C_Pm.cjs} +2 -2
  59. package/dist/command-Duh5C_Pm.cjs.map +1 -0
  60. package/dist/{command-V9rsKc7P.js → command-xIH7ZTdl.js} +2 -2
  61. package/dist/command-xIH7ZTdl.js.map +1 -0
  62. package/dist/components/AlertDialog.cjs.js +1 -1
  63. package/dist/components/AlertDialog.es.js +1 -1
  64. package/dist/components/Avatar.cjs.js +1 -1
  65. package/dist/components/Avatar.es.js +1 -1
  66. package/dist/components/Breadcrumb.cjs.js +7 -4
  67. package/dist/components/Breadcrumb.cjs.js.map +1 -1
  68. package/dist/components/Breadcrumb.es.js +7 -4
  69. package/dist/components/Breadcrumb.es.js.map +1 -1
  70. package/dist/components/Button.cjs.js +1 -1
  71. package/dist/components/Button.es.js +2 -2
  72. package/dist/components/ClampedText.cjs.js +2 -2
  73. package/dist/components/ClampedText.cjs.js.map +1 -1
  74. package/dist/components/ClampedText.es.js +2 -2
  75. package/dist/components/ClampedText.es.js.map +1 -1
  76. package/dist/components/CodeBlock.cjs.js +1 -1
  77. package/dist/components/CodeBlock.es.js +1 -1
  78. package/dist/components/CodeEditor.cjs.js +1 -1
  79. package/dist/components/CodeEditor.es.js +1 -1
  80. package/dist/components/CollapsibleBox.cjs.js +1 -1
  81. package/dist/components/CollapsibleBox.es.js +1 -1
  82. package/dist/components/Combobox.cjs.js +2 -2
  83. package/dist/components/Combobox.es.js +2 -2
  84. package/dist/components/Command.cjs.js +1 -1
  85. package/dist/components/Command.es.js +1 -1
  86. package/dist/components/CommandPalette.cjs.js +1 -1
  87. package/dist/components/CommandPalette.es.js +1 -1
  88. package/dist/components/Comment.cjs.js +2 -2
  89. package/dist/components/Comment.es.js +2 -2
  90. package/dist/components/CopyButton.cjs.js +1 -1
  91. package/dist/components/CopyButton.es.js +1 -1
  92. package/dist/components/DataCodeSection.cjs.js +1 -1
  93. package/dist/components/DataCodeSection.es.js +1 -1
  94. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  95. package/dist/components/DataDetailsPanel.es.js +2 -2
  96. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  97. package/dist/components/DataKeysAndValues.es.js +1 -1
  98. package/dist/components/DataList.cjs.js +15 -17
  99. package/dist/components/DataList.cjs.js.map +1 -1
  100. package/dist/components/DataList.es.js +4 -5
  101. package/dist/components/DataList.es.js.map +1 -1
  102. package/dist/components/DataPanel.cjs.js +1 -1
  103. package/dist/components/DataPanel.es.js +1 -1
  104. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  105. package/dist/components/DateRangeTimeline.es.js +1 -1
  106. package/dist/components/DateTimePicker.cjs.js +2 -2
  107. package/dist/components/DateTimePicker.es.js +2 -2
  108. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  109. package/dist/components/DateTimeRangePicker.es.js +1 -1
  110. package/dist/components/Dialog.cjs.js +2 -2
  111. package/dist/components/Dialog.es.js +2 -2
  112. package/dist/components/DisabledFeatureButton.cjs.js +1 -1
  113. package/dist/components/DisabledFeatureButton.es.js +1 -1
  114. package/dist/components/Drawer.cjs.js +1 -1
  115. package/dist/components/Drawer.es.js +1 -1
  116. package/dist/components/EnvironmentVariablesEditor.cjs.js +3 -3
  117. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  118. package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
  119. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  120. package/dist/components/ErrorBoundary.cjs.js +1 -1
  121. package/dist/components/ErrorBoundary.es.js +1 -1
  122. package/dist/components/FilterBar.cjs.js +8 -31
  123. package/dist/components/FilterBar.cjs.js.map +1 -1
  124. package/dist/components/FilterBar.es.js +10 -33
  125. package/dist/components/FilterBar.es.js.map +1 -1
  126. package/dist/components/FormFieldBlocks.cjs.js +3 -3
  127. package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
  128. package/dist/components/FormFieldBlocks.es.js +3 -3
  129. package/dist/components/FormFieldBlocks.es.js.map +1 -1
  130. package/dist/components/InputGroup.cjs.js +1 -1
  131. package/dist/components/InputGroup.es.js +1 -1
  132. package/dist/components/InputNumber.cjs.js +2 -2
  133. package/dist/components/InputNumber.es.js +2 -2
  134. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  135. package/dist/components/JSONSchemaForm.es.js +2 -2
  136. package/dist/components/ListSearch.cjs.js +1 -1
  137. package/dist/components/ListSearch.es.js +1 -1
  138. package/dist/components/LogsDataList.cjs.js +5 -2
  139. package/dist/components/LogsDataList.cjs.js.map +1 -1
  140. package/dist/components/LogsDataList.es.js +5 -2
  141. package/dist/components/LogsDataList.es.js.map +1 -1
  142. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  143. package/dist/components/MarkdownRenderer.es.js +1 -1
  144. package/dist/components/Message.cjs.js +1 -1
  145. package/dist/components/Message.es.js +1 -1
  146. package/dist/components/MetricsCard.cjs.js +1 -1
  147. package/dist/components/MetricsCard.es.js +1 -1
  148. package/dist/components/PrevNextNav.cjs.js +1 -1
  149. package/dist/components/PrevNextNav.es.js +1 -1
  150. package/dist/components/ProductAvatar.cjs.js +2 -1
  151. package/dist/components/ProductAvatar.cjs.js.map +1 -1
  152. package/dist/components/ProductAvatar.es.js +2 -1
  153. package/dist/components/ProductAvatar.es.js.map +1 -1
  154. package/dist/components/PropertyFilter.cjs.js +4 -4
  155. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  156. package/dist/components/PropertyFilter.es.js +5 -5
  157. package/dist/components/PropertyFilter.es.js.map +1 -1
  158. package/dist/components/RuleBuilder.cjs.js +3 -2
  159. package/dist/components/RuleBuilder.cjs.js.map +1 -1
  160. package/dist/components/RuleBuilder.es.js +3 -2
  161. package/dist/components/RuleBuilder.es.js.map +1 -1
  162. package/dist/components/SavedViews.cjs.js +4 -8
  163. package/dist/components/SavedViews.cjs.js.map +1 -1
  164. package/dist/components/SavedViews.es.js +5 -9
  165. package/dist/components/SavedViews.es.js.map +1 -1
  166. package/dist/components/SearchInput.cjs.js +1 -1
  167. package/dist/components/SearchInput.es.js +1 -1
  168. package/dist/components/Select.cjs.js +1 -1
  169. package/dist/components/Select.es.js +1 -1
  170. package/dist/components/SideDialog.cjs.js +1 -1
  171. package/dist/components/SideDialog.es.js +1 -1
  172. package/dist/components/Sidebar.cjs.js +3 -3
  173. package/dist/components/Sidebar.cjs.js.map +1 -1
  174. package/dist/components/Sidebar.es.js +3 -3
  175. package/dist/components/Sidebar.es.js.map +1 -1
  176. package/dist/components/StatusIndicators.cjs.js.map +1 -1
  177. package/dist/components/StatusIndicators.es.js.map +1 -1
  178. package/dist/components/Table.cjs.js.map +1 -1
  179. package/dist/components/Table.es.js.map +1 -1
  180. package/dist/components/Tabs.cjs.js +1 -1
  181. package/dist/components/Tabs.es.js +1 -1
  182. package/dist/components/ThreadList.cjs.js +1 -1
  183. package/dist/components/ThreadList.es.js +1 -1
  184. package/dist/components/ThreadRail.cjs.js.map +1 -1
  185. package/dist/components/ThreadRail.es.js.map +1 -1
  186. package/dist/components/Truncate.cjs.js +1 -1
  187. package/dist/components/Truncate.es.js +1 -1
  188. package/dist/components/Workflow.cjs.js +6 -6
  189. package/dist/components/Workflow.es.js +6 -6
  190. package/dist/components/ai/activity.cjs.js +4 -4
  191. package/dist/components/ai/activity.es.js +4 -4
  192. package/dist/components/ai/ask-user.cjs.js +1 -1
  193. package/dist/components/ai/ask-user.es.js +1 -1
  194. package/dist/components/ai/plan.cjs.js +1 -1
  195. package/dist/components/ai/plan.es.js +1 -1
  196. package/dist/components/ai/tool-approval.cjs.js +1 -1
  197. package/dist/components/ai/tool-approval.es.js +1 -1
  198. package/dist/components/ai/tool-call.cjs.js +4 -4
  199. package/dist/components/ai/tool-call.es.js +4 -4
  200. package/dist/composer-Bs4iyUfe.js.map +1 -1
  201. package/dist/composer-CDQnP3og.cjs.map +1 -1
  202. package/dist/context-menu-C67xhcfa.js.map +1 -1
  203. package/dist/context-menu-jNuzE86D.cjs.map +1 -1
  204. package/dist/{copy-button-Cd0keCti.cjs → copy-button-BC02oZJo.cjs} +2 -2
  205. package/dist/{copy-button-Cd0keCti.cjs.map → copy-button-BC02oZJo.cjs.map} +1 -1
  206. package/dist/{copy-button-C_M3Tu_-.js → copy-button-B_i9lwFJ.js} +2 -2
  207. package/dist/{copy-button-C_M3Tu_-.js.map → copy-button-B_i9lwFJ.js.map} +1 -1
  208. package/dist/{data-code-section-lj3PaHjc.cjs → data-code-section-BJa6NDgN.cjs} +5 -5
  209. package/dist/{data-code-section-lj3PaHjc.cjs.map → data-code-section-BJa6NDgN.cjs.map} +1 -1
  210. package/dist/{data-code-section-mpRgtM8j.js → data-code-section-Cjs-piiY.js} +5 -5
  211. package/dist/{data-code-section-mpRgtM8j.js.map → data-code-section-Cjs-piiY.js.map} +1 -1
  212. package/dist/{data-keys-and-values-1lYi60YK.cjs → data-keys-and-values-DBXIqeXt.cjs} +2 -2
  213. package/dist/data-keys-and-values-DBXIqeXt.cjs.map +1 -0
  214. package/dist/{data-keys-and-values-CHpxKsfq.js → data-keys-and-values-DHp6cHJo.js} +2 -2
  215. package/dist/data-keys-and-values-DHp6cHJo.js.map +1 -0
  216. package/dist/{data-list-top-DJh08vFA.cjs → data-list-DlXU1PLQ.cjs} +339 -13
  217. package/dist/data-list-DlXU1PLQ.cjs.map +1 -0
  218. package/dist/{data-list-top-T-mtdIUp.js → data-list-Tor18oy5.js} +332 -5
  219. package/dist/data-list-Tor18oy5.js.map +1 -0
  220. package/dist/{data-list-skeleton-bNfITSHs.js → data-list-skeleton-CXUB-u3p.js} +2 -2
  221. package/dist/{data-list-skeleton-bNfITSHs.js.map → data-list-skeleton-CXUB-u3p.js.map} +1 -1
  222. package/dist/{data-list-skeleton-sdcaabdX.cjs → data-list-skeleton-DY0F40WQ.cjs} +6 -6
  223. package/dist/{data-list-skeleton-sdcaabdX.cjs.map → data-list-skeleton-DY0F40WQ.cjs.map} +1 -1
  224. package/dist/{data-panel-BkfjzriB.cjs → data-panel-DGNV14pm.cjs} +20 -9
  225. package/dist/data-panel-DGNV14pm.cjs.map +1 -0
  226. package/dist/{data-panel-CMkR6Avv.js → data-panel-DjtnX70w.js} +20 -9
  227. package/dist/data-panel-DjtnX70w.js.map +1 -0
  228. package/dist/{date-time-range-picker-BjQVCVUM.cjs → date-time-range-picker-CXGab8Nj.cjs} +3 -3
  229. package/dist/{date-time-range-picker-BjQVCVUM.cjs.map → date-time-range-picker-CXGab8Nj.cjs.map} +1 -1
  230. package/dist/{date-time-range-picker-D-EECKzz.js → date-time-range-picker-CcnDMZJu.js} +3 -3
  231. package/dist/{date-time-range-picker-D-EECKzz.js.map → date-time-range-picker-CcnDMZJu.js.map} +1 -1
  232. package/dist/{dialog-j2e95YNV.js → dialog-AzCRnEo3.js} +3 -3
  233. package/dist/{dialog-j2e95YNV.js.map → dialog-AzCRnEo3.js.map} +1 -1
  234. package/dist/{dialog-BMUfQ9XU.cjs → dialog-SSeOqRnH.cjs} +3 -3
  235. package/dist/{dialog-BMUfQ9XU.cjs.map → dialog-SSeOqRnH.cjs.map} +1 -1
  236. package/dist/{dialog-action-CmFDNyZX.cjs → dialog-action-Caa-pb85.cjs} +3 -3
  237. package/dist/{dialog-action-CmFDNyZX.cjs.map → dialog-action-Caa-pb85.cjs.map} +1 -1
  238. package/dist/{dialog-action-zKqvuroE.js → dialog-action-DykMOK2W.js} +3 -3
  239. package/dist/{dialog-action-zKqvuroE.js.map → dialog-action-DykMOK2W.js.map} +1 -1
  240. package/dist/domains/auth/components/session-expired.cjs.js +1 -1
  241. package/dist/domains/auth/components/session-expired.es.js +1 -1
  242. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
  243. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
  244. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
  245. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
  246. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  247. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  248. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
  249. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
  250. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
  251. package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
  252. package/dist/domains/chat/messages/dataset-save-action.cjs.js +5 -5
  253. package/dist/domains/chat/messages/dataset-save-action.es.js +5 -5
  254. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  255. package/dist/domains/chat/messages/message-row.es.js +4 -4
  256. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  257. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  258. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  259. package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
  260. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  261. package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
  262. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  263. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  264. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  265. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  266. package/dist/domains/chat/messages/skill-message.cjs.js +3 -3
  267. package/dist/domains/chat/messages/skill-message.es.js +3 -3
  268. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  269. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  270. package/dist/domains/chat/om/om-parts-converter.cjs.js.map +1 -1
  271. package/dist/domains/chat/om/om-parts-converter.es.js.map +1 -1
  272. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  273. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  274. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +4 -4
  275. package/dist/domains/chat/tools/badges/agent-badge.es.js +4 -4
  276. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  277. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  278. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +3 -3
  279. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js.map +1 -1
  280. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
  281. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js.map +1 -1
  282. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  283. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  284. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  285. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  286. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
  287. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
  288. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  289. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  290. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  291. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  292. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +1 -1
  293. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +1 -1
  294. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  295. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  296. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +3 -3
  297. package/dist/domains/chat/tools/badges/tool-badge.es.js +3 -3
  298. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +6 -3
  299. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  300. package/dist/domains/chat/tools/badges/workflow-badge.es.js +6 -3
  301. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  302. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  303. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  304. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  305. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  306. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
  307. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
  308. package/dist/domains/logs/components/log-data-panel.cjs.js +4 -4
  309. package/dist/domains/logs/components/log-data-panel.es.js +4 -4
  310. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
  311. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  312. package/dist/domains/logs/components/logs-list-view.es.js +3 -2
  313. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  314. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  315. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  316. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  317. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  318. package/dist/domains/mcps/components/mcp-app-viewer.cjs.js.map +1 -1
  319. package/dist/domains/mcps/components/mcp-app-viewer.es.js.map +1 -1
  320. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  321. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  322. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  323. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  324. package/dist/domains/metrics/components/agent-runs-card.cjs.js +1 -1
  325. package/dist/domains/metrics/components/agent-runs-card.es.js +1 -1
  326. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  327. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  328. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  329. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  330. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  331. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  332. package/dist/domains/metrics/components/chart-card.cjs.js +1 -1
  333. package/dist/domains/metrics/components/chart-card.es.js +1 -1
  334. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  335. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  336. package/dist/domains/metrics/components/failure-rate-card.cjs.js +1 -1
  337. package/dist/domains/metrics/components/failure-rate-card.es.js +1 -1
  338. package/dist/domains/metrics/components/latency-card.cjs.js +1 -1
  339. package/dist/domains/metrics/components/latency-card.es.js +1 -1
  340. package/dist/domains/metrics/components/scores-card.cjs.js +1 -1
  341. package/dist/domains/metrics/components/scores-card.es.js +1 -1
  342. package/dist/domains/metrics/components/token-usage-card.cjs.js +1 -1
  343. package/dist/domains/metrics/components/token-usage-card.es.js +1 -1
  344. package/dist/domains/metrics/components/trace-volume-card.cjs.js +1 -1
  345. package/dist/domains/metrics/components/trace-volume-card.es.js +1 -1
  346. package/dist/domains/metrics/components/usage-card.cjs.js +1 -1
  347. package/dist/domains/metrics/components/usage-card.es.js +1 -1
  348. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -4
  349. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -4
  350. package/dist/domains/scores/components/score-data-panel.cjs.js +3 -3
  351. package/dist/domains/scores/components/score-data-panel.es.js +3 -3
  352. package/dist/domains/scores/components/span-scoring.cjs.js +3 -3
  353. package/dist/domains/scores/components/span-scoring.es.js +3 -3
  354. package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
  355. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  356. package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
  357. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  358. package/dist/domains/traces/components/feedback-thread.cjs.js +4 -4
  359. package/dist/domains/traces/components/feedback-thread.cjs.js.map +1 -1
  360. package/dist/domains/traces/components/feedback-thread.es.js +4 -4
  361. package/dist/domains/traces/components/feedback-thread.es.js.map +1 -1
  362. package/dist/domains/traces/components/shared.cjs.js +4 -3
  363. package/dist/domains/traces/components/shared.cjs.js.map +1 -1
  364. package/dist/domains/traces/components/shared.es.js +5 -4
  365. package/dist/domains/traces/components/shared.es.js.map +1 -1
  366. package/dist/domains/traces/components/span-data-panel-view.cjs.js +4 -4
  367. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  368. package/dist/domains/traces/components/span-data-panel-view.es.js +4 -4
  369. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  370. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  371. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  372. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
  373. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
  374. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +2 -2
  375. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +2 -2
  376. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
  377. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
  378. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  379. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  380. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  381. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  382. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +2 -2
  383. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +2 -2
  384. package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js.map +1 -1
  385. package/dist/domains/traces/components/span-payload/span-payload-registry.es.js.map +1 -1
  386. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +3 -3
  387. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +3 -3
  388. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  389. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  390. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +2 -2
  391. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +2 -2
  392. package/dist/domains/traces/components/span-rows.cjs.js +5 -0
  393. package/dist/domains/traces/components/span-rows.cjs.js.map +1 -1
  394. package/dist/domains/traces/components/span-rows.es.js +5 -0
  395. package/dist/domains/traces/components/span-rows.es.js.map +1 -1
  396. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  397. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  398. package/dist/domains/traces/components/span-timeline-row.cjs.js +34 -28
  399. package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
  400. package/dist/domains/traces/components/span-timeline-row.es.js +34 -28
  401. package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
  402. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +1 -1
  403. package/dist/domains/traces/components/span-timing-hover-card.es.js +1 -1
  404. package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
  405. package/dist/domains/traces/components/span-token-usage.es.js +1 -1
  406. package/dist/domains/traces/components/span-tree-rail.cjs.js +50 -0
  407. package/dist/domains/traces/components/span-tree-rail.cjs.js.map +1 -0
  408. package/dist/domains/traces/components/span-tree-rail.d.ts +2 -0
  409. package/dist/domains/traces/components/span-tree-rail.es.js +42 -0
  410. package/dist/domains/traces/components/span-tree-rail.es.js.map +1 -0
  411. package/dist/domains/traces/components/span-tree-row.cjs.js +2 -2
  412. package/dist/domains/traces/components/span-tree-row.cjs.js.map +1 -1
  413. package/dist/domains/traces/components/span-tree-row.es.js +2 -2
  414. package/dist/domains/traces/components/span-tree-row.es.js.map +1 -1
  415. package/dist/domains/traces/components/span-type-badge.cjs.js +29 -0
  416. package/dist/domains/traces/components/span-type-badge.cjs.js.map +1 -0
  417. package/dist/domains/traces/components/span-type-badge.d.ts +2 -0
  418. package/dist/domains/traces/components/span-type-badge.es.js +25 -0
  419. package/dist/domains/traces/components/span-type-badge.es.js.map +1 -0
  420. package/dist/domains/traces/components/span-type-legend.cjs.js +2 -2
  421. package/dist/domains/traces/components/span-type-legend.cjs.js.map +1 -1
  422. package/dist/domains/traces/components/span-type-legend.es.js +2 -2
  423. package/dist/domains/traces/components/span-type-legend.es.js.map +1 -1
  424. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  425. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  426. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  427. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  428. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js.map +1 -1
  429. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js.map +1 -1
  430. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +2 -2
  431. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +2 -2
  432. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -1
  433. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  434. package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -1
  435. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  436. package/dist/domains/traces/components/timeline-name-col.cjs.js +53 -27
  437. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  438. package/dist/domains/traces/components/timeline-name-col.es.js +54 -28
  439. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  440. package/dist/domains/traces/components/timeline-structure-sign.cjs.js +23 -14
  441. package/dist/domains/traces/components/timeline-structure-sign.cjs.js.map +1 -1
  442. package/dist/domains/traces/components/timeline-structure-sign.es.js +24 -15
  443. package/dist/domains/traces/components/timeline-structure-sign.es.js.map +1 -1
  444. package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
  445. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  446. package/dist/domains/traces/components/trace-columns-menu.es.js +4 -4
  447. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  448. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +32 -5
  449. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  450. package/dist/domains/traces/components/trace-data-panel-view.es.js +32 -5
  451. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  452. package/dist/domains/traces/components/trace-data-panel.cjs.js +5 -2
  453. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  454. package/dist/domains/traces/components/trace-data-panel.es.js +5 -2
  455. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  456. package/dist/domains/traces/components/trace-error-cell.cjs.js +35 -0
  457. package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -0
  458. package/dist/domains/traces/components/trace-error-cell.d.ts +2 -0
  459. package/dist/domains/traces/components/trace-error-cell.es.js +31 -0
  460. package/dist/domains/traces/components/trace-error-cell.es.js.map +1 -0
  461. package/dist/domains/traces/components/trace-error-details.cjs.js +22 -0
  462. package/dist/domains/traces/components/trace-error-details.cjs.js.map +1 -0
  463. package/dist/domains/traces/components/trace-error-details.d.ts +2 -0
  464. package/dist/domains/traces/components/trace-error-details.es.js +18 -0
  465. package/dist/domains/traces/components/trace-error-details.es.js.map +1 -0
  466. package/dist/domains/traces/components/trace-error-summary.cjs.js +31 -0
  467. package/dist/domains/traces/components/trace-error-summary.cjs.js.map +1 -0
  468. package/dist/domains/traces/components/trace-error-summary.d.ts +2 -0
  469. package/dist/domains/traces/components/trace-error-summary.es.js +27 -0
  470. package/dist/domains/traces/components/trace-error-summary.es.js.map +1 -0
  471. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  472. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  473. package/dist/domains/traces/components/trace-span-panel.cjs.js +1 -1
  474. package/dist/domains/traces/components/trace-span-panel.es.js +1 -1
  475. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +7 -7
  476. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js.map +1 -1
  477. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +7 -7
  478. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js.map +1 -1
  479. package/dist/domains/traces/components/trace-span-tree.cjs.js +1 -2
  480. package/dist/domains/traces/components/trace-span-tree.cjs.js.map +1 -1
  481. package/dist/domains/traces/components/trace-span-tree.es.js +2 -3
  482. package/dist/domains/traces/components/trace-span-tree.es.js.map +1 -1
  483. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  484. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  485. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +1 -1
  486. package/dist/domains/traces/components/trace-thread-item-view.es.js +1 -1
  487. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  488. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  489. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  490. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  491. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  492. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  493. package/dist/domains/traces/components/traces-list-view.cjs.js +10 -7
  494. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  495. package/dist/domains/traces/components/traces-list-view.es.js +9 -6
  496. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  497. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
  498. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  499. package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
  500. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  501. package/dist/domains/traces/hooks/use-trace-list-navigation.cjs.js.map +1 -1
  502. package/dist/domains/traces/hooks/use-trace-list-navigation.es.js.map +1 -1
  503. package/dist/domains/traces/utils/flatten-to-search-text.cjs.js.map +1 -1
  504. package/dist/domains/traces/utils/flatten-to-search-text.es.js.map +1 -1
  505. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  506. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  507. package/dist/domains/workflows/components/workflow-information.cjs.js +1 -1
  508. package/dist/domains/workflows/components/workflow-information.es.js +1 -1
  509. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
  510. package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
  511. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +1 -1
  512. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +1 -1
  513. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  514. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  515. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
  516. package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
  517. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  518. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  519. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -2
  520. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
  521. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  522. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  523. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -1
  524. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +1 -1
  525. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  526. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  527. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  528. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  529. package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
  530. package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
  531. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  532. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  533. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  534. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  535. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +3 -3
  536. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +3 -3
  537. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  538. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  539. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  540. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  541. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  542. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  543. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  544. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  545. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
  546. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
  547. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +3 -3
  548. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +3 -3
  549. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +2 -2
  550. package/dist/domains/workflows/workflow/workflow-run-data.es.js +2 -2
  551. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +1 -1
  552. package/dist/domains/workflows/workflow/workflow-run-header.es.js +1 -1
  553. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  554. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  555. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +3 -3
  556. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +3 -3
  557. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
  558. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  559. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
  560. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
  561. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
  562. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
  563. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
  564. package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
  565. package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +1 -1
  566. package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +1 -1
  567. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +1 -1
  568. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +1 -1
  569. package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
  570. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  571. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +5 -5
  572. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +5 -5
  573. package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
  574. package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
  575. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +2 -2
  576. package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
  577. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  578. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  579. package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
  580. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  581. package/dist/domains/workspace/components/workspace-tree.cjs.js +2 -2
  582. package/dist/domains/workspace/components/workspace-tree.es.js +2 -2
  583. package/dist/{drawer-DROYPMUm.cjs → drawer-DdTU-nBR.cjs} +2 -2
  584. package/dist/{drawer-DROYPMUm.cjs.map → drawer-DdTU-nBR.cjs.map} +1 -1
  585. package/dist/{drawer-C-8E9yHN.js → drawer-mj-G7-Tu.js} +2 -2
  586. package/dist/{drawer-C-8E9yHN.js.map → drawer-mj-G7-Tu.js.map} +1 -1
  587. package/dist/dropdown-menu-CQ_48tVI.js.map +1 -1
  588. package/dist/dropdown-menu-CsynT1aD.cjs.map +1 -1
  589. package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
  590. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  591. package/dist/ee/signals/components/entity-index-list.es.js +3 -1
  592. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  593. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  594. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  595. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js.map +1 -1
  596. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js.map +1 -1
  597. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +6 -4
  598. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  599. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +6 -4
  600. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  601. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  602. package/dist/ee/signals/examples-pager.es.js +1 -1
  603. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  604. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  605. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
  606. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
  607. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  608. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  609. package/dist/ee/signals/signals-error-state.cjs.js +1 -1
  610. package/dist/ee/signals/signals-error-state.es.js +1 -1
  611. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  612. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  613. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  614. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  615. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  616. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  617. package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
  618. package/dist/ee/signals/trace-insight-view.es.js +1 -1
  619. package/dist/ee/signals/trace-intelligence-provider.cjs.js.map +1 -1
  620. package/dist/ee/signals/trace-intelligence-provider.es.js.map +1 -1
  621. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  622. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  623. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  624. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  625. package/dist/{field-error-id-Dbe6IInA.cjs → field-error-id-0yYYU0ar.cjs} +2 -2
  626. package/dist/{field-error-id-Dbe6IInA.cjs.map → field-error-id-0yYYU0ar.cjs.map} +1 -1
  627. package/dist/{field-error-id-Sqhk00e4.js → field-error-id-CdzuQK5c.js} +2 -2
  628. package/dist/{field-error-id-Sqhk00e4.js.map → field-error-id-CdzuQK5c.js.map} +1 -1
  629. package/dist/{filter-bar-chip-BarAq1S2.js → filter-bar-chip-C9CXOudu.js} +3 -3
  630. package/dist/filter-bar-chip-C9CXOudu.js.map +1 -0
  631. package/dist/{filter-bar-chip-BJJ6ytJ4.cjs → filter-bar-chip-DgvuQv6c.cjs} +3 -3
  632. package/dist/filter-bar-chip-DgvuQv6c.cjs.map +1 -0
  633. package/dist/hooks/use-environment-variables-editor.cjs.js.map +1 -1
  634. package/dist/hooks/use-environment-variables-editor.es.js.map +1 -1
  635. package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
  636. package/dist/hooks/use-fluid-hover.es.js.map +1 -1
  637. package/dist/icons/Icon.cjs.js.map +1 -1
  638. package/dist/icons/Icon.es.js.map +1 -1
  639. package/dist/icons/SkillIcon.cjs.js.map +1 -1
  640. package/dist/icons/SkillIcon.es.js.map +1 -1
  641. package/dist/icons/icon-size-classes.cjs.js +4 -4
  642. package/dist/icons/icon-size-classes.cjs.js.map +1 -1
  643. package/dist/icons/icon-size-classes.es.js +4 -4
  644. package/dist/icons/icon-size-classes.es.js.map +1 -1
  645. package/dist/{input-group-CiBbTaPP.js → input-group-BAg6iSIe.js} +2 -2
  646. package/dist/{input-group-CiBbTaPP.js.map → input-group-BAg6iSIe.js.map} +1 -1
  647. package/dist/{input-group-DSW5WoSU.cjs → input-group-DRXUthxe.cjs} +2 -2
  648. package/dist/{input-group-DSW5WoSU.cjs.map → input-group-DRXUthxe.cjs.map} +1 -1
  649. package/dist/keyboard/keyboard-dispatcher.cjs.js +2 -4
  650. package/dist/keyboard/keyboard-dispatcher.cjs.js.map +1 -1
  651. package/dist/keyboard/keyboard-dispatcher.es.js +2 -4
  652. package/dist/keyboard/keyboard-dispatcher.es.js.map +1 -1
  653. package/dist/keyboard/keyboard-shortcuts-context.cjs.js.map +1 -1
  654. package/dist/keyboard/keyboard-shortcuts-context.es.js.map +1 -1
  655. package/dist/keyboard/use-keydown.cjs.js +2 -0
  656. package/dist/keyboard/use-keydown.cjs.js.map +1 -1
  657. package/dist/keyboard/use-keydown.es.js +2 -0
  658. package/dist/keyboard/use-keydown.es.js.map +1 -1
  659. package/dist/layout/tabbed-container.cjs.js +4 -4
  660. package/dist/layout/tabbed-container.es.js +4 -4
  661. package/dist/lib/form/components/array-element-wrapper.cjs.js +1 -1
  662. package/dist/lib/form/components/array-element-wrapper.es.js +1 -1
  663. package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
  664. package/dist/lib/form/components/array-wrapper.es.js +1 -1
  665. package/dist/lib/form/components/date-field.cjs.js +1 -1
  666. package/dist/lib/form/components/date-field.es.js +1 -1
  667. package/dist/lib/form/components/form-submit-row.cjs.js +1 -1
  668. package/dist/lib/form/components/form-submit-row.es.js +1 -1
  669. package/dist/lib/form/components/record-field.cjs.js +1 -1
  670. package/dist/lib/form/components/record-field.es.js +1 -1
  671. package/dist/lib/form/components/select-field.cjs.js +1 -1
  672. package/dist/lib/form/components/select-field.es.js +1 -1
  673. package/dist/lib/form/components/submit-button.cjs.js +1 -1
  674. package/dist/lib/form/components/submit-button.es.js +1 -1
  675. package/dist/lib/form/zod-provider.cjs.js.map +1 -1
  676. package/dist/lib/form/zod-provider.es.js.map +1 -1
  677. package/dist/{list-search-D3I6xt0B.js → list-search-ByJdIxIh.js} +2 -2
  678. package/dist/{list-search-D3I6xt0B.js.map → list-search-ByJdIxIh.js.map} +1 -1
  679. package/dist/{list-search-DHiQ1-O6.cjs → list-search-DNJVeHmK.cjs} +2 -2
  680. package/dist/{list-search-DHiQ1-O6.cjs.map → list-search-DNJVeHmK.cjs.map} +1 -1
  681. package/dist/{logs-data-list-Cb85LPcT.js → logs-data-list-CGerYgSd.js} +2 -3
  682. package/dist/{logs-data-list-Cb85LPcT.js.map → logs-data-list-CGerYgSd.js.map} +1 -1
  683. package/dist/{logs-data-list-DlQxxrNw.cjs → logs-data-list-DEZuSjqt.cjs} +21 -22
  684. package/dist/{logs-data-list-DlQxxrNw.cjs.map → logs-data-list-DEZuSjqt.cjs.map} +1 -1
  685. package/dist/{markdown-renderer-HIfFphpI.cjs → markdown-renderer-BcpwvSl9.cjs} +3 -3
  686. package/dist/{markdown-renderer-HIfFphpI.cjs.map → markdown-renderer-BcpwvSl9.cjs.map} +1 -1
  687. package/dist/{markdown-renderer-BYxWiHRj.js → markdown-renderer-CHLpv5n5.js} +3 -3
  688. package/dist/{markdown-renderer-BYxWiHRj.js.map → markdown-renderer-CHLpv5n5.js.map} +1 -1
  689. package/dist/{message-copy-button-CnVgCy9y.cjs → message-copy-button-D3O4hWDV.cjs} +2 -2
  690. package/dist/{message-copy-button-CnVgCy9y.cjs.map → message-copy-button-D3O4hWDV.cjs.map} +1 -1
  691. package/dist/{message-copy-button-Ctew41Rr.js → message-copy-button-OI1mwAaS.js} +2 -2
  692. package/dist/{message-copy-button-Ctew41Rr.js.map → message-copy-button-OI1mwAaS.js.map} +1 -1
  693. package/dist/{metrics-card-DaFApxZY.cjs → metrics-card-CpjGYNBP.cjs} +2 -2
  694. package/dist/{metrics-card-DaFApxZY.cjs.map → metrics-card-CpjGYNBP.cjs.map} +1 -1
  695. package/dist/{metrics-card-Z_moDiV5.js → metrics-card-D6ty6a6Z.js} +2 -2
  696. package/dist/{metrics-card-Z_moDiV5.js.map → metrics-card-D6ty6a6Z.js.map} +1 -1
  697. package/dist/{notification-activity-MR63WqZm.cjs → notification-activity-BSNuqJDd.cjs} +2 -2
  698. package/dist/{notification-activity-MR63WqZm.cjs.map → notification-activity-BSNuqJDd.cjs.map} +1 -1
  699. package/dist/{notification-activity-FJcMFxIj.js → notification-activity-BWXHmlTn.js} +2 -2
  700. package/dist/{notification-activity-FJcMFxIj.js.map → notification-activity-BWXHmlTn.js.map} +1 -1
  701. package/dist/{plan-BoOK_LAB.cjs → plan-Cm3yHvs3.cjs} +4 -4
  702. package/dist/{plan-BoOK_LAB.cjs.map → plan-Cm3yHvs3.cjs.map} +1 -1
  703. package/dist/{plan-m0hj6Zgv.js → plan-TtrepVnQ.js} +4 -4
  704. package/dist/{plan-m0hj6Zgv.js.map → plan-TtrepVnQ.js.map} +1 -1
  705. package/dist/primitives/form-element.cjs.js.map +1 -1
  706. package/dist/primitives/form-element.es.js.map +1 -1
  707. package/dist/primitives/menu-item.cjs.js +4 -2
  708. package/dist/primitives/menu-item.cjs.js.map +1 -1
  709. package/dist/primitives/menu-item.es.js +4 -2
  710. package/dist/primitives/menu-item.es.js.map +1 -1
  711. package/dist/primitives/popup-anchor.cjs.js +34 -0
  712. package/dist/primitives/popup-anchor.cjs.js.map +1 -0
  713. package/dist/primitives/popup-anchor.d.ts +2 -0
  714. package/dist/primitives/popup-anchor.es.js +10 -0
  715. package/dist/primitives/popup-anchor.es.js.map +1 -0
  716. package/dist/primitives/trigger-button.cjs.js +1 -1
  717. package/dist/primitives/trigger-button.es.js +1 -1
  718. package/dist/{property-filter-applied-J9ob_Rss.js → property-filter-applied-BMmMf4DE.js} +2 -2
  719. package/dist/property-filter-applied-BMmMf4DE.js.map +1 -0
  720. package/dist/{property-filter-applied-CtSglSaH.cjs → property-filter-applied-Bj-bh9gv.cjs} +2 -2
  721. package/dist/property-filter-applied-Bj-bh9gv.cjs.map +1 -0
  722. package/dist/{reasoning-activity-5MFE3mzw.js → reasoning-activity-C-sJt2A9.js} +3 -3
  723. package/dist/{reasoning-activity-5MFE3mzw.js.map → reasoning-activity-C-sJt2A9.js.map} +1 -1
  724. package/dist/{reasoning-activity-DMvughvN.cjs → reasoning-activity-DpYFjxuL.cjs} +3 -3
  725. package/dist/{reasoning-activity-DMvughvN.cjs.map → reasoning-activity-DpYFjxuL.cjs.map} +1 -1
  726. package/dist/resize/panel-drawer.cjs.js +1 -1
  727. package/dist/resize/panel-drawer.es.js +1 -1
  728. package/dist/{search-input-BPqubJZC.js → search-input-C9qFBzn6.js} +2 -2
  729. package/dist/{search-input-BPqubJZC.js.map → search-input-C9qFBzn6.js.map} +1 -1
  730. package/dist/{search-input-BUMYRaUW.cjs → search-input-CMNy0JWd.cjs} +2 -2
  731. package/dist/{search-input-BUMYRaUW.cjs.map → search-input-CMNy0JWd.cjs.map} +1 -1
  732. package/dist/section-CctlZIXp.cjs.map +1 -1
  733. package/dist/section-D0hKTVXt.js.map +1 -1
  734. package/dist/{select-CQtsggxJ.js → select-7rYaECQf.js} +2 -2
  735. package/dist/select-7rYaECQf.js.map +1 -0
  736. package/dist/{select-CbNLtiAs.cjs → select-A3AFKLd9.cjs} +2 -2
  737. package/dist/select-A3AFKLd9.cjs.map +1 -0
  738. package/dist/shimmer-BCSr3Rqf.js.map +1 -1
  739. package/dist/shimmer-Co-XPvF9.cjs.map +1 -1
  740. package/dist/{side-dialog-bm8NPDXy.js → side-dialog-DSvj8H6x.js} +4 -4
  741. package/dist/{side-dialog-bm8NPDXy.js.map → side-dialog-DSvj8H6x.js.map} +1 -1
  742. package/dist/{side-dialog-BzULMBaH.cjs → side-dialog-SJCWBnbw.cjs} +4 -4
  743. package/dist/{side-dialog-BzULMBaH.cjs.map → side-dialog-SJCWBnbw.cjs.map} +1 -1
  744. package/dist/{signal-activity-D-_u7DFm.cjs → signal-activity-C_bihjcd.cjs} +2 -2
  745. package/dist/{signal-activity-D-_u7DFm.cjs.map → signal-activity-C_bihjcd.cjs.map} +1 -1
  746. package/dist/{signal-activity-BkFexFiJ.js → signal-activity-J9kpnwAF.js} +2 -2
  747. package/dist/{signal-activity-BkFexFiJ.js.map → signal-activity-J9kpnwAF.js.map} +1 -1
  748. package/dist/{span-payload-primitives-wujxDKfA.cjs → span-payload-primitives-C0KYtmtV.cjs} +3 -3
  749. package/dist/{span-payload-primitives-wujxDKfA.cjs.map → span-payload-primitives-C0KYtmtV.cjs.map} +1 -1
  750. package/dist/{span-payload-primitives-jQiJK0qI.js → span-payload-primitives-D_N9LeLk.js} +3 -3
  751. package/dist/{span-payload-primitives-jQiJK0qI.js.map → span-payload-primitives-D_N9LeLk.js.map} +1 -1
  752. package/dist/src/domains/traces/components/span-rows.d.ts +2 -0
  753. package/dist/src/domains/traces/components/span-tree-rail.d.ts +23 -0
  754. package/dist/src/domains/traces/components/span-type-badge.d.ts +9 -0
  755. package/dist/src/domains/traces/components/timeline-name-col.d.ts +2 -2
  756. package/dist/src/domains/traces/components/timeline-structure-sign.d.ts +14 -1
  757. package/dist/src/domains/traces/components/trace-error-cell.d.ts +8 -0
  758. package/dist/src/domains/traces/components/trace-error-details.d.ts +10 -0
  759. package/dist/src/domains/traces/components/trace-error-summary.d.ts +8 -0
  760. package/dist/src/domains/traces/components/trace-span-tree-skeleton.d.ts +1 -1
  761. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +1 -0
  762. package/dist/src/ds/components/Avatar/avatar-size.d.ts +1 -1
  763. package/dist/src/ds/components/Breadcrumb/crumb-switcher.d.ts +0 -1
  764. package/dist/src/ds/components/Button/Button.d.ts +1 -1
  765. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-context.d.ts +1 -2
  766. package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +1 -1
  767. package/dist/src/ds/components/Select/select.d.ts +1 -1
  768. package/dist/src/ds/primitives/popup-anchor.d.ts +4 -0
  769. package/dist/src/hooks/use-environment-variables-editor.d.ts +1 -1
  770. package/dist/src/lib/keyboard/keyboard-dispatcher.d.ts +2 -0
  771. package/dist/src/lib/keyboard/use-keydown.d.ts +8 -1
  772. package/dist/style.css +121 -143
  773. package/dist/{tabs-tab-DRaRUvQ3.cjs → tabs-tab-B0W25Dm2.cjs} +2 -2
  774. package/dist/{tabs-tab-DRaRUvQ3.cjs.map → tabs-tab-B0W25Dm2.cjs.map} +1 -1
  775. package/dist/{tabs-tab-CIVJEMoY.js → tabs-tab-CkLyKrL0.js} +2 -2
  776. package/dist/{tabs-tab-CIVJEMoY.js.map → tabs-tab-CkLyKrL0.js.map} +1 -1
  777. package/dist/{thread-list-BANpytn3.cjs → thread-list-BBPZYHh8.cjs} +2 -2
  778. package/dist/thread-list-BBPZYHh8.cjs.map +1 -0
  779. package/dist/{thread-list-lXnXsPul.js → thread-list-BGjKZfEH.js} +2 -2
  780. package/dist/thread-list-BGjKZfEH.js.map +1 -0
  781. package/dist/{time-picker-BpCfTfoe.js → time-picker-Bzdboi4W.js} +2 -2
  782. package/dist/{time-picker-BpCfTfoe.js.map → time-picker-Bzdboi4W.js.map} +1 -1
  783. package/dist/{time-picker-DhekkO5t.cjs → time-picker-CyvG-fwX.cjs} +2 -2
  784. package/dist/{time-picker-DhekkO5t.cjs.map → time-picker-CyvG-fwX.cjs.map} +1 -1
  785. package/dist/{tool-approval-BrqoN_mP.js → tool-approval-P8rUFAYp.js} +4 -4
  786. package/dist/{tool-approval-BrqoN_mP.js.map → tool-approval-P8rUFAYp.js.map} +1 -1
  787. package/dist/{tool-approval-zBfJ20iR.cjs → tool-approval-zhWdp8i6.cjs} +4 -4
  788. package/dist/{tool-approval-zBfJ20iR.cjs.map → tool-approval-zhWdp8i6.cjs.map} +1 -1
  789. package/dist/{tool-call-arguments-DwMeGQHD.cjs → tool-call-arguments-DzpFckIm.cjs} +3 -3
  790. package/dist/{tool-call-arguments-DwMeGQHD.cjs.map → tool-call-arguments-DzpFckIm.cjs.map} +1 -1
  791. package/dist/{tool-call-arguments-Dx4LW1Ni.js → tool-call-arguments-goEdIs4f.js} +3 -3
  792. package/dist/{tool-call-arguments-Dx4LW1Ni.js.map → tool-call-arguments-goEdIs4f.js.map} +1 -1
  793. package/dist/{tool-call-group-DJsiIb-B.cjs → tool-call-group-C56oARyx.cjs} +4 -4
  794. package/dist/tool-call-group-C56oARyx.cjs.map +1 -0
  795. package/dist/{tool-call-group-ZDNZog5K.js → tool-call-group-DU4T72Xn.js} +4 -4
  796. package/dist/tool-call-group-DU4T72Xn.js.map +1 -0
  797. package/dist/{tool-call-mono-Bs7y-1Cq.js → tool-call-mono-DPW6hN91.js} +2 -2
  798. package/dist/{tool-call-mono-Bs7y-1Cq.js.map → tool-call-mono-DPW6hN91.js.map} +1 -1
  799. package/dist/{tool-call-mono-I-vdqzCe.cjs → tool-call-mono-aheL8CkL.cjs} +2 -2
  800. package/dist/{tool-call-mono-I-vdqzCe.cjs.map → tool-call-mono-aheL8CkL.cjs.map} +1 -1
  801. package/dist/{tool-call-output-Dd8zlhLd.js → tool-call-output-BQYzMMMi.js} +2 -2
  802. package/dist/{tool-call-output-Dd8zlhLd.js.map → tool-call-output-BQYzMMMi.js.map} +1 -1
  803. package/dist/{tool-call-output-BrNg0Lkd.cjs → tool-call-output-CuwM5IHd.cjs} +2 -2
  804. package/dist/{tool-call-output-BrNg0Lkd.cjs.map → tool-call-output-CuwM5IHd.cjs.map} +1 -1
  805. package/dist/{tool-card-D4yrR2AE.js → tool-card-aclA3iVz.js} +4 -4
  806. package/dist/{tool-card-D4yrR2AE.js.map → tool-card-aclA3iVz.js.map} +1 -1
  807. package/dist/{tool-card-D6UdNzIX.cjs → tool-card-yii3vGHu.cjs} +4 -4
  808. package/dist/{tool-card-D6UdNzIX.cjs.map → tool-card-yii3vGHu.cjs.map} +1 -1
  809. package/dist/{traces-data-list-Bhhg9drs.cjs → traces-data-list-Co9k5J4f.cjs} +18 -20
  810. package/dist/{traces-data-list-Bhhg9drs.cjs.map → traces-data-list-Co9k5J4f.cjs.map} +1 -1
  811. package/dist/{traces-data-list-DMWPJFBc.js → traces-data-list-TCKjOldO.js} +2 -4
  812. package/dist/{traces-data-list-DMWPJFBc.js.map → traces-data-list-TCKjOldO.js.map} +1 -1
  813. package/dist/use-data-list-keyboard-DF3tLe10.cjs.map +1 -1
  814. package/dist/use-data-list-keyboard-DFQr4t38.js.map +1 -1
  815. package/dist/{use-workflow-graph-runtime-DF-56pIR.cjs → use-workflow-graph-runtime-DcQD5eA6.cjs} +3 -3
  816. package/dist/{use-workflow-graph-runtime-DF-56pIR.cjs.map → use-workflow-graph-runtime-DcQD5eA6.cjs.map} +1 -1
  817. package/dist/{use-workflow-graph-runtime-BrHXo49Q.js → use-workflow-graph-runtime-xq_aSXPh.js} +3 -3
  818. package/dist/{use-workflow-graph-runtime-BrHXo49Q.js.map → use-workflow-graph-runtime-xq_aSXPh.js.map} +1 -1
  819. package/dist/utils/workspace-compat.cjs.js.map +1 -1
  820. package/dist/utils/workspace-compat.es.js.map +1 -1
  821. package/dist/{workflow-code-dialog-content-CfVy6bGG.cjs → workflow-code-dialog-content-B_BQCuFW.cjs} +3 -3
  822. package/dist/{workflow-code-dialog-content-CfVy6bGG.cjs.map → workflow-code-dialog-content-B_BQCuFW.cjs.map} +1 -1
  823. package/dist/{workflow-code-dialog-content-DviJz1jB.js → workflow-code-dialog-content-CFEaeYUX.js} +3 -3
  824. package/dist/{workflow-code-dialog-content-DviJz1jB.js.map → workflow-code-dialog-content-CFEaeYUX.js.map} +1 -1
  825. package/dist/{workflow-condition-card-BRwhMmNO.cjs → workflow-condition-card-CMzoK307.cjs} +3 -3
  826. package/dist/{workflow-condition-card-BRwhMmNO.cjs.map → workflow-condition-card-CMzoK307.cjs.map} +1 -1
  827. package/dist/{workflow-condition-card-sFdOjlab.js → workflow-condition-card-CbQ4fCxY.js} +3 -3
  828. package/dist/{workflow-condition-card-sFdOjlab.js.map → workflow-condition-card-CbQ4fCxY.js.map} +1 -1
  829. package/dist/{workflow-data-edge-view-DpPhr9gZ.cjs → workflow-data-edge-view-0utEB4Yb.cjs} +2 -2
  830. package/dist/{workflow-data-edge-view-DpPhr9gZ.cjs.map → workflow-data-edge-view-0utEB4Yb.cjs.map} +1 -1
  831. package/dist/{workflow-data-edge-view-CuSzc6YI.js → workflow-data-edge-view-gwwJEvXz.js} +2 -2
  832. package/dist/{workflow-data-edge-view-CuSzc6YI.js.map → workflow-data-edge-view-gwwJEvXz.js.map} +1 -1
  833. package/dist/{workflow-debug-controls-CAn_6S8K.cjs → workflow-debug-controls-B5zqE_rm.cjs} +2 -2
  834. package/dist/{workflow-debug-controls-CAn_6S8K.cjs.map → workflow-debug-controls-B5zqE_rm.cjs.map} +1 -1
  835. package/dist/{workflow-debug-controls-CLzbxd5O.js → workflow-debug-controls-CPpdNzD9.js} +2 -2
  836. package/dist/{workflow-debug-controls-CLzbxd5O.js.map → workflow-debug-controls-CPpdNzD9.js.map} +1 -1
  837. package/dist/{workflow-edge-data-button-Dtt_OUz9.js → workflow-edge-data-button-YWjfx-W0.js} +4 -4
  838. package/dist/{workflow-edge-data-button-Dtt_OUz9.js.map → workflow-edge-data-button-YWjfx-W0.js.map} +1 -1
  839. package/dist/{workflow-edge-data-button-B8rQaAoK.cjs → workflow-edge-data-button-tDvziS5v.cjs} +4 -4
  840. package/dist/{workflow-edge-data-button-B8rQaAoK.cjs.map → workflow-edge-data-button-tDvziS5v.cjs.map} +1 -1
  841. package/dist/{workflow-step-action-DqFjktfs.js → workflow-step-action-D8MVfEIl.js} +2 -2
  842. package/dist/{workflow-step-action-DqFjktfs.js.map → workflow-step-action-D8MVfEIl.js.map} +1 -1
  843. package/dist/{workflow-step-action-Cu01omgz.cjs → workflow-step-action-DZgS0_fL.cjs} +2 -2
  844. package/dist/{workflow-step-action-Cu01omgz.cjs.map → workflow-step-action-DZgS0_fL.cjs.map} +1 -1
  845. package/package.json +11 -13
  846. package/theme/scale.css +7 -0
  847. package/dist/Avatar-98bsFrSV.js.map +0 -1
  848. package/dist/Avatar-BCj8SvOb.cjs.map +0 -1
  849. package/dist/Button-DH1aTzbs.cjs.map +0 -1
  850. package/dist/Button-EGoajBQY.js.map +0 -1
  851. package/dist/activity-2tovEdIP.cjs.map +0 -1
  852. package/dist/activity-CsTUr5_l.js.map +0 -1
  853. package/dist/ask-user-card-DroerVbm.cjs.map +0 -1
  854. package/dist/avatar-size-CNR0U-LW.js.map +0 -1
  855. package/dist/avatar-size-DxStOo5A.cjs.map +0 -1
  856. package/dist/combobox-BNlVCFgY.cjs.map +0 -1
  857. package/dist/combobox-Bw13EcK0.js.map +0 -1
  858. package/dist/command-UEPxVJlE.cjs.map +0 -1
  859. package/dist/command-V9rsKc7P.js.map +0 -1
  860. package/dist/data-keys-and-values-1lYi60YK.cjs.map +0 -1
  861. package/dist/data-keys-and-values-CHpxKsfq.js.map +0 -1
  862. package/dist/data-list-CmjTe8xE.cjs +0 -142
  863. package/dist/data-list-CmjTe8xE.cjs.map +0 -1
  864. package/dist/data-list-DT1LVR29.js +0 -138
  865. package/dist/data-list-DT1LVR29.js.map +0 -1
  866. package/dist/data-list-spacer-CdlT6bDd.cjs +0 -218
  867. package/dist/data-list-spacer-CdlT6bDd.cjs.map +0 -1
  868. package/dist/data-list-spacer-D--gDmOm.js +0 -209
  869. package/dist/data-list-spacer-D--gDmOm.js.map +0 -1
  870. package/dist/data-list-top-DJh08vFA.cjs.map +0 -1
  871. package/dist/data-list-top-T-mtdIUp.js.map +0 -1
  872. package/dist/data-panel-BkfjzriB.cjs.map +0 -1
  873. package/dist/data-panel-CMkR6Avv.js.map +0 -1
  874. package/dist/filter-bar-chip-BJJ6ytJ4.cjs.map +0 -1
  875. package/dist/filter-bar-chip-BarAq1S2.js.map +0 -1
  876. package/dist/property-filter-applied-CtSglSaH.cjs.map +0 -1
  877. package/dist/property-filter-applied-J9ob_Rss.js.map +0 -1
  878. package/dist/select-CQtsggxJ.js.map +0 -1
  879. package/dist/select-CbNLtiAs.cjs.map +0 -1
  880. package/dist/thread-list-BANpytn3.cjs.map +0 -1
  881. package/dist/thread-list-lXnXsPul.js.map +0 -1
  882. package/dist/tool-call-group-DJsiIb-B.cjs.map +0 -1
  883. package/dist/tool-call-group-ZDNZog5K.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBar.cjs.js","sources":["../../src/ds/components/FilterBar/filter-bar-input.tsx","../../src/ds/components/FilterBar/use-settle-on-leave.ts","../../src/ds/components/FilterBar/filter-bar-group-editor.tsx","../../src/ds/components/FilterBar/filter-bar-advanced-chip.tsx","../../src/ds/components/FilterBar/filter-bar-clear.tsx","../../src/ds/components/FilterBar/filter-bar.tsx","../../src/ds/components/FilterBar/default-operators.ts"],"sourcesContent":["import type { BaseUIEvent } from '@base-ui/react/types';\nimport { BracesIcon, ListFilterIcon, Search } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { KeyboardEvent } from 'react';\nimport { flushSync } from 'react-dom';\nimport { FILTER_BAR_CONTROL_SIZE, FilterBarFieldLabel, alwaysHighlightProps } from './filter-bar-chip';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { FilterBarOptionLabel, FilterBarOptionList } from './filter-bar-option-list';\nimport { findGroup } from './filter-bar-tree';\nimport { matchesQueryFilter } from './match-query';\nimport type { FilterBarDraft, FilterBarField, FilterBarOperator, FilterBarOption, FilterBarValue } from './types';\nimport { parseFieldValue } from './types';\nimport { useValueStep } from './use-value-step';\nimport { Button } from '@/ds/components/Button/Button';\nimport { ComboboxPrimitive, comboboxStyles } from '@/ds/components/Combobox';\nimport { comboboxTriggerClass } from '@/ds/components/Combobox/combobox-styles';\nimport { Kbd } from '@/ds/components/Kbd/kbd';\nimport { Txt } from '@/ds/components/Txt';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { inputFocusBorderWithin, unstyledFormElementStyle } from '@/ds/primitives/form-element';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { useIsApplePlatform } from '@/hooks/use-keyboard-shortcut-label';\nimport { cn } from '@/lib/utils';\n\ntype Step = 'field' | 'operator' | 'value';\n\ntype Item = FilterBarField | FilterBarOperator | FilterBarOption;\n\nconst getItemLabel = (item: Item) => ('label' in item && item.label ? item.label : 'value' in item ? item.value : '');\n\nconst EMPTY_ITEMS: readonly Item[] = [];\n/** Pinned last entry of the field list that spawns an advanced filter (an `or` group) instead of a filter. */\nconst ADVANCED_FIELD_ID = '__filter-bar-advanced__';\nconst ADVANCED_FIELD: FilterBarField = {\n id: ADVANCED_FIELD_ID,\n label: 'Advanced filter…',\n icon: BracesIcon,\n operators: [],\n};\n\nexport type FilterBarInputProps = {\n placeholder?: string;\n className?: string;\n 'aria-label'?: string;\n /**\n * Group this instance commits into; omit for the bar's own input. Only the instance whose\n * `groupId` matches the provider's `inputTarget` renders, so a single input is ever mounted.\n */\n groupId?: string;\n /** Called when Escape is pressed on an empty query inside a group, after the input hands back to the bar. */\n onLeave?: () => void;\n};\n\n/**\n * Typeahead entry point: type to pick a field, then an operator, then a value.\n * Focus never leaves the input; the popup is driven with the arrow keys.\n */\nexport function FilterBarInput(props: FilterBarInputProps) {\n const ctx = useFilterBarContext();\n if (ctx.inputTarget !== props.groupId) return null;\n return <FilterBarInputImpl {...props} />;\n}\n\nfunction FilterBarInputImpl({\n placeholder = 'Filter…',\n className,\n 'aria-label': ariaLabel = 'Add filter',\n groupId,\n onLeave,\n}: FilterBarInputProps) {\n const ctx = useFilterBarContext();\n const container = usePortalContainer();\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [highlighted, setHighlighted] = useState<Item | null>(null);\n const [emptyForStepChange, setEmptyForStepChange] = useState(false);\n const modEnterLabel = useIsApplePlatform() ? '⌘↵' : 'Ctrl ↵';\n\n // The draft lives in the provider so the chip list can render it; the step follows from it.\n const { draft, setDraft: setDraftState, commitDraft } = ctx;\n const step: Step = !draft ? 'field' : !draft.operatorId ? 'operator' : 'value';\n const field = draft ? ctx.getField(draft.fieldId) : undefined;\n const operator = draft?.operatorId ? ctx.getOperator(draft.operatorId) : undefined;\n const fieldOperators = useMemo(() => (field ? ctx.getFieldOperators(field) : []), [ctx, field]);\n // The advanced option lives in the bar only; inside a popover, nesting is the editor's `+ Group`.\n const offerAdvanced = ctx.groupsEnabled && groupId === undefined;\n const visibleFields = useMemo(() => {\n const fields = ctx.fields.filter(f => !f.hidden);\n return offerAdvanced ? [...fields, ADVANCED_FIELD] : fields;\n }, [ctx.fields, offerAdvanced]);\n const targetGroup = groupId ? findGroup(ctx.expression, groupId) : undefined;\n\n // A group's input mounts on demand (see `openGroupInput`) and takes focus itself.\n useEffect(() => {\n if (groupId) inputRef.current?.focus();\n }, [groupId]);\n\n // Base UI owns the highlight index and keeps it when the list content changes, so a row\n // reached with ArrowDown would carry over into the step that follows. An empty list committed\n // first drops that index, and `autoHighlight` re-anchors on the first row of the new step.\n const withHighlightReset = useCallback((change: () => void) => {\n flushSync(() => setEmptyForStepChange(true));\n change();\n setEmptyForStepChange(false);\n }, []);\n\n const setDraft = useCallback(\n (next: Omit<FilterBarDraft, 'id' | 'from'> | null) => withHighlightReset(() => setDraftState(next)),\n [withHighlightReset, setDraftState],\n );\n\n const reset = useCallback(() => {\n setDraftState(null);\n setQuery('');\n }, [setDraftState]);\n\n const close = useCallback(() => {\n setOpen(false);\n reset();\n }, [reset]);\n\n const commit = useCallback(\n (fieldId: string, operatorId: string, value: FilterBarValue) => {\n withHighlightReset(() => commitDraft({ fieldId, operatorId }, value));\n setQuery('');\n inputRef.current?.focus();\n },\n [withHighlightReset, commitDraft],\n );\n\n const selectOperator = useCallback(\n (fieldId: string, next: FilterBarOperator) => {\n if (next.arity === 'none') {\n commit(fieldId, next.id, '');\n return;\n }\n setDraft({ fieldId, operatorId: next.id });\n setQuery('');\n },\n [commit, setDraft],\n );\n\n const selectField = useCallback(\n (next: FilterBarField) => {\n if (next.id === ADVANCED_FIELD_ID) {\n // `or` is the useful default: an `and` group is indistinguishable from the root.\n const id = ctx.addGroup(undefined, 'or');\n ctx.setOpenGroup(id);\n ctx.openGroupInput(id);\n setQuery('');\n setOpen(false);\n return;\n }\n const [only, ...rest] = ctx.getFieldOperators(next);\n // Free-text entry with text already typed: that text is the value, so neither the\n // operator nor the value step has anything left to ask.\n if (next.search && only && query.trim() !== '') {\n commit(next.id, only.id, parseFieldValue(next.type, query));\n return;\n }\n // A single allowed operator is implied: skip straight to the value step.\n if (only && rest.length === 0) {\n selectOperator(next.id, only);\n return;\n }\n setDraft({ fieldId: next.id });\n setQuery('');\n },\n [ctx, commit, query, selectOperator, setDraft],\n );\n\n const valueStep = useValueStep({\n field,\n operator,\n query,\n enabled: open && step === 'value',\n setQuery,\n onCommit: value => {\n if (draft?.operatorId) commit(draft.fieldId, draft.operatorId, value);\n },\n });\n\n // Leaving a group's input hands the target back to the bar; empty groups are pruned when the\n // popover closes, never here.\n const leaveGroup = useCallback(() => {\n if (!groupId) return false;\n ctx.openGroupInput(undefined);\n onLeave?.();\n return true;\n }, [ctx, groupId, onLeave]);\n\n const stepBack = useCallback(() => {\n if (step === 'value' && draft) {\n // Back to the field step when the operator was implied (single operator).\n const skipOperator = field ? fieldOperators.length === 1 : false;\n setDraft(skipOperator ? null : { fieldId: draft.fieldId });\n } else if (step === 'operator') setDraft(null);\n else if (!leaveGroup()) setOpen(false);\n setQuery('');\n }, [step, draft, field, fieldOperators, setDraft, leaveGroup]);\n\n // Selection is routed per step and never kept by Base UI (`value` stays null).\n const handleSelect = (item: Item) => {\n if (step === 'field') selectField(item as FilterBarField);\n else if (step === 'operator' && draft) selectOperator(draft.fieldId, item as FilterBarOperator);\n else valueStep.handleSelect(item as FilterBarOption);\n };\n\n // App-level keys run before Base UI's own input handling.\n const handleKeyDown = (event: BaseUIEvent<KeyboardEvent<HTMLInputElement>>) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n // Consumed here: an enclosing popover (advanced filter) must not close on it.\n event.stopPropagation();\n event.preventBaseUIHandler();\n stepBack();\n return;\n }\n if (!open && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault();\n event.preventBaseUIHandler();\n setOpen(true);\n return;\n }\n if (query === '') {\n if (event.key === 'Backspace') {\n event.preventDefault();\n event.preventBaseUIHandler();\n if (step !== 'field') stepBack();\n else if (targetGroup) {\n // Inside a group: eat its last chip, or drop the group once it is empty.\n const last = targetGroup.nodes.findLast(node => !ctx.leaving.has(node.id));\n if (last) ctx.removeItem(last.id);\n else leaveGroup();\n } else {\n // Chips still animating out are already gone from the value: skip them.\n const last = ctx.items.findLast(item => !ctx.leaving.has(item.id));\n if (last) ctx.removeItem(last.id);\n }\n return;\n }\n if (event.key === 'ArrowLeft' && step === 'field') {\n if (ctx.focusChip(ctx.items.length - 1, -1, 'remove')) event.preventDefault();\n return;\n }\n }\n if (!open) return;\n\n if (event.key === 'Tab' && highlighted && step !== 'value' && (step === 'operator' || query !== '')) {\n event.preventDefault();\n event.preventBaseUIHandler();\n handleSelect(highlighted);\n return;\n }\n if (step === 'value') {\n const highlightedOption = valueStep.hasSuggestions ? (highlighted as FilterBarOption | null) : null;\n const handled = valueStep.handleKeyDown(event, highlightedOption);\n // Base UI closes on Enter when nothing is highlighted (form submission); the draft must stay open.\n if (handled || (event.key === 'Enter' && highlightedOption === null)) event.preventBaseUIHandler();\n }\n };\n\n const optionsForStep: Record<Step, readonly Item[]> = {\n field: visibleFields,\n operator: fieldOperators,\n value: valueStep.options,\n };\n const items: readonly Item[] = emptyForStepChange ? EMPTY_ITEMS : optionsForStep[step];\n\n // A search field is the way out for text that names no field, so it survives the field\n // step's own filtering whatever was typed; every other item matches on its label.\n const filterItem = useCallback(\n (item: Item, text: string, itemToString?: (item: Item) => string) =>\n ('search' in item && item.search === true) || matchesQueryFilter(item, text, itemToString),\n [],\n );\n\n const searchPlaceholder =\n step === 'field' ? 'Search fields…' : step === 'operator' ? 'Search operators…' : 'Search values…';\n\n const inputPlaceholder =\n step === 'field'\n ? placeholder\n : step === 'operator'\n ? 'Operator…'\n : valueStep.hasSuggestions && valueStep.allowFreeText\n ? 'Search or type a value…'\n : field?.type === 'number'\n ? 'Number…'\n : 'Value…';\n\n return (\n <>\n <ComboboxPrimitive.Root<Item>\n items={items}\n itemToStringLabel={getItemLabel}\n // The value step is already filtered (locally or server-side) by useValueSuggestions.\n filter={step === 'value' ? null : filterItem}\n value={null}\n onValueChange={(item, details) => {\n // Never let Base UI keep the selection, fill the input or close: each step routes it.\n details.cancel();\n if (item) handleSelect(item);\n }}\n inputValue={query}\n onInputValueChange={(next, details) => {\n if (details.reason !== 'input-change') return;\n setQuery(next);\n if (!open) setOpen(true);\n }}\n onItemHighlighted={item => setHighlighted(item ?? null)}\n open={open}\n onOpenChange={(next, details) => {\n // Escape is handled by the input (it steps back rather than closing).\n if (!next && details.reason === 'escape-key') return;\n // The input is the anchor, not a trigger: clicking it must keep the draft open.\n if (\n !next &&\n details.reason === 'outside-press' &&\n details.event.target instanceof Node &&\n inputRef.current?.contains(details.event.target)\n ) {\n return;\n }\n if (next) setOpen(true);\n else close();\n }}\n {...alwaysHighlightProps}\n modal={false}\n >\n <div\n data-slot=\"filter-bar-input-trigger\"\n className={cn(\n // Same trigger recipe as every other DS Combobox (fill, radius, `[&>svg]` icon sizing\n // and the Button icon offset); the bar itself has no chrome. Focus lives on the\n // nested input, so the recipe's `focus-visible` border becomes `focus-within`.\n comboboxTriggerClass({ variant: 'default', size: FILTER_BAR_CONTROL_SIZE }),\n 'w-auto cursor-text',\n 'focus-within:bg-fill-hover',\n inputFocusBorderWithin,\n step === 'field' ? 'min-w-40' : 'min-w-28',\n className,\n )}\n >\n <ListFilterIcon aria-hidden className=\"-ml-[.3em] shrink-0 text-muted-foreground\" />\n <ComboboxPrimitive.Input\n ref={el => {\n inputRef.current = el;\n ctx.registerInput(el);\n }}\n aria-label={ariaLabel}\n spellCheck={false}\n {...passwordManagerOptOutProps}\n data-slot=\"filter-bar-input\"\n data-step={step}\n data-target={targetGroup?.id}\n inputMode={step === 'value' && field?.type === 'number' ? 'decimal' : undefined}\n placeholder={inputPlaceholder}\n className={cn(\n unstyledFormElementStyle,\n 'min-w-0 flex-1 bg-transparent',\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal focus:placeholder:opacity-70',\n )}\n onFocus={() => setOpen(true)}\n onKeyDown={handleKeyDown}\n />\n </div>\n <ComboboxPrimitive.Portal container={container}>\n <ComboboxPrimitive.Positioner\n align=\"start\"\n sideOffset={MENU_SIDE_OFFSET}\n positionMethod={FLOATING_POSITION_METHOD}\n className={comboboxStyles.positioner}\n >\n <ComboboxPrimitive.Popup // The input stretches across the bar, so drop the anchor-width floor: size to content.\n className={cn(comboboxStyles.popup, 'min-w-56')}\n data-slot=\"filter-bar-editor\"\n >\n {(step !== 'value' || valueStep.hasSuggestions) && (\n // Search row mirroring the bar input, so the popup reads as a searchable combobox.\n // The bar input stays the only real input: focus and keyboard navigation never move.\n <div\n className={cn(comboboxStyles.searchContainer, 'cursor-text')}\n data-slot=\"filter-bar-search\"\n onMouseDown={e => e.preventDefault()}\n onClick={() => inputRef.current?.focus()}\n >\n <Search className={comboboxStyles.searchIcon} />\n <span\n className={cn(\n comboboxStyles.searchInput,\n 'flex items-center truncate',\n query === '' && comboboxStyles.placeholder,\n )}\n >\n {query === '' ? searchPlaceholder : query}\n </span>\n </div>\n )}\n {step === 'field' && (\n <FilterBarOptionList<FilterBarField>\n aria-label=\"Fields\"\n getKey={f => f.id}\n renderOption={f => (\n <>\n <FilterBarFieldLabel field={f} />\n {f.search && query !== '' && (\n <span className=\"min-w-0 truncate text-muted-foreground\">\n {ctx.getFieldOperators(f)[0]?.label} \"{query}\"\n </span>\n )}\n </>\n )}\n emptyText=\"No matching field.\"\n />\n )}\n {step === 'operator' && (\n <FilterBarOptionList<FilterBarOperator>\n aria-label=\"Operators\"\n getKey={o => o.id}\n renderOption={o => o.label}\n emptyText=\"No matching operator.\"\n />\n )}\n {step === 'value' && valueStep.hasOptions && (\n <FilterBarOptionList<FilterBarOption>\n aria-label=\"Values\"\n aria-multiselectable={valueStep.isMany || undefined}\n getKey={o => o.value}\n renderOption={option => <FilterBarOptionLabel option={option} />}\n isSelected={o => valueStep.isMany && valueStep.selected.includes(o.value)}\n isLoading={valueStep.isLoading}\n error={valueStep.error}\n emptyText={\n valueStep.allowFreeText ? 'No suggestions — press Enter to use your text.' : 'No matching value.'\n }\n />\n )}\n {step === 'value' && !valueStep.hasSuggestions && (\n <div className=\"flex items-center justify-between gap-2 py-1 pr-1 pl-[.9em]\">\n <Txt variant=\"caption\" tone=\"muted\">\n Type a value\n </Txt>\n <Button\n size=\"sm\"\n variant=\"default\"\n disabled={!valueStep.canCommitQuery}\n onMouseDown={e => e.preventDefault()}\n onClick={() => valueStep.submitFreeText()}\n >\n Apply\n <Kbd size=\"xs\">↵</Kbd>\n </Button>\n </div>\n )}\n {step === 'value' && valueStep.isMany && (\n <div className=\"flex items-center justify-end gap-1 border-t border-border p-1\">\n <Button\n size=\"sm\"\n variant=\"default\"\n onMouseDown={e => e.preventDefault()}\n onClick={() => valueStep.commitDone()}\n >\n Done\n <Kbd size=\"xs\">{modEnterLabel}</Kbd>\n </Button>\n </div>\n )}\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n </>\n );\n}\n","import { useEffect } from 'react';\nimport { useFilterBarContext } from './filter-bar-context';\n\n/** Keeps a leaving node in the DOM until its exit animation has played, then releases it. */\nexport function useSettleOnLeave(id: string, leaving: boolean, rootRef: React.RefObject<HTMLElement | null>) {\n const { settleRemove } = useFilterBarContext();\n useEffect(() => {\n const root = rootRef.current;\n if (!leaving || !root) return;\n const animations = typeof root.getAnimations === 'function' ? root.getAnimations({ subtree: true }) : [];\n if (animations.length === 0) {\n settleRemove(id);\n return;\n }\n let cancelled = false;\n Promise.all(animations.map(animation => animation.finished))\n .then(() => {\n if (!cancelled) settleRemove(id);\n })\n .catch(() => {});\n return () => {\n cancelled = true;\n };\n }, [leaving, id, settleRemove, rootRef]);\n}\n","import { FolderIcon, FolderPlusIcon, PlusIcon, Trash2Icon } from 'lucide-react';\nimport { Fragment, useEffect, useRef } from 'react';\nimport type { ReactNode } from 'react';\nimport { FilterBarChip } from './filter-bar-chip';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { FilterBarInput } from './filter-bar-input';\nimport { countLeaves } from './filter-bar-tree';\nimport type { FilterBarGroup, FilterBarLogic } from './types';\nimport { isFilterBarGroup } from './types';\nimport { useSettleOnLeave } from './use-settle-on-leave';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst connectorClass =\n 'flex h-control-sm w-14 shrink-0 items-center justify-center rounded-md text-column tracking-wide text-muted-foreground uppercase';\n\nexport type FilterBarLogicToggleProps = {\n groupId: string;\n logic: FilterBarLogic;\n className?: string;\n};\n\n/** `and` / `or` connector in front of a row; every connector of a group shares its logic. */\nexport function FilterBarLogicToggle({ groupId, logic, className }: FilterBarLogicToggleProps) {\n const ctx = useFilterBarContext();\n const next: FilterBarLogic = logic === 'and' ? 'or' : 'and';\n return (\n <button\n type=\"button\"\n data-slot=\"filter-bar-logic\"\n data-logic={logic}\n aria-label={`Joined with ${logic}, switch to ${next}`}\n title={`Switch to ${next}`}\n className={cn(\n connectorClass,\n 'filter-bar-logic cursor-pointer border border-border bg-fill-subtle outline-none',\n 'hover:bg-fill-hover hover:text-foreground focus-visible:bg-fill-hover focus-visible:text-foreground',\n className,\n )}\n onClick={() => ctx.setLogic(groupId, next)}\n >\n {logic}\n </button>\n );\n}\n\n/** Segmented `and | or` control shown in a nested group's header. */\nfunction FilterBarLogicSwitch({ groupId, logic }: { groupId: string; logic: FilterBarLogic }) {\n const ctx = useFilterBarContext();\n return (\n <div\n role=\"radiogroup\"\n aria-label=\"Group logic\"\n className=\"flex h-control-sm items-center gap-0.5 rounded-md border border-border bg-fill-subtle p-0.5\"\n >\n {(['and', 'or'] as const).map(value => (\n <button\n key={value}\n type=\"button\"\n role=\"radio\"\n aria-checked={logic === value}\n aria-label={`Join with ${value}`}\n className={cn(\n 'h-full cursor-pointer rounded-sm px-1.5 text-column tracking-wide uppercase outline-none',\n 'focus-visible:bg-fill-hover',\n logic === value ? 'bg-fill-hover text-foreground' : 'text-muted-foreground hover:text-foreground',\n )}\n onClick={() => logic !== value && ctx.setLogic(groupId, value)}\n >\n {value}\n </button>\n ))}\n </div>\n );\n}\n\nexport type FilterBarGroupEditorProps = {\n group: FilterBarGroup;\n /** Nesting level of `group` (root-level group = 1). */\n depth: number;\n /** Drops this group; rendered as a trailing `Clear all` in the footer. */\n onRemove?: () => void;\n removeLabel?: string;\n className?: string;\n};\n\n/**\n * Recursive rule builder shown in an advanced-filter popover. Rows are laid out as\n * `connector | condition`: the first row reads `where`, the following ones carry the\n * group's `and` / `or` toggle. Nested groups render as bordered cards with their own\n * header (logic switch + remove) and footer. The shared typeahead input renders as the\n * last row of the group it is pointed at.\n */\nexport function FilterBarGroupEditor({\n group,\n depth,\n onRemove,\n removeLabel = 'Remove group',\n className,\n}: FilterBarGroupEditorProps) {\n const ctx = useFilterBarContext();\n const addFilterRef = useRef<HTMLButtonElement>(null);\n const focusAddFilter = useRef(false);\n const targeted = ctx.inputTarget === group.id;\n const canNest = depth < ctx.maxDepth;\n\n // `+ Condition` is hidden while the input is open; focus it once it remounts.\n useEffect(() => {\n if (targeted || !focusAddFilter.current) return;\n focusAddFilter.current = false;\n addFilterRef.current?.focus();\n }, [targeted]);\n\n const rows: ReactNode[] = [];\n const connector = (key: string) =>\n rows.length === 0 ? (\n <span key={`${key}:where`} className={connectorClass}>\n where\n </span>\n ) : (\n <FilterBarLogicToggle key={`${key}:logic`} groupId={group.id} logic={group.logic} />\n );\n for (const node of group.nodes) {\n rows.push(\n <Fragment key={node.id}>\n {connector(node.id)}\n {isFilterBarGroup(node) ? (\n <NestedGroupCard group={node} depth={depth + 1} />\n ) : (\n <FilterBarChip item={node} className=\"w-fit\" />\n )}\n </Fragment>,\n );\n }\n if (ctx.draft && ctx.draft.groupId === group.id) {\n const { id, fieldId, operatorId = '' } = ctx.draft;\n rows.push(\n <Fragment key={id}>\n {connector(id)}\n <FilterBarChip draft item={{ id, fieldId, operatorId, value: '' }} className=\"w-fit\" />\n </Fragment>,\n );\n }\n if (targeted) {\n rows.push(\n <Fragment key=\"input\">\n {connector('input')}\n <FilterBarInput\n groupId={group.id}\n placeholder=\"Add condition…\"\n onLeave={() => {\n focusAddFilter.current = true;\n }}\n />\n </Fragment>,\n );\n }\n\n return (\n <div\n data-slot=\"filter-bar-group-editor\"\n data-depth={depth}\n role=\"group\"\n aria-label={`Conditions joined with ${group.logic}`}\n className={cn('flex min-w-0 flex-col', className)}\n >\n {rows.length > 0 && (\n <div className=\"grid grid-cols-[auto_minmax(0,1fr)] items-start gap-x-2 gap-y-1.5 p-2\">{rows}</div>\n )}\n <div\n data-slot=\"filter-bar-editor-actions\"\n className={cn('flex w-full items-center gap-1 p-1', rows.length > 0 && 'border-t border-border')}\n >\n {!targeted && (\n <Button\n ref={addFilterRef}\n variant=\"ghost\"\n size=\"sm\"\n icon={<PlusIcon />}\n onClick={() => ctx.openGroupInput(group.id)}\n >\n Condition\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n icon={<FolderPlusIcon />}\n className=\"text-muted-foreground\"\n tooltip={canNest ? undefined : `Groups can nest ${ctx.maxDepth} levels deep`}\n disabled={!canNest}\n onClick={() => ctx.addGroup(group.id, group.logic === 'and' ? 'or' : 'and')}\n >\n Group\n </Button>\n {onRemove && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n icon={<Trash2Icon />}\n className=\"ml-auto text-muted-foreground\"\n aria-label={removeLabel}\n onClick={onRemove}\n >\n Clear all\n </Button>\n )}\n </div>\n </div>\n );\n}\n\nfunction NestedGroupCard({ group, depth }: { group: FilterBarGroup; depth: number }) {\n const ctx = useFilterBarContext();\n const rootRef = useRef<HTMLDivElement>(null);\n const leaving = ctx.leaving.has(group.id);\n useSettleOnLeave(group.id, leaving, rootRef);\n const count = countLeaves(group);\n\n return (\n <div\n ref={rootRef}\n data-slot=\"filter-bar-editor-nested\"\n data-leaving={leaving || undefined}\n aria-hidden={leaving || undefined}\n className={cn(\n 'filter-bar-editor-nested w-full overflow-hidden rounded-lg border border-border',\n leaving && 'pointer-events-none',\n )}\n >\n <div className=\"flex items-center gap-2 border-b border-border px-2 py-1\">\n <FolderIcon className=\"size-3.5 text-muted-foreground\" />\n <Txt as=\"span\" variant=\"label\" tone=\"ink\">\n Group\n </Txt>\n <Txt as=\"span\" variant=\"label\" tone=\"muted\">\n · {count} {count === 1 ? 'condition' : 'conditions'}\n </Txt>\n <div className=\"ml-auto flex items-center gap-1\">\n <FilterBarLogicSwitch groupId={group.id} logic={group.logic} />\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Remove group\"\n disabled={leaving}\n onClick={() => ctx.removeGroup(group.id)}\n >\n <Trash2Icon />\n </Button>\n </div>\n </div>\n <FilterBarGroupEditor group={group} depth={depth} />\n </div>\n );\n}\n","import { BracesIcon, XIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport type { KeyboardEvent } from 'react';\nimport { chipClass, editableSegmentClass } from './filter-bar-chip';\nimport { FILTER_BAR_SCOPE_ATTR, useFilterBarContext } from './filter-bar-context';\nimport { FilterBarGroupEditor } from './filter-bar-group-editor';\nimport { countLeaves } from './filter-bar-tree';\nimport type { FilterBarGroup } from './types';\nimport { useSettleOnLeave } from './use-settle-on-leave';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport type FilterBarAdvancedChipProps = {\n group: FilterBarGroup;\n className?: string;\n};\n\n/**\n * A root-level group rendered as one \"Advanced filter\" chip. Its popover hosts the\n * recursive rule builder; the chip's remove button drops the whole subtree.\n */\nexport function FilterBarAdvancedChip({ group, className }: FilterBarAdvancedChipProps) {\n const ctx = useFilterBarContext();\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const leaving = ctx.leaving.has(group.id);\n const open = ctx.openGroupId === group.id;\n const count = countLeaves(group);\n // Position in the flattened item list: navigation from the chip continues from its first leaf.\n const firstLeafIndex = ctx.items.findIndex(item => isUnder(group, item.id));\n const index = firstLeafIndex === -1 ? ctx.items.length : firstLeafIndex;\n useSettleOnLeave(group.id, leaving, rootRef);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (leaving) return;\n const segments = Array.from(rootRef.current?.querySelectorAll<HTMLElement>('[data-filter-bar-segment]') ?? []);\n const current = segments.findIndex(el => el === event.target);\n if (current === -1) return;\n switch (event.key) {\n case 'ArrowRight': {\n event.preventDefault();\n const next = segments[current + 1];\n if (next) next.focus();\n else if (!ctx.focusChip(index + count, 1, 'field')) ctx.focusInput();\n return;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n const prev = segments[current - 1];\n if (prev) prev.focus();\n else ctx.focusChip(index - 1, -1, 'remove');\n return;\n }\n case 'Delete':\n case 'Backspace':\n event.preventDefault();\n remove();\n return;\n default:\n }\n };\n\n const remove = () => {\n ctx.removeGroup(group.id);\n ctx.focusAfterRemove(index);\n };\n\n return (\n <Popover open={open} onOpenChange={next => ctx.setOpenGroup(next ? group.id : null)}>\n <div\n ref={rootRef}\n role=\"group\"\n aria-label={`Advanced filter, ${count} ${count === 1 ? 'condition' : 'conditions'}`}\n aria-hidden={leaving || undefined}\n data-slot=\"filter-bar-advanced\"\n data-leaving={leaving || undefined}\n className={cn('filter-bar-advanced', chipClass, leaving && 'pointer-events-none', className)}\n onKeyDown={handleKeyDown}\n >\n <PopoverTrigger\n ref={el => {\n triggerRef.current = el;\n ctx.registerSegment(group.id, 'field', leaving ? null : el);\n }}\n render={<button type=\"button\" />}\n data-filter-bar-segment=\"field\"\n className={cn(editableSegmentClass, 'gap-1.5')}\n title=\"Edit advanced filter\"\n >\n <BracesIcon className=\"size-[1.1em] shrink-0\" aria-hidden />\n <span className=\"truncate\">Advanced filter</span>\n {count > 0 && (\n <Txt as=\"span\" variant=\"column\" tone=\"muted\" aria-hidden>\n {count}\n </Txt>\n )}\n </PopoverTrigger>\n {leaving ? (\n <span aria-hidden className={cn(editableSegmentClass, 'px-1.5')}>\n <XIcon className=\"size-[1.1em]\" />\n </span>\n ) : (\n <button\n type=\"button\"\n ref={el => ctx.registerSegment(group.id, 'remove', el)}\n data-filter-bar-segment=\"remove\"\n aria-label=\"Remove advanced filter\"\n title=\"Remove advanced filter\"\n className={cn(editableSegmentClass, 'px-1.5')}\n onClick={remove}\n >\n <XIcon className=\"size-[1.1em]\" />\n </button>\n )}\n </div>\n <PopoverContent\n align=\"start\"\n className=\"w-[min(92vw,44rem)] p-0\"\n {...{ [FILTER_BAR_SCOPE_ATTR]: 'advanced' }}\n finalFocus={triggerRef}\n >\n <div className=\"flex items-center gap-2 border-b border-border px-3 py-2\">\n <BracesIcon className=\"size-3.5 text-muted-foreground\" />\n <Txt as=\"span\" variant=\"label\" tone=\"ink\">\n Advanced filter\n </Txt>\n <Txt as=\"span\" variant=\"column\" tone=\"muted\" className=\"rounded-md bg-fill-subtle px-1.5\">\n {count}\n </Txt>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"ml-auto\"\n tooltip=\"Close\"\n onClick={() => ctx.setOpenGroup(null)}\n >\n <XIcon />\n </Button>\n </div>\n <FilterBarGroupEditor\n group={group}\n depth={1}\n removeLabel=\"Remove advanced filter\"\n onRemove={() => {\n ctx.setOpenGroup(null);\n remove();\n }}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\nconst isUnder = (group: FilterBarGroup, itemId: string): boolean =>\n group.nodes.some(node => (node.id === itemId ? true : 'kind' in node && isUnder(node, itemId)));\n","import { XIcon } from 'lucide-react';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { Button } from '@/ds/components/Button/Button';\n\n/** Removes every removable filter. Rendered by FilterBar at its trailing edge; hidden while nothing can be removed. */\nexport function FilterBarClear({ label }: { label: string }) {\n const ctx = useFilterBarContext();\n if (!ctx.hasRemovableItems) return null;\n return (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={label}\n tooltip={label}\n onClick={event => {\n event.stopPropagation();\n ctx.clear();\n ctx.focusInput();\n }}\n >\n <XIcon />\n </Button>\n );\n}\n","import { Fragment } from 'react';\nimport type { ReactNode } from 'react';\nimport { FilterBarAdvancedChip } from './filter-bar-advanced-chip';\nimport { FilterBarChip } from './filter-bar-chip';\nimport { FilterBarClear } from './filter-bar-clear';\nimport { FILTER_BAR_SCOPE_ATTR, FilterBarProvider, useFilterBarContext } from './filter-bar-context';\nimport { FilterBarInput } from './filter-bar-input';\nimport { isFilterBarGroup } from './types';\nimport type { FilterBarExpression, FilterBarField, FilterBarItem, FilterBarOperator } from './types';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\ntype FilterBarValueProps =\n | {\n /** Flat list of filters, implicitly joined with `and`. Advanced filters are never offered. */\n value: FilterBarItem[];\n onValueChange: (items: FilterBarItem[]) => void;\n }\n | {\n /**\n * Tree of filters and groups. Root nodes are joined with `and`; each root group renders\n * as one \"Advanced filter\" chip whose popover edits the nested `and` / `or` logic.\n */\n value: FilterBarExpression;\n onValueChange: (expression: FilterBarExpression) => void;\n };\n\nexport type FilterBarProps = FilterBarValueProps & {\n fields: FilterBarField[];\n operators: FilterBarOperator[];\n /**\n * Id given to a newly added item. Defaults to a random id. Consumers that rebuild `value` from\n * their own store (URL, query params…) should return the id they will rebuild it with, so the\n * draft chip and the committed chip are the same element.\n */\n createItemId?: (fieldId: string) => string;\n /** How deep advanced-filter groups may nest (root-level group = 1). Defaults to 3. */\n maxDepth?: number;\n 'aria-label'?: string;\n /**\n * Text shown in a value list when the field's `suggestions` resolver rejects, for example\n * to explain a server limit. Return `undefined` to keep the default \"Couldn't load values.\".\n */\n describeSuggestionsError?: (error: unknown) => string | undefined;\n /** Accessible label of the trailing \"remove every filter\" button. */\n clearLabel?: string;\n className?: string;\n children: ReactNode;\n};\n\nfunction FilterBarSurface({\n className,\n clearLabel,\n children,\n}: {\n className?: string;\n clearLabel: string;\n children: ReactNode;\n}) {\n const ctx = useFilterBarContext();\n return (\n <div\n role=\"group\"\n aria-label={ctx.ariaLabel}\n data-slot=\"filter-bar\"\n {...{ [FILTER_BAR_SCOPE_ATTR]: 'bar' }}\n className={cn(\n // No chrome of its own: chips and the typeahead input sit directly on the parent surface.\n // Layout: chips, input, then Clear right beside the input — all in one wrapping row so\n // Clear never drifts to the far edge of a wide container.\n 'flex w-full flex-wrap items-center gap-1',\n className,\n )}\n >\n {children}\n <span className=\"flex shrink-0 items-center empty:hidden\">\n <FilterBarClear label={clearLabel} />\n </span>\n <VisuallyHidden aria-live=\"polite\">{ctx.announcement}</VisuallyHidden>\n </div>\n );\n}\n\n/**\n * Braintrust-style filter bar: `field → operator → value` filters built from a\n * single typeahead input, rendered as inline editable chips. Domain-agnostic —\n * fields, operators and values are plain strings supplied by the consumer.\n *\n * Pass a `FilterBarExpression` as `value` to enable Linear-style advanced filters:\n * the input offers \"Advanced filter…\", which adds one chip whose popover hosts a\n * recursive rule builder (`and` / `or` connectors, nested groups). The bar itself\n * stays flat. A flat `FilterBarItem[]` stays flat.\n *\n * @example\n * <FilterBar value={items} onValueChange={setItems} fields={fields} operators={DEFAULT_FILTER_OPERATORS}>\n * <FilterBar.Chips />\n * <FilterBar.Input />\n * </FilterBar>\n */\nexport function FilterBar({\n fields,\n operators,\n value,\n onValueChange,\n createItemId,\n maxDepth,\n 'aria-label': ariaLabel = 'Filters',\n describeSuggestionsError,\n clearLabel = 'Clear filters',\n className,\n children,\n}: FilterBarProps) {\n return (\n <FilterBarProvider\n fields={fields}\n operators={operators}\n value={value}\n onValueChange={onValueChange}\n createItemId={createItemId}\n maxDepth={maxDepth}\n ariaLabel={ariaLabel}\n describeSuggestionsError={describeSuggestionsError}\n >\n <FilterBarSurface className={className} clearLabel={clearLabel}>\n {children}\n </FilterBarSurface>\n </FilterBarProvider>\n );\n}\n\n/**\n * Default layout: one editable chip per root item, one \"Advanced filter\" chip per root\n * group, in order, then the chip of the filter being built in the bar's input (which\n * becomes the last item's chip once committed).\n */\nexport function FilterBarChips({ renderChip = defaultRenderChip }: FilterBarChipsProps) {\n const ctx = useFilterBarContext();\n // One keyed array: the draft chip and the item it becomes share a key, so React\n // keeps the element across the commit instead of mounting a new chip.\n const chips: ReactNode[] = [];\n for (const node of ctx.expression.nodes) {\n const chip = isFilterBarGroup(node) ? <FilterBarAdvancedChip group={node} /> : renderChip(node);\n if (chip !== null) chips.push(<Fragment key={node.id}>{chip}</Fragment>);\n }\n if (ctx.draft && !ctx.draft.groupId) {\n // `FilterBarChip` needs a full item; the draft's missing parts are blank until picked.\n const { id, fieldId, operatorId = '' } = ctx.draft;\n chips.push(\n <Fragment key={id}>\n <FilterBarChip draft item={{ id, fieldId, operatorId, value: '' }} />\n </Fragment>,\n );\n }\n return <>{chips}</>;\n}\n\nexport type FilterBarChipsProps = {\n /**\n * Chip for an item; return `null` to render none (e.g. an item only held in the\n * value for scoping). Defaults to a plain editable `FilterBar.Chip`.\n */\n renderChip?: (item: FilterBarItem) => ReactNode;\n};\n\nconst defaultRenderChip = (item: FilterBarItem) => <FilterBarChip item={item} />;\n\nFilterBar.Chips = FilterBarChips;\nFilterBar.Chip = FilterBarChip;\nFilterBar.AdvancedChip = FilterBarAdvancedChip;\nFilterBar.Input = FilterBarInput;\n","import type { FilterBarOperator } from './types';\n\n/** Opt-in starter set. Pure data: the component attaches no semantics to ids. */\nexport const DEFAULT_FILTER_OPERATORS: FilterBarOperator[] = [\n { id: 'is', label: 'is', widensTo: 'in' },\n { id: 'is-not', label: 'is not' },\n { id: 'contains', label: 'contains' },\n { id: 'not-contains', label: 'does not contain' },\n { id: 'starts-with', label: 'starts with' },\n { id: 'gt', label: '>' },\n { id: 'lt', label: '<' },\n { id: 'gte', label: '>=' },\n { id: 'lte', label: '<=' },\n { id: 'is-empty', label: 'is empty', arity: 'none' },\n { id: 'is-not-empty', label: 'is not empty', arity: 'none' },\n { id: 'in', label: 'in', arity: 'many' },\n];\n"],"names":["BracesIcon","useFilterBarContext","jsx","usePortalContainer","useRef","useState","useIsApplePlatform","useMemo","findGroup","useEffect","useCallback","flushSync","parseFieldValue","useValueStep","matchesQueryFilter","Fragment","jsxs","ComboboxPrimitive","alwaysHighlightProps","cn","comboboxTriggerClass","FILTER_BAR_CONTROL_SIZE","inputFocusBorderWithin","ListFilterIcon","passwordManagerOptOutProps","unstyledFormElementStyle","MENU_SIDE_OFFSET","FLOATING_POSITION_METHOD","comboboxStyles","Search","FilterBarOptionList","FilterBarFieldLabel","FilterBarOptionLabel","Txt","Button","Kbd","isFilterBarGroup","FilterBarChip","PlusIcon","FolderPlusIcon","Trash2Icon","countLeaves","FolderIcon","Popover","chipClass","PopoverTrigger","editableSegmentClass","XIcon","PopoverContent","FILTER_BAR_SCOPE_ATTR","VisuallyHidden","FilterBarProvider"],"mappings":"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"}
1
+ {"version":3,"file":"FilterBar.cjs.js","sources":["../../src/ds/components/FilterBar/filter-bar-input.tsx","../../src/ds/components/FilterBar/use-settle-on-leave.ts","../../src/ds/components/FilterBar/filter-bar-group-editor.tsx","../../src/ds/components/FilterBar/filter-bar-advanced-chip.tsx","../../src/ds/components/FilterBar/filter-bar-clear.tsx","../../src/ds/components/FilterBar/filter-bar.tsx","../../src/ds/components/FilterBar/default-operators.ts"],"sourcesContent":["import type { BaseUIEvent } from '@base-ui/react/types';\nimport { BracesIcon, ListFilterIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { KeyboardEvent } from 'react';\nimport { flushSync } from 'react-dom';\nimport { FILTER_BAR_CONTROL_SIZE, FilterBarFieldLabel, alwaysHighlightProps } from './filter-bar-chip';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { FilterBarOptionLabel, FilterBarOptionList } from './filter-bar-option-list';\nimport { findGroup } from './filter-bar-tree';\nimport { matchesQueryFilter } from './match-query';\nimport type { FilterBarDraft, FilterBarField, FilterBarOperator, FilterBarOption, FilterBarValue } from './types';\nimport { parseFieldValue } from './types';\nimport { useValueStep } from './use-value-step';\nimport { Button } from '@/ds/components/Button/Button';\nimport { ComboboxPrimitive, comboboxStyles } from '@/ds/components/Combobox';\nimport { comboboxTriggerClass } from '@/ds/components/Combobox/combobox-styles';\nimport { Kbd } from '@/ds/components/Kbd/kbd';\nimport { Txt } from '@/ds/components/Txt';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { inputFocusBorderWithin, unstyledFormElementStyle } from '@/ds/primitives/form-element';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { useIsApplePlatform } from '@/hooks/use-keyboard-shortcut-label';\nimport { cn } from '@/lib/utils';\n\ntype Step = 'field' | 'operator' | 'value';\n\ntype Item = FilterBarField | FilterBarOperator | FilterBarOption;\n\nconst getItemLabel = (item: Item) => ('label' in item && item.label ? item.label : 'value' in item ? item.value : '');\n\nconst EMPTY_ITEMS: readonly Item[] = [];\n/** Pinned last entry of the field list that spawns an advanced filter (an `or` group) instead of a filter. */\nconst ADVANCED_FIELD_ID = '__filter-bar-advanced__';\nconst ADVANCED_FIELD: FilterBarField = {\n id: ADVANCED_FIELD_ID,\n label: 'Advanced filter…',\n icon: BracesIcon,\n operators: [],\n};\n\nexport type FilterBarInputProps = {\n placeholder?: string;\n className?: string;\n 'aria-label'?: string;\n /**\n * Group this instance commits into; omit for the bar's own input. Only the instance whose\n * `groupId` matches the provider's `inputTarget` renders, so a single input is ever mounted.\n */\n groupId?: string;\n /** Called when Escape is pressed on an empty query inside a group, after the input hands back to the bar. */\n onLeave?: () => void;\n};\n\n/**\n * Typeahead entry point: type to pick a field, then an operator, then a value.\n * Focus never leaves the input; the popup is driven with the arrow keys.\n */\nexport function FilterBarInput(props: FilterBarInputProps) {\n const ctx = useFilterBarContext();\n if (ctx.inputTarget !== props.groupId) return null;\n return <FilterBarInputImpl {...props} />;\n}\n\nfunction FilterBarInputImpl({\n placeholder = 'Filter…',\n className,\n 'aria-label': ariaLabel = 'Add filter',\n groupId,\n onLeave,\n}: FilterBarInputProps) {\n const ctx = useFilterBarContext();\n const container = usePortalContainer();\n const inputRef = useRef<HTMLInputElement | null>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [highlighted, setHighlighted] = useState<Item | null>(null);\n const [emptyForStepChange, setEmptyForStepChange] = useState(false);\n const modEnterLabel = useIsApplePlatform() ? '⌘↵' : 'Ctrl ↵';\n\n // The draft lives in the provider so the chip list can render it; the step follows from it.\n const { draft, setDraft: setDraftState, commitDraft } = ctx;\n const step: Step = !draft ? 'field' : !draft.operatorId ? 'operator' : 'value';\n const field = draft ? ctx.getField(draft.fieldId) : undefined;\n const operator = draft?.operatorId ? ctx.getOperator(draft.operatorId) : undefined;\n const fieldOperators = useMemo(() => (field ? ctx.getFieldOperators(field) : []), [ctx, field]);\n // The advanced option lives in the bar only; inside a popover, nesting is the editor's `+ Group`.\n const offerAdvanced = ctx.groupsEnabled && groupId === undefined;\n const visibleFields = useMemo(() => {\n const fields = ctx.fields.filter(f => !f.hidden);\n return offerAdvanced ? [...fields, ADVANCED_FIELD] : fields;\n }, [ctx.fields, offerAdvanced]);\n const targetGroup = groupId ? findGroup(ctx.expression, groupId) : undefined;\n\n // A group's input mounts on demand (see `openGroupInput`) and takes focus itself.\n useEffect(() => {\n if (groupId) inputRef.current?.focus();\n }, [groupId]);\n\n // Base UI owns the highlight index and keeps it when the list content changes, so a row\n // reached with ArrowDown would carry over into the step that follows. An empty list committed\n // first drops that index, and `autoHighlight` re-anchors on the first row of the new step.\n const withHighlightReset = useCallback((change: () => void) => {\n flushSync(() => setEmptyForStepChange(true));\n change();\n setEmptyForStepChange(false);\n }, []);\n\n const setDraft = useCallback(\n (next: Omit<FilterBarDraft, 'id' | 'from'> | null) => withHighlightReset(() => setDraftState(next)),\n [withHighlightReset, setDraftState],\n );\n\n const reset = useCallback(() => {\n setDraftState(null);\n setQuery('');\n }, [setDraftState]);\n\n const close = useCallback(() => {\n setOpen(false);\n reset();\n }, [reset]);\n\n const commit = useCallback(\n (fieldId: string, operatorId: string, value: FilterBarValue) => {\n withHighlightReset(() => commitDraft({ fieldId, operatorId }, value));\n setQuery('');\n inputRef.current?.focus();\n },\n [withHighlightReset, commitDraft],\n );\n\n const selectOperator = useCallback(\n (fieldId: string, next: FilterBarOperator) => {\n if (next.arity === 'none') {\n commit(fieldId, next.id, '');\n return;\n }\n setDraft({ fieldId, operatorId: next.id });\n setQuery('');\n },\n [commit, setDraft],\n );\n\n const selectField = useCallback(\n (next: FilterBarField) => {\n if (next.id === ADVANCED_FIELD_ID) {\n // `or` is the useful default: an `and` group is indistinguishable from the root.\n const id = ctx.addGroup(undefined, 'or');\n ctx.setOpenGroup(id);\n ctx.openGroupInput(id);\n setQuery('');\n setOpen(false);\n return;\n }\n const [only, ...rest] = ctx.getFieldOperators(next);\n // Free-text entry with text already typed: that text is the value, so neither the\n // operator nor the value step has anything left to ask.\n if (next.search && only && query.trim() !== '') {\n commit(next.id, only.id, parseFieldValue(next.type, query));\n return;\n }\n // A single allowed operator is implied: skip straight to the value step.\n if (only && rest.length === 0) {\n selectOperator(next.id, only);\n return;\n }\n setDraft({ fieldId: next.id });\n setQuery('');\n },\n [ctx, commit, query, selectOperator, setDraft],\n );\n\n const valueStep = useValueStep({\n field,\n operator,\n query,\n enabled: open && step === 'value',\n setQuery,\n onCommit: value => {\n if (draft?.operatorId) commit(draft.fieldId, draft.operatorId, value);\n },\n });\n\n // Leaving a group's input hands the target back to the bar; empty groups are pruned when the\n // popover closes, never here.\n const leaveGroup = useCallback(() => {\n if (!groupId) return false;\n ctx.openGroupInput(undefined);\n onLeave?.();\n return true;\n }, [ctx, groupId, onLeave]);\n\n const stepBack = useCallback(() => {\n if (step === 'value' && draft) {\n // Back to the field step when the operator was implied (single operator).\n const skipOperator = field ? fieldOperators.length === 1 : false;\n setDraft(skipOperator ? null : { fieldId: draft.fieldId });\n } else if (step === 'operator') setDraft(null);\n else if (!leaveGroup()) setOpen(false);\n setQuery('');\n }, [step, draft, field, fieldOperators, setDraft, leaveGroup]);\n\n // Selection is routed per step and never kept by Base UI (`value` stays null).\n const handleSelect = (item: Item) => {\n if (step === 'field') selectField(item as FilterBarField);\n else if (step === 'operator' && draft) selectOperator(draft.fieldId, item as FilterBarOperator);\n else valueStep.handleSelect(item as FilterBarOption);\n };\n\n // App-level keys run before Base UI's own input handling.\n const handleKeyDown = (event: BaseUIEvent<KeyboardEvent<HTMLInputElement>>) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n // Consumed here: an enclosing popover (advanced filter) must not close on it.\n event.stopPropagation();\n event.preventBaseUIHandler();\n stepBack();\n return;\n }\n if (!open && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault();\n event.preventBaseUIHandler();\n setOpen(true);\n return;\n }\n if (query === '') {\n if (event.key === 'Backspace') {\n event.preventDefault();\n event.preventBaseUIHandler();\n if (step !== 'field') stepBack();\n else if (targetGroup) {\n // Inside a group: eat its last chip, or drop the group once it is empty.\n const last = targetGroup.nodes.findLast(node => !ctx.leaving.has(node.id));\n if (last) ctx.removeItem(last.id);\n else leaveGroup();\n } else {\n // Chips still animating out are already gone from the value: skip them.\n const last = ctx.items.findLast(item => !ctx.leaving.has(item.id));\n if (last) ctx.removeItem(last.id);\n }\n return;\n }\n if (event.key === 'ArrowLeft' && step === 'field') {\n if (ctx.focusChip(ctx.items.length - 1, -1, 'remove')) event.preventDefault();\n return;\n }\n }\n if (!open) return;\n\n if (event.key === 'Tab' && highlighted && step !== 'value' && (step === 'operator' || query !== '')) {\n event.preventDefault();\n event.preventBaseUIHandler();\n handleSelect(highlighted);\n return;\n }\n if (step === 'value') {\n const highlightedOption = valueStep.hasSuggestions ? (highlighted as FilterBarOption | null) : null;\n const handled = valueStep.handleKeyDown(event, highlightedOption);\n // Base UI closes on Enter when nothing is highlighted (form submission); the draft must stay open.\n if (handled || (event.key === 'Enter' && highlightedOption === null)) event.preventBaseUIHandler();\n }\n };\n\n const optionsForStep: Record<Step, readonly Item[]> = {\n field: visibleFields,\n operator: fieldOperators,\n value: valueStep.options,\n };\n const items: readonly Item[] = emptyForStepChange ? EMPTY_ITEMS : optionsForStep[step];\n\n // A search field is the way out for text that names no field, so it survives the field\n // step's own filtering whatever was typed; every other item matches on its label.\n const filterItem = useCallback(\n (item: Item, text: string, itemToString?: (item: Item) => string) =>\n ('search' in item && item.search === true) || matchesQueryFilter(item, text, itemToString),\n [],\n );\n\n const inputPlaceholder =\n step === 'field'\n ? placeholder\n : step === 'operator'\n ? 'Operator…'\n : valueStep.hasSuggestions && valueStep.allowFreeText\n ? 'Search or type a value…'\n : field?.type === 'number'\n ? 'Number…'\n : 'Value…';\n\n return (\n <>\n <ComboboxPrimitive.Root<Item>\n items={items}\n itemToStringLabel={getItemLabel}\n // The value step is already filtered (locally or server-side) by useValueSuggestions.\n filter={step === 'value' ? null : filterItem}\n value={null}\n onValueChange={(item, details) => {\n // Never let Base UI keep the selection, fill the input or close: each step routes it.\n details.cancel();\n if (item) handleSelect(item);\n }}\n inputValue={query}\n onInputValueChange={(next, details) => {\n if (details.reason !== 'input-change') return;\n setQuery(next);\n if (!open) setOpen(true);\n }}\n onItemHighlighted={item => setHighlighted(item ?? null)}\n open={open}\n onOpenChange={(next, details) => {\n // Escape is handled by the input (it steps back rather than closing).\n if (!next && details.reason === 'escape-key') return;\n // The input is the anchor, not a trigger: clicking it must keep the draft open.\n if (\n !next &&\n details.reason === 'outside-press' &&\n details.event.target instanceof Node &&\n inputRef.current?.contains(details.event.target)\n ) {\n return;\n }\n if (next) setOpen(true);\n else close();\n }}\n {...alwaysHighlightProps}\n modal={false}\n >\n <div\n ref={anchorRef}\n data-slot=\"filter-bar-input-trigger\"\n className={cn(\n // Same trigger recipe as every other DS Combobox (fill, radius, `[&>svg]` icon sizing\n // and the Button icon offset); the bar itself has no chrome. Focus lives on the\n // nested input, so the recipe's `focus-visible` border becomes `focus-within`.\n comboboxTriggerClass({ variant: 'default', size: FILTER_BAR_CONTROL_SIZE }),\n 'w-auto cursor-text',\n 'focus-within:bg-fill-hover',\n inputFocusBorderWithin,\n step === 'field' ? 'min-w-40' : 'min-w-28',\n className,\n )}\n >\n <ListFilterIcon aria-hidden className=\"ml-[-.3em] shrink-0 text-muted-foreground\" />\n <ComboboxPrimitive.Input\n ref={el => {\n inputRef.current = el;\n ctx.registerInput(el);\n }}\n aria-label={ariaLabel}\n spellCheck={false}\n {...passwordManagerOptOutProps}\n data-slot=\"filter-bar-input\"\n data-step={step}\n data-target={targetGroup?.id}\n inputMode={step === 'value' && field?.type === 'number' ? 'decimal' : undefined}\n placeholder={inputPlaceholder}\n className={cn(\n unstyledFormElementStyle,\n 'min-w-0 flex-1 bg-transparent',\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal focus:placeholder:opacity-70',\n )}\n onFocus={() => setOpen(true)}\n onKeyDown={handleKeyDown}\n />\n </div>\n <ComboboxPrimitive.Portal container={container}>\n <ComboboxPrimitive.Positioner\n // Base UI anchors to the input, which starts after the filter icon; align with the pill instead.\n anchor={anchorRef}\n align=\"start\"\n sideOffset={MENU_SIDE_OFFSET}\n positionMethod={FLOATING_POSITION_METHOD}\n className={comboboxStyles.positioner}\n >\n <ComboboxPrimitive.Popup // Match the pill, with the DS Combobox's 11rem floor (replaces the menu's anchor-width minimum).\n className={cn(comboboxStyles.popup, 'w-(--anchor-width) min-w-44')}\n data-slot=\"filter-bar-editor\"\n >\n {step === 'field' && (\n <FilterBarOptionList<FilterBarField>\n aria-label=\"Fields\"\n getKey={f => f.id}\n renderOption={f => (\n <>\n <FilterBarFieldLabel field={f} />\n {f.search && query !== '' && (\n <span className=\"min-w-0 truncate text-muted-foreground\">\n {ctx.getFieldOperators(f)[0]?.label} \"{query}\"\n </span>\n )}\n </>\n )}\n emptyText=\"No matching field.\"\n />\n )}\n {step === 'operator' && (\n <FilterBarOptionList<FilterBarOperator>\n aria-label=\"Operators\"\n getKey={o => o.id}\n renderOption={o => o.label}\n emptyText=\"No matching operator.\"\n />\n )}\n {step === 'value' && valueStep.hasOptions && (\n <FilterBarOptionList<FilterBarOption>\n aria-label=\"Values\"\n aria-multiselectable={valueStep.isMany || undefined}\n getKey={o => o.value}\n renderOption={option => <FilterBarOptionLabel option={option} />}\n isSelected={o => valueStep.isMany && valueStep.selected.includes(o.value)}\n isLoading={valueStep.isLoading}\n error={valueStep.error}\n emptyText={\n valueStep.allowFreeText ? 'No suggestions — press Enter to use your text.' : 'No matching value.'\n }\n />\n )}\n {step === 'value' && !valueStep.hasSuggestions && (\n <div className=\"flex items-center justify-between gap-2 py-1 pr-1 pl-[.9em]\">\n <Txt variant=\"caption\" tone=\"muted\">\n Type a value\n </Txt>\n <Button\n size=\"sm\"\n variant=\"default\"\n disabled={!valueStep.canCommitQuery}\n onMouseDown={e => e.preventDefault()}\n onClick={() => valueStep.submitFreeText()}\n >\n Apply\n <Kbd size=\"xs\">↵</Kbd>\n </Button>\n </div>\n )}\n {step === 'value' && valueStep.isMany && (\n <div className=\"flex items-center justify-end gap-1 border-t border-border p-1\">\n <Button\n size=\"sm\"\n variant=\"default\"\n onMouseDown={e => e.preventDefault()}\n onClick={() => valueStep.commitDone()}\n >\n Done\n <Kbd size=\"xs\">{modEnterLabel}</Kbd>\n </Button>\n </div>\n )}\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n </>\n );\n}\n","import { useEffect } from 'react';\nimport { useFilterBarContext } from './filter-bar-context';\n\n/** Keeps a leaving node in the DOM until its exit animation has played, then releases it. */\nexport function useSettleOnLeave(id: string, leaving: boolean, rootRef: React.RefObject<HTMLElement | null>) {\n const { settleRemove } = useFilterBarContext();\n useEffect(() => {\n const root = rootRef.current;\n if (!leaving || !root) return;\n const animations = typeof root.getAnimations === 'function' ? root.getAnimations({ subtree: true }) : [];\n if (animations.length === 0) {\n settleRemove(id);\n return;\n }\n let cancelled = false;\n Promise.all(animations.map(animation => animation.finished))\n .then(() => {\n if (!cancelled) settleRemove(id);\n })\n .catch(() => {});\n return () => {\n cancelled = true;\n };\n }, [leaving, id, settleRemove, rootRef]);\n}\n","import { FolderIcon, FolderPlusIcon, PlusIcon, Trash2Icon } from 'lucide-react';\nimport { Fragment, useEffect, useRef } from 'react';\nimport type { ReactNode } from 'react';\nimport { FilterBarChip } from './filter-bar-chip';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { FilterBarInput } from './filter-bar-input';\nimport { countLeaves } from './filter-bar-tree';\nimport type { FilterBarGroup, FilterBarLogic } from './types';\nimport { isFilterBarGroup } from './types';\nimport { useSettleOnLeave } from './use-settle-on-leave';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst connectorClass =\n 'flex h-control-sm w-14 shrink-0 items-center justify-center rounded-md text-column tracking-wide text-muted-foreground uppercase';\n\nexport type FilterBarLogicToggleProps = {\n groupId: string;\n logic: FilterBarLogic;\n className?: string;\n};\n\n/** `and` / `or` connector in front of a row; every connector of a group shares its logic. */\nexport function FilterBarLogicToggle({ groupId, logic, className }: FilterBarLogicToggleProps) {\n const ctx = useFilterBarContext();\n const next: FilterBarLogic = logic === 'and' ? 'or' : 'and';\n return (\n <button\n type=\"button\"\n data-slot=\"filter-bar-logic\"\n data-logic={logic}\n aria-label={`Joined with ${logic}, switch to ${next}`}\n title={`Switch to ${next}`}\n className={cn(\n connectorClass,\n 'filter-bar-logic cursor-pointer border border-border bg-fill-subtle outline-none',\n 'hover:bg-fill-hover hover:text-foreground focus-visible:bg-fill-hover focus-visible:text-foreground',\n className,\n )}\n onClick={() => ctx.setLogic(groupId, next)}\n >\n {logic}\n </button>\n );\n}\n\n/** Segmented `and | or` control shown in a nested group's header. */\nfunction FilterBarLogicSwitch({ groupId, logic }: { groupId: string; logic: FilterBarLogic }) {\n const ctx = useFilterBarContext();\n return (\n <div\n role=\"radiogroup\"\n aria-label=\"Group logic\"\n className=\"flex h-control-sm items-center gap-0.5 rounded-md border border-border bg-fill-subtle p-0.5\"\n >\n {(['and', 'or'] as const).map(value => (\n <button\n key={value}\n type=\"button\"\n role=\"radio\"\n aria-checked={logic === value}\n aria-label={`Join with ${value}`}\n className={cn(\n 'h-full cursor-pointer rounded-sm px-1.5 text-column tracking-wide uppercase outline-none',\n 'focus-visible:bg-fill-hover',\n logic === value ? 'bg-fill-hover text-foreground' : 'text-muted-foreground hover:text-foreground',\n )}\n onClick={() => logic !== value && ctx.setLogic(groupId, value)}\n >\n {value}\n </button>\n ))}\n </div>\n );\n}\n\nexport type FilterBarGroupEditorProps = {\n group: FilterBarGroup;\n /** Nesting level of `group` (root-level group = 1). */\n depth: number;\n /** Drops this group; rendered as a trailing `Clear all` in the footer. */\n onRemove?: () => void;\n removeLabel?: string;\n className?: string;\n};\n\n/**\n * Recursive rule builder shown in an advanced-filter popover. Rows are laid out as\n * `connector | condition`: the first row reads `where`, the following ones carry the\n * group's `and` / `or` toggle. Nested groups render as bordered cards with their own\n * header (logic switch + remove) and footer. The shared typeahead input renders as the\n * last row of the group it is pointed at.\n */\nexport function FilterBarGroupEditor({\n group,\n depth,\n onRemove,\n removeLabel = 'Remove group',\n className,\n}: FilterBarGroupEditorProps) {\n const ctx = useFilterBarContext();\n const addFilterRef = useRef<HTMLButtonElement>(null);\n const focusAddFilter = useRef(false);\n const targeted = ctx.inputTarget === group.id;\n const canNest = depth < ctx.maxDepth;\n\n // `+ Condition` is hidden while the input is open; focus it once it remounts.\n useEffect(() => {\n if (targeted || !focusAddFilter.current) return;\n focusAddFilter.current = false;\n addFilterRef.current?.focus();\n }, [targeted]);\n\n const rows: ReactNode[] = [];\n const connector = (key: string) =>\n rows.length === 0 ? (\n <span key={`${key}:where`} className={connectorClass}>\n where\n </span>\n ) : (\n <FilterBarLogicToggle key={`${key}:logic`} groupId={group.id} logic={group.logic} />\n );\n for (const node of group.nodes) {\n rows.push(\n <Fragment key={node.id}>\n {connector(node.id)}\n {isFilterBarGroup(node) ? (\n <NestedGroupCard group={node} depth={depth + 1} />\n ) : (\n <FilterBarChip item={node} className=\"w-fit\" />\n )}\n </Fragment>,\n );\n }\n if (ctx.draft && ctx.draft.groupId === group.id) {\n const { id, fieldId, operatorId = '' } = ctx.draft;\n rows.push(\n <Fragment key={id}>\n {connector(id)}\n <FilterBarChip draft item={{ id, fieldId, operatorId, value: '' }} className=\"w-fit\" />\n </Fragment>,\n );\n }\n if (targeted) {\n rows.push(\n <Fragment key=\"input\">\n {connector('input')}\n <FilterBarInput\n groupId={group.id}\n placeholder=\"Add condition…\"\n onLeave={() => {\n focusAddFilter.current = true;\n }}\n />\n </Fragment>,\n );\n }\n\n return (\n <div\n data-slot=\"filter-bar-group-editor\"\n data-depth={depth}\n role=\"group\"\n aria-label={`Conditions joined with ${group.logic}`}\n className={cn('flex min-w-0 flex-col', className)}\n >\n {rows.length > 0 && (\n <div className=\"grid grid-cols-[auto_minmax(0,1fr)] items-start gap-x-2 gap-y-1.5 p-2\">{rows}</div>\n )}\n <div\n data-slot=\"filter-bar-editor-actions\"\n className={cn('flex w-full items-center gap-1 p-1', rows.length > 0 && 'border-t border-border')}\n >\n {!targeted && (\n <Button\n ref={addFilterRef}\n variant=\"ghost\"\n size=\"sm\"\n icon={<PlusIcon />}\n onClick={() => ctx.openGroupInput(group.id)}\n >\n Condition\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n icon={<FolderPlusIcon />}\n className=\"text-muted-foreground\"\n tooltip={canNest ? undefined : `Groups can nest ${ctx.maxDepth} levels deep`}\n disabled={!canNest}\n onClick={() => ctx.addGroup(group.id, group.logic === 'and' ? 'or' : 'and')}\n >\n Group\n </Button>\n {onRemove && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n icon={<Trash2Icon />}\n className=\"ml-auto text-muted-foreground\"\n aria-label={removeLabel}\n onClick={onRemove}\n >\n Clear all\n </Button>\n )}\n </div>\n </div>\n );\n}\n\nfunction NestedGroupCard({ group, depth }: { group: FilterBarGroup; depth: number }) {\n const ctx = useFilterBarContext();\n const rootRef = useRef<HTMLDivElement>(null);\n const leaving = ctx.leaving.has(group.id);\n useSettleOnLeave(group.id, leaving, rootRef);\n const count = countLeaves(group);\n\n return (\n <div\n ref={rootRef}\n data-slot=\"filter-bar-editor-nested\"\n data-leaving={leaving || undefined}\n aria-hidden={leaving || undefined}\n className={cn(\n 'filter-bar-editor-nested w-full overflow-hidden rounded-lg border border-border',\n leaving && 'pointer-events-none',\n )}\n >\n <div className=\"flex items-center gap-2 border-b border-border px-2 py-1\">\n <FolderIcon className=\"size-3.5 text-muted-foreground\" />\n <Txt as=\"span\" variant=\"label\" tone=\"ink\">\n Group\n </Txt>\n <Txt as=\"span\" variant=\"label\" tone=\"muted\">\n · {count} {count === 1 ? 'condition' : 'conditions'}\n </Txt>\n <div className=\"ml-auto flex items-center gap-1\">\n <FilterBarLogicSwitch groupId={group.id} logic={group.logic} />\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Remove group\"\n disabled={leaving}\n onClick={() => ctx.removeGroup(group.id)}\n >\n <Trash2Icon />\n </Button>\n </div>\n </div>\n <FilterBarGroupEditor group={group} depth={depth} />\n </div>\n );\n}\n","import { BracesIcon, XIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport type { KeyboardEvent } from 'react';\nimport { chipClass, editableSegmentClass } from './filter-bar-chip';\nimport { FILTER_BAR_SCOPE_ATTR, useFilterBarContext } from './filter-bar-context';\nimport { FilterBarGroupEditor } from './filter-bar-group-editor';\nimport { countLeaves } from './filter-bar-tree';\nimport type { FilterBarGroup } from './types';\nimport { useSettleOnLeave } from './use-settle-on-leave';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport type FilterBarAdvancedChipProps = {\n group: FilterBarGroup;\n className?: string;\n};\n\n/**\n * A root-level group rendered as one \"Advanced filter\" chip. Its popover hosts the\n * recursive rule builder; the chip's remove button drops the whole subtree.\n */\nexport function FilterBarAdvancedChip({ group, className }: FilterBarAdvancedChipProps) {\n const ctx = useFilterBarContext();\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const leaving = ctx.leaving.has(group.id);\n const open = ctx.openGroupId === group.id;\n const count = countLeaves(group);\n // Position in the flattened item list: navigation from the chip continues from its first leaf.\n const firstLeafIndex = ctx.items.findIndex(item => isUnder(group, item.id));\n const index = firstLeafIndex === -1 ? ctx.items.length : firstLeafIndex;\n useSettleOnLeave(group.id, leaving, rootRef);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (leaving) return;\n const segments = Array.from(rootRef.current?.querySelectorAll<HTMLElement>('[data-filter-bar-segment]') ?? []);\n const current = segments.findIndex(el => el === event.target);\n if (current === -1) return;\n switch (event.key) {\n case 'ArrowRight': {\n event.preventDefault();\n const next = segments[current + 1];\n if (next) next.focus();\n else if (!ctx.focusChip(index + count, 1, 'field')) ctx.focusInput();\n return;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n const prev = segments[current - 1];\n if (prev) prev.focus();\n else ctx.focusChip(index - 1, -1, 'remove');\n return;\n }\n case 'Delete':\n case 'Backspace':\n event.preventDefault();\n remove();\n return;\n default:\n }\n };\n\n const remove = () => {\n ctx.removeGroup(group.id);\n ctx.focusAfterRemove(index);\n };\n\n return (\n <Popover open={open} onOpenChange={next => ctx.setOpenGroup(next ? group.id : null)}>\n <div\n ref={rootRef}\n role=\"group\"\n aria-label={`Advanced filter, ${count} ${count === 1 ? 'condition' : 'conditions'}`}\n aria-hidden={leaving || undefined}\n data-slot=\"filter-bar-advanced\"\n data-leaving={leaving || undefined}\n className={cn('filter-bar-advanced', chipClass, leaving && 'pointer-events-none', className)}\n onKeyDown={handleKeyDown}\n >\n <PopoverTrigger\n ref={el => {\n triggerRef.current = el;\n ctx.registerSegment(group.id, 'field', leaving ? null : el);\n }}\n render={<button type=\"button\" />}\n data-filter-bar-segment=\"field\"\n className={cn(editableSegmentClass, 'gap-1.5')}\n title=\"Edit advanced filter\"\n >\n <BracesIcon className=\"size-[1.1em] shrink-0\" aria-hidden />\n <span className=\"truncate\">Advanced filter</span>\n {count > 0 && (\n <Txt as=\"span\" variant=\"column\" tone=\"muted\" aria-hidden>\n {count}\n </Txt>\n )}\n </PopoverTrigger>\n {leaving ? (\n <span aria-hidden className={cn(editableSegmentClass, 'px-1.5')}>\n <XIcon className=\"size-[1.1em]\" />\n </span>\n ) : (\n <button\n type=\"button\"\n ref={el => ctx.registerSegment(group.id, 'remove', el)}\n data-filter-bar-segment=\"remove\"\n aria-label=\"Remove advanced filter\"\n title=\"Remove advanced filter\"\n className={cn(editableSegmentClass, 'px-1.5')}\n onClick={remove}\n >\n <XIcon className=\"size-[1.1em]\" />\n </button>\n )}\n </div>\n <PopoverContent\n align=\"start\"\n className=\"w-[min(92vw,44rem)] p-0\"\n {...{ [FILTER_BAR_SCOPE_ATTR]: 'advanced' }}\n finalFocus={triggerRef}\n >\n <div className=\"flex items-center gap-2 border-b border-border px-3 py-2\">\n <BracesIcon className=\"size-3.5 text-muted-foreground\" />\n <Txt as=\"span\" variant=\"label\" tone=\"ink\">\n Advanced filter\n </Txt>\n <Txt as=\"span\" variant=\"column\" tone=\"muted\" className=\"rounded-md bg-fill-subtle px-1.5\">\n {count}\n </Txt>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"ml-auto\"\n tooltip=\"Close\"\n onClick={() => ctx.setOpenGroup(null)}\n >\n <XIcon />\n </Button>\n </div>\n <FilterBarGroupEditor\n group={group}\n depth={1}\n removeLabel=\"Remove advanced filter\"\n onRemove={() => {\n ctx.setOpenGroup(null);\n remove();\n }}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\nconst isUnder = (group: FilterBarGroup, itemId: string): boolean =>\n group.nodes.some(node => (node.id === itemId ? true : 'kind' in node && isUnder(node, itemId)));\n","import { XIcon } from 'lucide-react';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { Button } from '@/ds/components/Button/Button';\n\n/** Removes every removable filter. Rendered by FilterBar at its trailing edge; hidden while nothing can be removed. */\nexport function FilterBarClear({ label }: { label: string }) {\n const ctx = useFilterBarContext();\n if (!ctx.hasRemovableItems) return null;\n return (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={label}\n tooltip={label}\n onClick={event => {\n event.stopPropagation();\n ctx.clear();\n ctx.focusInput();\n }}\n >\n <XIcon />\n </Button>\n );\n}\n","import { Fragment } from 'react';\nimport type { ReactNode } from 'react';\nimport { FilterBarAdvancedChip } from './filter-bar-advanced-chip';\nimport { FilterBarChip } from './filter-bar-chip';\nimport { FilterBarClear } from './filter-bar-clear';\nimport { FILTER_BAR_SCOPE_ATTR, FilterBarProvider, useFilterBarContext } from './filter-bar-context';\nimport { FilterBarInput } from './filter-bar-input';\nimport { isFilterBarGroup } from './types';\nimport type { FilterBarExpression, FilterBarField, FilterBarItem, FilterBarOperator } from './types';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\ntype FilterBarValueProps =\n | {\n /** Flat list of filters, implicitly joined with `and`. Advanced filters are never offered. */\n value: FilterBarItem[];\n onValueChange: (items: FilterBarItem[]) => void;\n }\n | {\n /**\n * Tree of filters and groups. Root nodes are joined with `and`; each root group renders\n * as one \"Advanced filter\" chip whose popover edits the nested `and` / `or` logic.\n */\n value: FilterBarExpression;\n onValueChange: (expression: FilterBarExpression) => void;\n };\n\nexport type FilterBarProps = FilterBarValueProps & {\n fields: FilterBarField[];\n operators: FilterBarOperator[];\n /**\n * Id given to a newly added item. Defaults to a random id. Consumers that rebuild `value` from\n * their own store (URL, query params…) should return the id they will rebuild it with, so the\n * draft chip and the committed chip are the same element.\n */\n createItemId?: (fieldId: string) => string;\n /** How deep advanced-filter groups may nest (root-level group = 1). Defaults to 3. */\n maxDepth?: number;\n 'aria-label'?: string;\n /**\n * Text shown in a value list when the field's `suggestions` resolver rejects, for example\n * to explain a server limit. Return `undefined` to keep the default \"Couldn't load values.\".\n */\n describeSuggestionsError?: (error: unknown) => string | undefined;\n /** Accessible label of the trailing \"remove every filter\" button. */\n clearLabel?: string;\n className?: string;\n children: ReactNode;\n};\n\nfunction FilterBarSurface({\n className,\n clearLabel,\n children,\n}: {\n className?: string;\n clearLabel: string;\n children: ReactNode;\n}) {\n const ctx = useFilterBarContext();\n return (\n <div\n role=\"group\"\n aria-label={ctx.ariaLabel}\n data-slot=\"filter-bar\"\n {...{ [FILTER_BAR_SCOPE_ATTR]: 'bar' }}\n className={cn(\n // No chrome of its own: chips and the typeahead input sit directly on the parent surface.\n // Layout: chips, input, then Clear right beside the input — all in one wrapping row so\n // Clear never drifts to the far edge of a wide container.\n 'flex w-full flex-wrap items-center gap-1',\n className,\n )}\n >\n {children}\n <span className=\"flex shrink-0 items-center empty:hidden\">\n <FilterBarClear label={clearLabel} />\n </span>\n <VisuallyHidden aria-live=\"polite\">{ctx.announcement}</VisuallyHidden>\n </div>\n );\n}\n\n/**\n * Braintrust-style filter bar: `field → operator → value` filters built from a\n * single typeahead input, rendered as inline editable chips. Domain-agnostic —\n * fields, operators and values are plain strings supplied by the consumer.\n *\n * Pass a `FilterBarExpression` as `value` to enable Linear-style advanced filters:\n * the input offers \"Advanced filter…\", which adds one chip whose popover hosts a\n * recursive rule builder (`and` / `or` connectors, nested groups). The bar itself\n * stays flat. A flat `FilterBarItem[]` stays flat.\n *\n * @example\n * <FilterBar value={items} onValueChange={setItems} fields={fields} operators={DEFAULT_FILTER_OPERATORS}>\n * <FilterBar.Chips />\n * <FilterBar.Input />\n * </FilterBar>\n */\nexport function FilterBar({\n fields,\n operators,\n value,\n onValueChange,\n createItemId,\n maxDepth,\n 'aria-label': ariaLabel = 'Filters',\n describeSuggestionsError,\n clearLabel = 'Clear filters',\n className,\n children,\n}: FilterBarProps) {\n return (\n <FilterBarProvider\n fields={fields}\n operators={operators}\n value={value}\n onValueChange={onValueChange}\n createItemId={createItemId}\n maxDepth={maxDepth}\n ariaLabel={ariaLabel}\n describeSuggestionsError={describeSuggestionsError}\n >\n <FilterBarSurface className={className} clearLabel={clearLabel}>\n {children}\n </FilterBarSurface>\n </FilterBarProvider>\n );\n}\n\n/**\n * Default layout: one editable chip per root item, one \"Advanced filter\" chip per root\n * group, in order, then the chip of the filter being built in the bar's input (which\n * becomes the last item's chip once committed).\n */\nexport function FilterBarChips({ renderChip = defaultRenderChip }: FilterBarChipsProps) {\n const ctx = useFilterBarContext();\n // One keyed array: the draft chip and the item it becomes share a key, so React\n // keeps the element across the commit instead of mounting a new chip.\n const chips: ReactNode[] = [];\n for (const node of ctx.expression.nodes) {\n const chip = isFilterBarGroup(node) ? <FilterBarAdvancedChip group={node} /> : renderChip(node);\n if (chip !== null) chips.push(<Fragment key={node.id}>{chip}</Fragment>);\n }\n if (ctx.draft && !ctx.draft.groupId) {\n // `FilterBarChip` needs a full item; the draft's missing parts are blank until picked.\n const { id, fieldId, operatorId = '' } = ctx.draft;\n chips.push(\n <Fragment key={id}>\n <FilterBarChip draft item={{ id, fieldId, operatorId, value: '' }} />\n </Fragment>,\n );\n }\n return <>{chips}</>;\n}\n\nexport type FilterBarChipsProps = {\n /**\n * Chip for an item; return `null` to render none (e.g. an item only held in the\n * value for scoping). Defaults to a plain editable `FilterBar.Chip`.\n */\n renderChip?: (item: FilterBarItem) => ReactNode;\n};\n\nconst defaultRenderChip = (item: FilterBarItem) => <FilterBarChip item={item} />;\n\nFilterBar.Chips = FilterBarChips;\nFilterBar.Chip = FilterBarChip;\nFilterBar.AdvancedChip = FilterBarAdvancedChip;\nFilterBar.Input = FilterBarInput;\n","import type { FilterBarOperator } from './types';\n\n/** Opt-in starter set. Pure data: the component attaches no semantics to ids. */\nexport const DEFAULT_FILTER_OPERATORS: FilterBarOperator[] = [\n { id: 'is', label: 'is', widensTo: 'in' },\n { id: 'is-not', label: 'is not' },\n { id: 'contains', label: 'contains' },\n { id: 'not-contains', label: 'does not contain' },\n { id: 'starts-with', label: 'starts with' },\n { id: 'gt', label: '>' },\n { id: 'lt', label: '<' },\n { id: 'gte', label: '>=' },\n { id: 'lte', label: '<=' },\n { id: 'is-empty', label: 'is empty', arity: 'none' },\n { id: 'is-not-empty', label: 'is not empty', arity: 'none' },\n { id: 'in', label: 'in', arity: 'many' },\n];\n"],"names":["BracesIcon","useFilterBarContext","jsx","usePortalContainer","useRef","useState","useIsApplePlatform","useMemo","findGroup","useEffect","useCallback","flushSync","parseFieldValue","useValueStep","matchesQueryFilter","Fragment","jsxs","ComboboxPrimitive","alwaysHighlightProps","cn","comboboxTriggerClass","FILTER_BAR_CONTROL_SIZE","inputFocusBorderWithin","ListFilterIcon","passwordManagerOptOutProps","unstyledFormElementStyle","MENU_SIDE_OFFSET","FLOATING_POSITION_METHOD","comboboxStyles","FilterBarOptionList","FilterBarFieldLabel","FilterBarOptionLabel","Txt","Button","Kbd","isFilterBarGroup","FilterBarChip","PlusIcon","FolderPlusIcon","Trash2Icon","countLeaves","FolderIcon","Popover","chipClass","PopoverTrigger","editableSegmentClass","XIcon","PopoverContent","FILTER_BAR_SCOPE_ATTR","VisuallyHidden","FilterBarProvider"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { useRef, useState, useMemo, useEffect, useCallback, Fragment as Fragment$1 } from 'react';
3
- import { BracesIcon, ListFilterIcon, Search, PlusIcon, FolderPlusIcon, Trash2Icon, FolderIcon, XIcon } from 'lucide-react';
4
- import { u as useFilterBarContext, b as findGroup, c as useValueStep, m as matchesQueryFilter, d as alwaysHighlightProps, g as FILTER_BAR_CONTROL_SIZE, h as FilterBarOptionList, a as FilterBarFieldLabel, i as FilterBarOptionLabel, F as FilterBarChip, j as countLeaves, e as editableSegmentClass, k as chipClass, l as FILTER_BAR_SCOPE_ATTR, n as FilterBarProvider } from '../filter-bar-chip-BarAq1S2.js';
5
- export { o as FilterBarChipField, p as FilterBarChipOperator, q as FilterBarChipRemove, r as FilterBarChipValue } from '../filter-bar-chip-BarAq1S2.js';
3
+ import { BracesIcon, ListFilterIcon, PlusIcon, FolderPlusIcon, Trash2Icon, FolderIcon, XIcon } from 'lucide-react';
4
+ import { u as useFilterBarContext, b as findGroup, c as useValueStep, m as matchesQueryFilter, d as alwaysHighlightProps, g as FILTER_BAR_CONTROL_SIZE, h as FilterBarOptionList, a as FilterBarFieldLabel, i as FilterBarOptionLabel, F as FilterBarChip, j as countLeaves, e as editableSegmentClass, k as chipClass, l as FILTER_BAR_SCOPE_ATTR, n as FilterBarProvider } from '../filter-bar-chip-C9CXOudu.js';
5
+ export { o as FilterBarChipField, p as FilterBarChipOperator, q as FilterBarChipRemove, r as FilterBarChipValue } from '../filter-bar-chip-C9CXOudu.js';
6
6
  import { flushSync } from 'react-dom';
7
7
  import { p as parseFieldValue, i as isFilterBarGroup } from '../types-CIPrYAzY.js';
8
- import { B as Button } from '../Button-EGoajBQY.js';
9
- import { a as comboboxTriggerClass, c as comboboxStyles } from '../combobox-styles-Dr66ofEp.js';
8
+ import { B as Button } from '../Button-D8a5EWJ5.js';
9
+ import { a as comboboxTriggerClass, c as comboboxStyles } from '../combobox-styles-Cens2tsx.js';
10
10
  import { Combobox } from '@base-ui/react/combobox';
11
11
  import { K as Kbd } from '../kbd-7Xx2pm9f.js';
12
12
  import { T as Txt } from '../Txt-BtIGLRk1.js';
@@ -44,6 +44,7 @@ function FilterBarInputImpl({
44
44
  const ctx = useFilterBarContext();
45
45
  const container = usePortalContainer();
46
46
  const inputRef = useRef(null);
47
+ const anchorRef = useRef(null);
47
48
  const [open, setOpen] = useState(false);
48
49
  const [query, setQuery] = useState("");
49
50
  const [highlighted, setHighlighted] = useState(null);
@@ -209,7 +210,6 @@ function FilterBarInputImpl({
209
210
  (item, text, itemToString) => "search" in item && item.search === true || matchesQueryFilter(item, text, itemToString),
210
211
  []
211
212
  );
212
- const searchPlaceholder = step === "field" ? "Search fields…" : step === "operator" ? "Search operators…" : "Search values…";
213
213
  const inputPlaceholder = step === "field" ? placeholder : step === "operator" ? "Operator…" : valueStep.hasSuggestions && valueStep.allowFreeText ? "Search or type a value…" : field?.type === "number" ? "Number…" : "Value…";
214
214
  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
215
215
  Combobox.Root,
@@ -244,6 +244,7 @@ function FilterBarInputImpl({
244
244
  /* @__PURE__ */ jsxs(
245
245
  "div",
246
246
  {
247
+ ref: anchorRef,
247
248
  "data-slot": "filter-bar-input-trigger",
248
249
  className: cn(
249
250
  // Same trigger recipe as every other DS Combobox (fill, radius, `[&>svg]` icon sizing
@@ -257,7 +258,7 @@ function FilterBarInputImpl({
257
258
  className
258
259
  ),
259
260
  children: [
260
- /* @__PURE__ */ jsx(ListFilterIcon, { "aria-hidden": true, className: "-ml-[.3em] shrink-0 text-muted-foreground" }),
261
+ /* @__PURE__ */ jsx(ListFilterIcon, { "aria-hidden": true, className: "ml-[-.3em] shrink-0 text-muted-foreground" }),
261
262
  /* @__PURE__ */ jsx(
262
263
  Combobox.Input,
263
264
  {
@@ -288,6 +289,7 @@ function FilterBarInputImpl({
288
289
  /* @__PURE__ */ jsx(Combobox.Portal, { container, children: /* @__PURE__ */ jsx(
289
290
  Combobox.Positioner,
290
291
  {
292
+ anchor: anchorRef,
291
293
  align: "start",
292
294
  sideOffset: MENU_SIDE_OFFSET,
293
295
  positionMethod: FLOATING_POSITION_METHOD,
@@ -295,34 +297,9 @@ function FilterBarInputImpl({
295
297
  children: /* @__PURE__ */ jsxs(
296
298
  Combobox.Popup,
297
299
  {
298
- className: cn(comboboxStyles.popup, "min-w-56"),
300
+ className: cn(comboboxStyles.popup, "w-(--anchor-width) min-w-44"),
299
301
  "data-slot": "filter-bar-editor",
300
302
  children: [
301
- (step !== "value" || valueStep.hasSuggestions) && // Search row mirroring the bar input, so the popup reads as a searchable combobox.
302
- // The bar input stays the only real input: focus and keyboard navigation never move.
303
- /* @__PURE__ */ jsxs(
304
- "div",
305
- {
306
- className: cn(comboboxStyles.searchContainer, "cursor-text"),
307
- "data-slot": "filter-bar-search",
308
- onMouseDown: (e) => e.preventDefault(),
309
- onClick: () => inputRef.current?.focus(),
310
- children: [
311
- /* @__PURE__ */ jsx(Search, { className: comboboxStyles.searchIcon }),
312
- /* @__PURE__ */ jsx(
313
- "span",
314
- {
315
- className: cn(
316
- comboboxStyles.searchInput,
317
- "flex items-center truncate",
318
- query === "" && comboboxStyles.placeholder
319
- ),
320
- children: query === "" ? searchPlaceholder : query
321
- }
322
- )
323
- ]
324
- }
325
- ),
326
303
  step === "field" && /* @__PURE__ */ jsx(
327
304
  FilterBarOptionList,
328
305
  {