@mastra/playground-ui 65.0.0-alpha.3 → 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 -4
  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 -4
  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 -2
  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 -2
  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 +10 -12
  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 +0,0 @@
1
- {"version":3,"file":"filter-bar-chip-BarAq1S2.js","sources":["../src/ds/components/FilterBar/filter-bar-tree.ts","../src/ds/components/FilterBar/filter-bar-context.tsx","../src/ds/components/FilterBar/filter-bar-option-list.tsx","../src/ds/components/FilterBar/match-query.ts","../src/ds/components/FilterBar/use-value-suggestions.ts","../src/ds/components/FilterBar/use-value-step.ts","../src/ds/components/FilterBar/filter-bar-chip.tsx"],"sourcesContent":["import type {\n FilterBarExpression,\n FilterBarGroup,\n FilterBarItem,\n FilterBarLogic,\n FilterBarNode,\n FilterBarOperator,\n} from './types';\nimport { isFilterBarGroup } from './types';\n\nexport type FilterBarValueInput = FilterBarItem[] | FilterBarExpression;\n\nexport const ROOT_GROUP_ID = 'root';\n\nexport const normalize = (value: FilterBarValueInput): FilterBarExpression =>\n Array.isArray(value) ? { logic: 'and', nodes: value } : value;\n\n/** Hands back the shape the consumer gave us: flat arrays only ever contain items. */\nexport const denormalize = (expr: FilterBarExpression, flat: boolean): FilterBarValueInput =>\n flat ? expr.nodes.filter((node): node is FilterBarItem => !isFilterBarGroup(node)) : expr;\n\nexport type FlatEntry = { item: FilterBarItem; groupId?: string };\n\n/**\n * Items in document order (pre-order, depth-first), each tagged with the group it lives\n * in. A group's leaves sit where its advanced chip sits in the bar, so arrow navigation\n * walks the bar left to right.\n */\nexport const flattenItems = (expr: FilterBarExpression): FlatEntry[] => {\n const out: FlatEntry[] = [];\n const walk = (nodes: FilterBarNode[], groupId: string | undefined) => {\n for (const node of nodes) {\n if (isFilterBarGroup(node)) walk(node.nodes, node.id);\n else out.push(groupId ? { item: node, groupId } : { item: node });\n }\n };\n walk(expr.nodes, undefined);\n return out;\n};\n\nconst findGroupIn = (nodes: FilterBarNode[], groupId: string): FilterBarGroup | undefined => {\n for (const node of nodes) {\n if (!isFilterBarGroup(node)) continue;\n if (node.id === groupId) return node;\n const nested = findGroupIn(node.nodes, groupId);\n if (nested) return nested;\n }\n return undefined;\n};\n\nexport const findGroup = (expr: FilterBarExpression, groupId: string): FilterBarGroup | undefined =>\n findGroupIn(expr.nodes, groupId);\n\nexport const findItem = (expr: FilterBarExpression, itemId: string): FlatEntry | undefined =>\n flattenItems(expr).find(entry => entry.item.id === itemId);\n\n/** Nesting level of a group: root-level groups are at depth 1; `0` when not found. */\nexport const groupDepth = (expr: FilterBarExpression, groupId: string): number => {\n const walk = (nodes: FilterBarNode[], depth: number): number => {\n for (const node of nodes) {\n if (!isFilterBarGroup(node)) continue;\n if (node.id === groupId) return depth;\n const nested = walk(node.nodes, depth + 1);\n if (nested) return nested;\n }\n return 0;\n };\n return walk(expr.nodes, 1);\n};\n\n/** Number of leaf conditions under a group, at any depth. */\nexport const countLeaves = (group: FilterBarGroup): number =>\n group.nodes.reduce((sum, node) => sum + (isFilterBarGroup(node) ? countLeaves(node) : 1), 0);\n\n/** Ids of a group and every node below it. */\nexport const collectIds = (group: FilterBarGroup): string[] => [\n group.id,\n ...group.nodes.flatMap(node => (isFilterBarGroup(node) ? collectIds(node) : [node.id])),\n];\n\nconst mapGroup = (\n nodes: FilterBarNode[],\n groupId: string,\n fn: (group: FilterBarGroup) => FilterBarGroup,\n): FilterBarNode[] =>\n nodes.map(node => {\n if (!isFilterBarGroup(node)) return node;\n return node.id === groupId ? fn(node) : { ...node, nodes: mapGroup(node.nodes, groupId, fn) };\n });\n\nconst mapItems = (nodes: FilterBarNode[], fn: (item: FilterBarItem) => FilterBarItem): FilterBarNode[] =>\n nodes.map(node => (isFilterBarGroup(node) ? { ...node, nodes: mapItems(node.nodes, fn) } : fn(node)));\n\nconst filterNodes = (nodes: FilterBarNode[], keep: (node: FilterBarNode) => boolean): FilterBarNode[] =>\n nodes.filter(keep).map(node => (isFilterBarGroup(node) ? { ...node, nodes: filterNodes(node.nodes, keep) } : node));\n\nexport const updateItem = (\n expr: FilterBarExpression,\n itemId: string,\n patch: Partial<Omit<FilterBarItem, 'id'>>,\n): FilterBarExpression => ({\n ...expr,\n nodes: mapItems(expr.nodes, item => (item.id === itemId ? { ...item, ...patch } : item)),\n});\n\n/** Removes an item or a group by id at any depth. Groups left empty are kept (see `pruneEmptyGroups`). */\nexport const removeNode = (expr: FilterBarExpression, id: string): FilterBarExpression => ({\n ...expr,\n nodes: filterNodes(expr.nodes, node => node.id !== id),\n});\n\nexport const removeNodes = (expr: FilterBarExpression, ids: Iterable<string>): FilterBarExpression => {\n const drop = new Set(ids);\n return { ...expr, nodes: filterNodes(expr.nodes, node => !drop.has(node.id)) };\n};\n\nconst pruneNodes = (nodes: FilterBarNode[]): FilterBarNode[] =>\n nodes.flatMap((node): FilterBarNode[] => {\n if (!isFilterBarGroup(node)) return [node];\n const pruned = pruneNodes(node.nodes);\n return pruned.length === 0 ? [] : [{ ...node, nodes: pruned }];\n });\n\n/** Drops every group with no leaf left, bottom-up. */\nexport const pruneEmptyGroups = (expr: FilterBarExpression): FilterBarExpression => ({\n ...expr,\n nodes: pruneNodes(expr.nodes),\n});\n\nexport const insertItem = (\n expr: FilterBarExpression,\n groupId: string | undefined,\n item: FilterBarItem,\n): FilterBarExpression => {\n if (!groupId || groupId === ROOT_GROUP_ID) return { ...expr, nodes: [...expr.nodes, item] };\n return { ...expr, nodes: mapGroup(expr.nodes, groupId, group => ({ ...group, nodes: [...group.nodes, item] })) };\n};\n\ntype FilterBarCondition = Pick<FilterBarItem, 'operatorId' | 'value'>;\n\n/**\n * Folds a new filter into the one its field already holds. Both values join under the `many`\n * operator they share (`is a` + `is b` → `is any of a, b`) when the field allows it; otherwise\n * the new filter replaces the old one. `operators` are the ones the field allows.\n */\nexport const mergeCondition = (\n existing: FilterBarCondition,\n next: FilterBarCondition,\n operators: FilterBarOperator[],\n): FilterBarCondition => {\n const manyOf = (operatorId: string) => {\n const operator = operators.find(o => o.id === operatorId);\n return operator?.arity === 'many' ? operator.id : operator?.widensTo;\n };\n const many = manyOf(existing.operatorId);\n if (!many || many !== manyOf(next.operatorId) || !operators.some(o => o.id === many)) return next;\n const values = [existing.value, next.value].flat().filter(v => v !== '');\n return { operatorId: many, value: values.filter((v, i) => values.indexOf(v) === i) };\n};\n\nexport const setGroupLogic = (\n expr: FilterBarExpression,\n groupId: string,\n logic: FilterBarLogic,\n): FilterBarExpression => {\n if (groupId === ROOT_GROUP_ID) return { ...expr, logic };\n return { ...expr, nodes: mapGroup(expr.nodes, groupId, group => ({ ...group, logic })) };\n};\n\n/** Appends a group to the root, or inside `parentId`. */\nexport const createGroup = (\n expr: FilterBarExpression,\n parentId: string | undefined,\n group: FilterBarGroup,\n): FilterBarExpression => {\n if (!parentId || parentId === ROOT_GROUP_ID) return { ...expr, nodes: [...expr.nodes, group] };\n return { ...expr, nodes: mapGroup(expr.nodes, parentId, parent => ({ ...parent, nodes: [...parent.nodes, group] })) };\n};\n\n/** Drops removable items at any depth and every group that ends up empty; pinned items stay. */\nexport const clearRemovable = (expr: FilterBarExpression, pinned: ReadonlySet<string>): FilterBarExpression =>\n pruneEmptyGroups({\n ...expr,\n nodes: filterNodes(expr.nodes, node => isFilterBarGroup(node) || pinned.has(node.id)),\n });\n","/* eslint-disable react-refresh/only-export-components */\nimport { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport {\n clearRemovable,\n collectIds,\n createGroup,\n denormalize,\n findGroup,\n flattenItems,\n groupDepth,\n insertItem,\n mergeCondition,\n normalize,\n pruneEmptyGroups,\n removeNode,\n setGroupLogic,\n updateItem as updateTreeItem,\n} from './filter-bar-tree';\nimport type { FilterBarValueInput } from './filter-bar-tree';\nimport { isFilterBarGroup } from './types';\nimport type {\n DraftStage,\n FilterBarCommit,\n FilterBarDraft,\n FilterBarExpression,\n FilterBarField,\n FilterBarGroup,\n FilterBarItem,\n FilterBarLogic,\n FilterBarNode,\n FilterBarOperator,\n FilterBarSegment,\n FilterBarValue,\n} from './types';\n\ntype SegmentKey = `${string}:${FilterBarSegment}`;\n\nconst SEGMENTS_LEFT_TO_RIGHT: FilterBarSegment[] = ['field', 'operator', 'value', 'remove'];\nconst SEGMENTS_RIGHT_TO_LEFT: FilterBarSegment[] = [...SEGMENTS_LEFT_TO_RIGHT].reverse();\n\n/** Default nesting bound for advanced-filter groups (root-level group = depth 1). */\nexport const DEFAULT_MAX_GROUP_DEPTH = 3;\n\n/**\n * Marks a focus scope: the bar and each open advanced-filter popover. Arrow navigation\n * never crosses scopes, so ←/→ inside a popover cannot land back in the bar.\n */\nexport const FILTER_BAR_SCOPE_ATTR = 'data-filter-bar-scope';\n\nconst scopeOf = (el: Element | null | undefined) => el?.closest(`[${FILTER_BAR_SCOPE_ATTR}]`) ?? null;\n\nconst stageOf = (draft: FilterBarDraft | null): DraftStage => {\n if (!draft) return 'none';\n return draft.operatorId ? 'operator' : 'field';\n};\n\nexport type FilterBarContextValue = {\n fields: FilterBarField[];\n operators: FilterBarOperator[];\n /** Every rendered item in visual order (groups flattened), including leaving ones. */\n items: FilterBarItem[];\n /** The rendered tree, including the pending commit and leaving nodes. */\n expression: FilterBarExpression;\n /** False when the consumer passed a flat `FilterBarItem[]`: no groups are offered. */\n groupsEnabled: boolean;\n /** Deepest allowed group nesting (root-level group = 1). */\n maxDepth: number;\n /** Filter under construction in the input, once a field is picked; `null` otherwise. */\n draft: FilterBarDraft | null;\n /** Progress or reset the draft. Its id is assigned on first field pick and kept afterwards. */\n setDraft: (next: Omit<FilterBarDraft, 'id' | 'from' | 'groupId'> | null) => void;\n /** Append an item for the draft, reusing its id so the draft chip becomes the item's chip. */\n commitDraft: (next: Required<Omit<FilterBarDraft, 'id' | 'from' | 'groupId'>>, value: FilterBarValue) => void;\n /** The draft that just became an item, until its chip has glinted or the bar moves on. */\n lastCommit: FilterBarCommit | null;\n settleCommit: () => void;\n updateItem: (id: string, patch: Partial<Omit<FilterBarItem, 'id'>>) => void;\n /** Removes a leaf. Its group stays, even empty, until the popover closes (see `setOpenGroup`). */\n removeItem: (id: string) => void;\n /** Ids of removed items and groups still rendered while their chip plays its exit animation. */\n leaving: ReadonlySet<string>;\n /** Called by a leaving chip once its exit animation has finished (or when nothing animates). */\n settleRemove: (id: string) => void;\n /** Removes every removable item (chips rendered with `removable={false}` stay) and every group left empty. */\n clear: () => void;\n /** Whether at least one item can be removed, i.e. whether Clear has anything to do. */\n hasRemovableItems: boolean;\n /** Called by chips so `clear` and the Clear button know which items are pinned. */\n registerNonRemovable: (itemId: string, nonRemovable: boolean) => void;\n /** Appends an empty group to the root (`undefined`) or inside `parentId`, and points the input at it. */\n addGroup: (parentId: string | undefined, logic: FilterBarLogic) => string;\n /** Removes a group and everything below it. */\n removeGroup: (groupId: string) => void;\n setLogic: (groupId: string, logic: FilterBarLogic) => void;\n /** Nesting level of a group (root-level = 1); 0 when unknown. */\n getGroupDepth: (groupId: string) => number;\n /** Root group whose advanced-filter popover is open. */\n openGroupId: string | null;\n /** Open a root group's popover, or close it with `null` (empty groups are pruned on close). */\n setOpenGroup: (groupId: string | null) => void;\n /** Group the input commits into; `undefined` = root. */\n inputTarget: string | undefined;\n /** Point the input at a group (or back at the root with `undefined`) and focus it. */\n openGroupInput: (groupId: string | undefined) => void;\n getField: (fieldId: string) => FilterBarField | undefined;\n getOperator: (operatorId: string) => FilterBarOperator | undefined;\n /** Operators allowed for a field (`field.operators` or every root operator). */\n getFieldOperators: (field: FilterBarField) => FilterBarOperator[];\n registerSegment: (itemId: string, segment: FilterBarSegment, el: HTMLElement | null) => void;\n registerInput: (el: HTMLInputElement | null) => void;\n /**\n * Focus a segment of the nearest editable chip starting at `fromIndex` and\n * walking in `direction` (read-only chips register no segments and are skipped).\n * Never leaves the focus scope of the currently focused element. Returns false if\n * nothing was focused.\n */\n focusChip: (fromIndex: number, direction: -1 | 1, segment: FilterBarSegment) => boolean;\n focusInput: () => void;\n /** Called by chips to move focus after a removal. */\n focusAfterRemove: (removedIndex: number) => void;\n announce: (message: string) => void;\n announcement: string;\n ariaLabel: string;\n /**\n * Text shown when a field's `suggestions` resolver rejects. Return `undefined` to keep the\n * default \"Couldn't load values.\".\n */\n describeSuggestionsError?: (error: unknown) => string | undefined;\n};\n\nconst FilterBarContext = createContext<FilterBarContextValue | null>(null);\n\nexport function useFilterBarContext(): FilterBarContextValue {\n const ctx = useContext(FilterBarContext);\n if (!ctx) throw new Error('FilterBar compound components must be rendered inside <FilterBar>.');\n return ctx;\n}\n\nlet idCounter = 0;\nexport function createFilterId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') return crypto.randomUUID();\n idCounter += 1;\n return `filter-${idCounter}`;\n}\n\nexport function emptyValueFor(operator: FilterBarOperator | undefined): string | string[] {\n return operator?.arity === 'many' ? [] : '';\n}\n\nexport type FilterBarProviderProps = {\n fields: FilterBarField[];\n operators: FilterBarOperator[];\n value: FilterBarValueInput;\n /** Receives the same shape as `value` (method syntax so flat-only handlers stay assignable). */\n onValueChange(value: FilterBarValueInput): void;\n /** Derives ids for root-level items only; items inside groups always get a random id\n * because a group may hold several conditions on the same field. */\n createItemId?: (fieldId: string) => string;\n /** Deepest allowed group nesting (root-level group = 1). Defaults to 3. */\n maxDepth?: number;\n ariaLabel: string;\n /**\n * Text shown when a field's `suggestions` resolver rejects. Return `undefined` to keep the\n * default \"Couldn't load values.\".\n */\n describeSuggestionsError?: (error: unknown) => string | undefined;\n children: ReactNode;\n};\n\nconst idsOf = (nodes: FilterBarNode[], out = new Set<string>()): Set<string> => {\n for (const node of nodes) {\n out.add(node.id);\n if (isFilterBarGroup(node)) idsOf(node.nodes, out);\n }\n return out;\n};\n\n/**\n * The previously rendered tree with the consumer's new `value` folded in: nodes still\n * present take their new version (in their old position), leaving nodes stay where they\n * were, and nodes the consumer added are appended. Once nothing is leaving the result is\n * exactly `next`, so consumer reorders are only deferred, never lost.\n */\nconst mergeNodes = (prev: FilterBarNode[], next: FilterBarNode[], leaving: ReadonlySet<string>): FilterBarNode[] => {\n const nextById = new Map(next.map(node => [node.id, node]));\n const seen = new Set<string>();\n const out: FilterBarNode[] = [];\n for (const old of prev) {\n const fresh = nextById.get(old.id);\n if (fresh) {\n seen.add(old.id);\n out.push(\n isFilterBarGroup(fresh) && isFilterBarGroup(old)\n ? { ...fresh, nodes: mergeNodes(old.nodes, fresh.nodes, leaving) }\n : fresh,\n );\n } else if (leaving.has(old.id)) {\n out.push(old);\n }\n }\n for (const node of next) if (!seen.has(node.id)) out.push(node);\n return out;\n};\n\nexport function FilterBarProvider({\n fields,\n operators,\n value,\n onValueChange,\n createItemId,\n maxDepth = DEFAULT_MAX_GROUP_DEPTH,\n ariaLabel,\n describeSuggestionsError,\n children,\n}: FilterBarProviderProps) {\n const segments = useRef(new Map<SegmentKey, HTMLElement>());\n const inputRef = useRef<HTMLInputElement | null>(null);\n const flat = Array.isArray(value);\n const expression = useMemo(() => normalize(value), [value]);\n const exprRef = useRef(expression);\n exprRef.current = expression;\n const [announcement, setAnnouncement] = useState('');\n const [nonRemovableIds, setNonRemovableIds] = useState<ReadonlySet<string>>(() => new Set());\n const [inputTarget, setInputTarget] = useState<string | undefined>(undefined);\n const [openGroupId, setOpenGroupId] = useState<string | null>(null);\n\n const emit = useCallback(\n (next: FilterBarExpression) => onValueChange(denormalize(next, flat)),\n [onValueChange, flat],\n );\n\n const getField = useCallback((fieldId: string) => fields.find(f => f.id === fieldId), [fields]);\n const getOperator = useCallback((operatorId: string) => operators.find(o => o.id === operatorId), [operators]);\n const getFieldOperators = useCallback(\n (field: FilterBarField) => {\n if (!field.operators) return operators;\n const allowed = new Set(field.operators);\n return operators.filter(o => allowed.has(o.id));\n },\n [operators],\n );\n\n const announce = useCallback((message: string) => setAnnouncement(message), []);\n\n const [draft, setDraftState] = useState<FilterBarDraft | null>(null);\n const draftRef = useRef(draft);\n draftRef.current = draft;\n const [lastCommit, setLastCommit] = useState<FilterBarCommit | null>(null);\n const settleCommit = useCallback(() => setLastCommit(prev => (prev ? { ...prev, glint: false } : null)), []);\n // Removed nodes stay rendered at their old position until their chip has animated out.\n const [leavingIds, setLeavingIds] = useState<ReadonlySet<string>>(() => new Set());\n const settleRemove = useCallback((id: string) => {\n setLeavingIds(prev => {\n if (!prev.has(id)) return prev;\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n const markLeaving = useCallback((ids: Iterable<string>) => {\n const list = [...ids];\n if (list.length === 0) return;\n setLeavingIds(prev => new Set([...prev, ...list]));\n }, []);\n\n // Until the consumer reflects the commit in `value`, the committed item is ours to show;\n // nodes on their way out keep their place in the previously rendered tree.\n const renderedTreeRef = useRef<FilterBarNode[]>(expression.nodes);\n const { rendered, items, leaving, rootGroupOf } = useMemo(() => {\n const present = idsOf(expression.nodes);\n let rendered: FilterBarExpression =\n leavingIds.size === 0\n ? expression\n : { ...expression, nodes: mergeNodes(renderedTreeRef.current, expression.nodes, leavingIds) };\n if (lastCommit && !present.has(lastCommit.item.id)) {\n rendered = insertItem(rendered, lastCommit.groupId, lastCommit.item);\n }\n renderedTreeRef.current = rendered.nodes;\n const shown = idsOf(rendered.nodes);\n const leaving = new Set([...leavingIds].filter(id => shown.has(id) && !present.has(id)));\n // Each leaf's root-level group: arrow navigation lands on that group's advanced chip\n // when the leaf itself is unmounted (closed popover).\n const rootGroupOf = new Map<string, string>();\n for (const node of rendered.nodes) {\n if (isFilterBarGroup(node))\n for (const { item } of flattenItems({ logic: 'and', nodes: [node] })) rootGroupOf.set(item.id, node.id);\n }\n return { rendered, items: flattenItems(rendered).map(e => e.item), leaving, rootGroupOf };\n }, [expression, lastCommit, leavingIds]);\n\n // Consumers who derive root ids from the field hold one root filter per field: this is the\n // one `fieldId` already has, which a new filter on that field updates instead of duplicating.\n const fieldItem = useCallback(\n (fieldId: string, groupId: string | undefined) => {\n if (!createItemId || groupId !== undefined) return undefined;\n const id = createItemId(fieldId);\n return exprRef.current.nodes.find((node): node is FilterBarItem => !isFilterBarGroup(node) && node.id === id);\n },\n [createItemId],\n );\n\n // The draft chip is keyed by the id the committed item will carry, so React keeps the same\n // element through the commit. Consumers who derive ids themselves supply `createItemId` so\n // the id we hand back in `onValueChange` is the one they'll hand back in `value`. A draft for\n // a field that already has its chip gets an id of its own, so the two chips never share a key.\n const newItemId = useCallback(\n (fieldId: string) =>\n createItemId && inputTarget === undefined && !fieldItem(fieldId, undefined)\n ? createItemId(fieldId)\n : createFilterId(),\n [createItemId, inputTarget, fieldItem],\n );\n\n const setDraft = useCallback(\n (next: Omit<FilterBarDraft, 'id' | 'from' | 'groupId'> | null) => {\n setLastCommit(null);\n setDraftState(prev =>\n next\n ? {\n ...next,\n id: prev?.fieldId === next.fieldId ? prev.id : newItemId(next.fieldId),\n from: stageOf(prev),\n groupId: inputTarget,\n }\n : null,\n );\n },\n [newItemId, inputTarget],\n );\n\n const commitDraft = useCallback(\n ({ fieldId, operatorId }: Required<Omit<FilterBarDraft, 'id' | 'from' | 'groupId'>>, value: FilterBarValue) => {\n // Operators without a value commit straight from the operator step, before a draft exists.\n const id = draftRef.current?.id ?? newItemId(fieldId);\n const groupId = draftRef.current?.groupId ?? inputTarget;\n const from = stageOf(draftRef.current);\n setDraftState(null);\n const existing = fieldItem(fieldId, groupId);\n if (existing) {\n // An unknown field has no operator contract to widen into: the new filter replaces the old one.\n const field = getField(fieldId);\n const condition = mergeCondition(existing, { operatorId, value }, field ? getFieldOperators(field) : []);\n const item = { ...existing, ...condition };\n emit(updateTreeItem(exprRef.current, existing.id, condition));\n setLastCommit({ item, from, glint: true });\n announce('Filter updated');\n return;\n }\n const item = { id, fieldId, operatorId, value };\n emit(insertItem(exprRef.current, groupId, item));\n setLastCommit({ item, from, glint: true, groupId });\n announce('Filter added');\n },\n [emit, announce, newItemId, inputTarget, fieldItem, getField, getFieldOperators],\n );\n\n const updateItem = useCallback(\n (id: string, patch: Partial<Omit<FilterBarItem, 'id'>>) => {\n emit(updateTreeItem(exprRef.current, id, patch));\n },\n [emit],\n );\n\n const removeItem = useCallback(\n (id: string) => {\n markLeaving([id]);\n emit(removeNode(exprRef.current, id));\n setLastCommit(null);\n announce('Filter removed');\n },\n [emit, announce, markLeaving],\n );\n\n const releaseInputTarget = useCallback((gone: ReadonlySet<string>) => {\n setInputTarget(prev => (prev && gone.has(prev) ? undefined : prev));\n }, []);\n\n const removeGroup = useCallback(\n (groupId: string) => {\n const expr = exprRef.current;\n const group = findGroup(expr, groupId);\n const gone = new Set(group ? collectIds(group) : [groupId]);\n markLeaving(gone);\n emit(removeNode(expr, groupId));\n setLastCommit(null);\n setDraftState(null);\n releaseInputTarget(gone);\n setOpenGroupId(prev => (prev === groupId ? null : prev));\n announce('Advanced filter removed');\n },\n [emit, announce, markLeaving, releaseInputTarget],\n );\n\n const addGroup = useCallback(\n (parentId: string | undefined, logic: FilterBarLogic) => {\n const group: FilterBarGroup = { id: createFilterId(), kind: 'group', logic, nodes: [] };\n emit(createGroup(exprRef.current, parentId, group));\n setLastCommit(null);\n setDraftState(null);\n setInputTarget(group.id);\n announce(parentId ? 'Nested group added' : 'Advanced filter added');\n return group.id;\n },\n [emit, announce],\n );\n\n const setLogic = useCallback(\n (groupId: string, logic: FilterBarLogic) => {\n emit(setGroupLogic(exprRef.current, groupId, logic));\n announce(`Conditions joined with ${logic}`);\n },\n [emit, announce],\n );\n\n const getGroupDepth = useCallback((groupId: string) => groupDepth(exprRef.current, groupId), []);\n\n const setOpenGroup = useCallback(\n (groupId: string | null) => {\n setOpenGroupId(groupId);\n if (groupId !== null) return;\n // Closing the editor: whatever was left empty goes away, and the input returns to the bar.\n const expr = exprRef.current;\n const pruned = pruneEmptyGroups(expr);\n const kept = idsOf(pruned.nodes);\n const gone = new Set([...idsOf(expr.nodes)].filter(id => !kept.has(id)));\n if (gone.size > 0) {\n markLeaving(gone);\n emit(pruned);\n }\n setDraftState(null);\n setInputTarget(undefined);\n },\n [emit, markLeaving],\n );\n\n const focusInput = useCallback(() => {\n inputRef.current?.focus();\n }, []);\n\n const openGroupInput = useCallback(\n (groupId: string | undefined) => {\n setInputTarget(groupId);\n setDraftState(null);\n // The input for a group mounts with the next render and focuses itself.\n if (groupId === undefined) focusInput();\n },\n [focusInput],\n );\n\n const clear = useCallback(() => {\n const expr = exprRef.current;\n const next = clearRemovable(expr, nonRemovableIds);\n const kept = idsOf(next.nodes);\n const gone = new Set([...idsOf(expr.nodes)].filter(id => !kept.has(id)));\n markLeaving(gone);\n emit(next);\n setLastCommit(null);\n setDraftState(null);\n setInputTarget(undefined);\n setOpenGroupId(null);\n announce('All filters removed');\n }, [emit, announce, nonRemovableIds, markLeaving]);\n\n const hasRemovableItems = flattenItems(expression).some(({ item }) => !nonRemovableIds.has(item.id));\n\n const registerNonRemovable = useCallback((itemId: string, nonRemovable: boolean) => {\n setNonRemovableIds(prev => {\n if (prev.has(itemId) === nonRemovable) return prev;\n const next = new Set(prev);\n if (nonRemovable) next.add(itemId);\n else next.delete(itemId);\n return next;\n });\n }, []);\n\n const registerSegment = useCallback((itemId: string, segment: FilterBarSegment, el: HTMLElement | null) => {\n const key: SegmentKey = `${itemId}:${segment}`;\n if (el) segments.current.set(key, el);\n else segments.current.delete(key);\n }, []);\n\n const registerInput = useCallback((el: HTMLInputElement | null) => {\n // An unmounting input must not clear the ref if another input already took over.\n if (el) inputRef.current = el;\n else if (!inputRef.current?.isConnected) inputRef.current = null;\n }, []);\n\n // Chip indices refer to the rendered list (which may still hold leaving chips), not `value`.\n const renderedRef = useRef(items);\n renderedRef.current = items;\n\n const rootGroupRef = useRef(rootGroupOf);\n rootGroupRef.current = rootGroupOf;\n\n const focusChip = useCallback((fromIndex: number, direction: -1 | 1, segment: FilterBarSegment) => {\n const items = renderedRef.current;\n const rootGroupOf = rootGroupRef.current;\n // Stay within the scope of the focused element, or (after a mouse click, which does not\n // move focus) of the chip we navigate away from. Unknown scope: any chip qualifies.\n const origin = items[fromIndex - direction];\n const originEl = origin\n ? [...SEGMENTS_LEFT_TO_RIGHT].map(s => segments.current.get(`${origin.id}:${s}`)).find(Boolean)\n : null;\n const scope =\n scopeOf(typeof document === 'undefined' ? null : document.activeElement) ?? scopeOf(originEl) ?? undefined;\n // Custom chips may register only some segments (e.g. just `value`): when the\n // requested one is missing, land on the chip's outermost segment on the side\n // we arrive from.\n const fallbacks: FilterBarSegment[] = direction === -1 ? SEGMENTS_RIGHT_TO_LEFT : SEGMENTS_LEFT_TO_RIGHT;\n for (let i = fromIndex; i >= 0 && i < items.length; i += direction) {\n const item = items[i];\n if (!item) break;\n // A leaf inside a closed popover has no segments: land on its advanced chip instead.\n const ownerIds = [item.id, rootGroupOf.get(item.id)].filter((id): id is string => id !== undefined);\n for (const ownerId of ownerIds) {\n for (const candidate of [segment, ...fallbacks]) {\n const el = segments.current.get(`${ownerId}:${candidate}`);\n if (el && (scope === undefined || scopeOf(el) === scope)) {\n el.focus();\n return true;\n }\n }\n }\n }\n return false;\n }, []);\n\n const focusAfterRemove = useCallback(\n (removedIndex: number) => {\n // Called synchronously after `removeItem`, before React re-renders: the rendered list\n // still holds the removed chip and every neighbour's DOM node is still mounted.\n // Leaving neighbours register no segments, so they are skipped over.\n if (focusChip(removedIndex + 1, 1, 'value') || focusChip(removedIndex - 1, -1, 'value')) return;\n focusInput();\n },\n [focusChip, focusInput],\n );\n\n const ctx = useMemo<FilterBarContextValue>(\n () => ({\n fields,\n operators,\n items,\n expression: rendered,\n groupsEnabled: !flat,\n maxDepth,\n draft,\n setDraft,\n commitDraft,\n lastCommit,\n settleCommit,\n updateItem,\n removeItem,\n leaving,\n settleRemove,\n clear,\n hasRemovableItems,\n registerNonRemovable,\n addGroup,\n removeGroup,\n setLogic,\n getGroupDepth,\n openGroupId,\n setOpenGroup,\n inputTarget,\n openGroupInput,\n getField,\n getOperator,\n getFieldOperators,\n registerSegment,\n registerInput,\n focusChip,\n focusInput,\n focusAfterRemove,\n announce,\n announcement,\n ariaLabel,\n describeSuggestionsError,\n }),\n [\n fields,\n operators,\n items,\n rendered,\n flat,\n maxDepth,\n draft,\n setDraft,\n commitDraft,\n lastCommit,\n settleCommit,\n updateItem,\n removeItem,\n leaving,\n settleRemove,\n clear,\n hasRemovableItems,\n registerNonRemovable,\n addGroup,\n removeGroup,\n setLogic,\n getGroupDepth,\n openGroupId,\n setOpenGroup,\n inputTarget,\n openGroupInput,\n getField,\n getOperator,\n getFieldOperators,\n registerSegment,\n registerInput,\n focusChip,\n focusInput,\n focusAfterRemove,\n announce,\n announcement,\n ariaLabel,\n describeSuggestionsError,\n ],\n );\n\n return <FilterBarContext.Provider value={ctx}>{children}</FilterBarContext.Provider>;\n}\n","import { CheckIcon } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\nimport { useFilterBarContext } from './filter-bar-context';\nimport type { FilterBarOption } from './types';\nimport { ComboboxPrimitive, comboboxStyles } from '@/ds/components/Combobox';\nimport { Spinner } from '@/ds/components/Spinner/spinner';\nimport { FluidMenuItems, useFluidMenu, useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type FilterBarOptionListProps<T> = {\n getKey: (option: T) => string;\n renderOption: (option: T) => ReactNode;\n /** Explicit check mark, used where Base UI's selection state is not the source of truth (multi-value step). */\n isSelected?: (option: T) => boolean;\n isLoading?: boolean;\n error?: unknown;\n emptyText?: string;\n 'aria-label': string;\n 'aria-multiselectable'?: boolean;\n};\n\n/** Default value row: the option's leading node (avatar, swatch…) followed by its label. */\nexport function FilterBarOptionLabel({ option }: { option: FilterBarOption }) {\n return (\n <>\n {option.start}\n <span className=\"min-w-0 truncate\">{option.label ?? option.value}</span>\n </>\n );\n}\n\nconst FluidItem = forwardRef<HTMLDivElement, ComboboxPrimitive.Item.Props>((props, ref) => (\n <ComboboxPrimitive.Item ref={useFluidMenuItemRef(ref)} {...props} />\n));\nFluidItem.displayName = 'FilterBarOptionItem';\n\n/**\n * List/status/empty rows for a `ComboboxPrimitive.Root`, laid out like the DS\n * `Combobox` popup (fluid hover highlight, scroller around the list). Items come\n * from the root's `items`; highlight and keyboard navigation are owned by Base UI.\n */\nexport function FilterBarOptionList<T>({\n getKey,\n renderOption,\n isSelected,\n isLoading,\n error,\n emptyText = 'No results.',\n 'aria-label': ariaLabel,\n 'aria-multiselectable': multiselectable,\n}: FilterBarOptionListProps<T>) {\n const { describeSuggestionsError } = useFilterBarContext();\n const idle = !isLoading && error === undefined;\n const menu = useFluidMenu<HTMLDivElement>();\n return (\n <>\n {isLoading && (\n <ComboboxPrimitive.Status className={comboboxStyles.empty}>\n <Spinner size=\"sm\" />\n <span>Loading…</span>\n </ComboboxPrimitive.Status>\n )}\n {!isLoading && error !== undefined && (\n <ComboboxPrimitive.Status className={comboboxStyles.empty}>\n {describeSuggestionsError?.(error) ?? \"Couldn't load values.\"}\n </ComboboxPrimitive.Status>\n )}\n <ComboboxPrimitive.Empty className={comboboxStyles.empty}>{idle ? emptyText : null}</ComboboxPrimitive.Empty>\n <div\n className={cn(\n comboboxStyles.listScroller,\n 'max-h-[min(var(--spacing-dropdown),60dvh)]',\n menu.containerClassName,\n )}\n {...menu.getContainerProps({})}\n >\n <FluidMenuItems menu={menu}>\n <ComboboxPrimitive.List\n aria-label={ariaLabel}\n aria-multiselectable={multiselectable}\n className={comboboxStyles.list}\n >\n {(option: T) => {\n const selected = isSelected?.(option) ?? false;\n return (\n <FluidItem\n key={getKey(option)}\n value={option}\n data-selected={selected || undefined}\n className={cn(comboboxStyles.item, 'min-w-0')}\n >\n <span className=\"flex min-w-0 flex-1 items-center gap-1.5 truncate\">{renderOption(option)}</span>\n <span className={comboboxStyles.itemRightSlot}>\n <span className={comboboxStyles.checkContainer}>\n {isSelected ? (\n selected && <CheckIcon className={comboboxStyles.checkIcon} />\n ) : (\n <ComboboxPrimitive.ItemIndicator>\n <CheckIcon className={comboboxStyles.checkIcon} />\n </ComboboxPrimitive.ItemIndicator>\n )}\n </span>\n </span>\n </FluidItem>\n );\n }}\n </ComboboxPrimitive.List>\n </FluidMenuItems>\n </div>\n </>\n );\n}\n","/** Every whitespace-separated term of `query` must appear in `text` (case-insensitive). */\nexport function matchesQuery(text: string, query: string): boolean {\n const terms = query.toLowerCase().split(/\\s+/).filter(Boolean);\n if (terms.length === 0) return true;\n const haystack = text.toLowerCase();\n return terms.every(term => haystack.includes(term));\n}\n\n/** Base UI `filter` for `ComboboxPrimitive.Root`, matching on the item label. */\nexport function matchesQueryFilter<T>(item: T, query: string, itemToString?: (item: T) => string): boolean {\n return matchesQuery(itemToString ? itemToString(item) : String(item), query);\n}\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { matchesQuery } from './match-query';\nimport type { FilterBarField, FilterBarOption } from './types';\n\nconst DEBOUNCE_MS = 150;\n\nconst BOOLEAN_OPTIONS: FilterBarOption[] = [\n { value: 'true', label: 'True' },\n { value: 'false', label: 'False' },\n];\n\n/** The field's suggestions, defaulting to True/False for boolean fields. */\nexport const getFieldSuggestions = (field: FilterBarField | undefined) =>\n field?.suggestions ?? (field?.type === 'boolean' ? BOOLEAN_OPTIONS : undefined);\n\nexport type UseValueSuggestionsOptions = {\n field: FilterBarField | undefined;\n operatorId: string;\n query: string;\n /** Resolver only runs while true (the value editor is open). */\n enabled: boolean;\n};\n\nexport type UseValueSuggestionsResult = {\n options: FilterBarOption[];\n isLoading: boolean;\n error: unknown;\n /** True when the field has any suggestions (static or lazy). */\n hasSuggestions: boolean;\n};\n\n/**\n * Value suggestions for a field. Static lists are filtered locally. Lazy\n * resolvers run only while `enabled`, are debounced on `query`, receive an\n * AbortSignal, and only the latest response is applied.\n */\nexport function useValueSuggestions({\n field,\n operatorId,\n query,\n enabled,\n}: UseValueSuggestionsOptions): UseValueSuggestionsResult {\n const suggestions = getFieldSuggestions(field);\n const resolver = typeof suggestions === 'function' ? suggestions : undefined;\n const staticOptions = Array.isArray(suggestions) ? suggestions : undefined;\n\n const [remote, setRemote] = useState<FilterBarOption[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<unknown>(undefined);\n const requestId = useRef(0);\n // Consumers typically define the resolver inline; a new identity must not refire (and abort) the request.\n const resolverRef = useRef(resolver);\n resolverRef.current = resolver;\n const hasResolver = Boolean(resolver);\n\n useEffect(() => {\n if (!hasResolver || !enabled) {\n setRemote([]);\n setIsLoading(false);\n setError(undefined);\n return;\n }\n\n const id = ++requestId.current;\n const controller = new AbortController();\n setIsLoading(true);\n\n const timer = setTimeout(() => {\n Promise.resolve()\n .then(() => resolverRef.current?.({ query, operatorId, signal: controller.signal }) ?? [])\n .then(result => {\n if (id !== requestId.current) return;\n setRemote(result);\n setError(undefined);\n setIsLoading(false);\n })\n .catch(err => {\n if (id !== requestId.current || controller.signal.aborted) return;\n setError(err);\n setIsLoading(false);\n });\n }, DEBOUNCE_MS);\n\n return () => {\n clearTimeout(timer);\n controller.abort();\n };\n }, [hasResolver, enabled, query, operatorId]);\n\n const options = useMemo(() => {\n if (staticOptions) return staticOptions.filter(o => matchesQuery(o.label ?? o.value, query));\n return remote;\n }, [staticOptions, remote, query]);\n\n return {\n options,\n isLoading: Boolean(resolver) && isLoading,\n error,\n hasSuggestions: Boolean(suggestions),\n };\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { KeyboardEvent } from 'react';\nimport { matchesQuery } from './match-query';\nimport type { FilterBarField, FilterBarOperator, FilterBarOption, FilterBarValue } from './types';\nimport { parseFieldValue } from './types';\nimport { useValueSuggestions } from './use-value-suggestions';\n\nexport type UseValueStepOptions = {\n field: FilterBarField | undefined;\n operator: FilterBarOperator | undefined;\n query: string;\n enabled: boolean;\n initialValue?: FilterBarValue;\n /** Replaces the query; many arity clears it after adding typed text to the selection. */\n setQuery: (query: string) => void;\n onCommit: (value: FilterBarValue) => void;\n};\n\nconst toStrings = (value: FilterBarValue | undefined): string[] => (Array.isArray(value) ? value.map(String) : []);\n\n/**\n * Shared value-editing logic for the typeahead value step and the chip value\n * editor. Single arity: picking an option (or Enter on free text) commits.\n * Many arity: Enter/click toggles the highlighted option, Enter on free text adds\n * it to the selection; Ctrl/Meta+Enter (or `commitDone`) commits the selection.\n * List navigation itself is owned by the surrounding `ComboboxPrimitive.Root`.\n */\nexport function useValueStep({\n field,\n operator,\n query,\n enabled,\n initialValue,\n setQuery,\n onCommit,\n}: UseValueStepOptions) {\n const isMany = operator?.arity === 'many';\n // Selection is tracked as option strings; values are parsed to the field type on commit.\n const [selected, setSelected] = useState<string[]>(() => toStrings(initialValue));\n const initialValueRef = useRef(initialValue);\n initialValueRef.current = initialValue;\n\n // The editor stays mounted across opens: re-seed from the current value each time it opens.\n useEffect(() => {\n setSelected(enabled ? toStrings(initialValueRef.current) : []);\n }, [enabled]);\n\n const freeTextOperator = operator?.freeText === true;\n const suggestions = useValueSuggestions({\n field: freeTextOperator ? undefined : field,\n operatorId: operator?.id ?? '',\n query,\n enabled,\n });\n const type = field?.type;\n const allowFreeText = (!field?.strict || freeTextOperator) && type !== 'boolean';\n\n // Selected values the suggestions do not list (typed in, or not matching the current\n // search) are listed too, so every value of a multi-selection can be seen and removed.\n // Memoized for correctness, not speed: these are the Combobox `items`, and Base UI\n // re-syncs (and loops on \"Maximum update depth exceeded\") when it gets a new array each render.\n const options = useMemo(() => {\n if (!isMany) return suggestions.options;\n const unlisted = unlistedSelection(selected, suggestions.options, suggestions.hasSuggestions, query);\n if (unlisted.length === 0) return suggestions.options;\n return [...suggestions.options, ...unlisted];\n }, [isMany, selected, suggestions.options, suggestions.hasSuggestions, query]);\n\n const toggle = useCallback((value: string) => {\n setSelected(current => (current.includes(value) ? current.filter(v => v !== value) : [...current, value]));\n }, []);\n\n const commit = useCallback(\n (values: string | string[]) =>\n onCommit(Array.isArray(values) ? values.map(v => parseFieldValue(type, v)) : parseFieldValue(type, values)),\n [onCommit, type],\n );\n\n const handleSelect = useCallback(\n (option: FilterBarOption) => {\n if (isMany) toggle(option.value);\n else commit(option.value);\n },\n [isMany, toggle, commit],\n );\n\n const commitSelection = useCallback(() => {\n if (selected.length === 0) return false;\n commit(selected);\n return true;\n }, [selected, commit]);\n\n const canCommitFreeText = useCallback(\n (text: string) =>\n allowFreeText &&\n text.length > 0 &&\n (type !== 'number' || Number.isFinite(Number(text))) &&\n // A text-match literal needs a word: letters, marks, or digits.\n (!freeTextOperator || /[\\p{L}\\p{M}\\p{N}]/u.test(text)),\n [allowFreeText, freeTextOperator, type],\n );\n\n /** Many arity: adds the typed text to the selection and clears the query, keeping the editor open. */\n function addFreeText() {\n const text = query.trim();\n if (!canCommitFreeText(text)) return false;\n setSelected(current => (current.includes(text) ? current : [...current, text]));\n setQuery('');\n return true;\n }\n\n const commitFreeText = useCallback(() => {\n const text = query.trim();\n if (!canCommitFreeText(text)) return false;\n commit(isMany ? (selected.includes(text) ? selected : [...selected, text]) : text);\n return true;\n }, [canCommitFreeText, query, isMany, selected, commit]);\n\n /** Enter on free text (or Apply): commits a single value, adds to a multi-selection. */\n function submitFreeText() {\n if (isMany) return addFreeText();\n return commitFreeText();\n }\n\n /** Done (or Ctrl/Meta+Enter) on a multi-selection. */\n function commitDone() {\n // Typed text that matches no suggestion is a value being entered (Enter would add it), so it\n // joins the selection. Text that matches suggestions is a search and is left out.\n if (suggestions.options.length === 0) return commitFreeText() || commitSelection();\n return commitSelection() || commitFreeText();\n }\n\n /**\n * Enter handling that Base UI does not cover: Ctrl/Meta+Enter commits a\n * multi-selection; plain Enter with nothing highlighted submits free text.\n * Returns `true` when the event was consumed.\n */\n function handleKeyDown(event: KeyboardEvent, highlighted: FilterBarOption | null): boolean {\n if (event.key !== 'Enter') return false;\n if (isMany && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n return commitDone();\n }\n if (highlighted === null) {\n event.preventDefault();\n return submitFreeText();\n }\n return false;\n }\n\n return {\n isMany,\n selected,\n toggle,\n options,\n isLoading: suggestions.isLoading,\n error: suggestions.error,\n hasSuggestions: suggestions.hasSuggestions,\n /** True when there is a list to show: suggestions, or values already added to a multi-selection. */\n hasOptions: suggestions.hasSuggestions || options.length > 0,\n allowFreeText,\n /** True when the current query can be committed as free text (non-empty, numeric when the field is a number). */\n canCommitQuery: canCommitFreeText(query.trim()),\n handleSelect,\n handleKeyDown,\n submitFreeText,\n commitDone,\n };\n}\n\n/** Selected values missing from `options`; with suggestions, only those matching the search. */\nfunction unlistedSelection(\n selected: string[],\n options: FilterBarOption[],\n hasSuggestions: boolean,\n query: string,\n): FilterBarOption[] {\n const listed = new Set(options.map(option => option.value));\n const isShown = (value: string) => !hasSuggestions || matchesQuery(value, query);\n return selected.filter(value => !listed.has(value) && isShown(value)).map(value => ({ value }));\n}\n","/* eslint-disable react-refresh/only-export-components */\nimport type { BaseUIEvent } from '@base-ui/react/types';\nimport { LockIcon, PencilIcon, SearchIcon, XIcon } from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport type { AnimationEvent, CSSProperties, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { emptyValueFor, useFilterBarContext } from './filter-bar-context';\nimport { FilterBarOptionLabel, FilterBarOptionList } from './filter-bar-option-list';\nimport { matchesQueryFilter } from './match-query';\nimport type {\n DraftStage,\n FilterBarField,\n FilterBarFieldType,\n FilterBarItem,\n FilterBarOperator,\n FilterBarOption,\n FilterBarScalar,\n FilterBarSegment,\n FilterBarValue,\n} from './types';\nimport { useValueStep } from './use-value-step';\nimport { getFieldSuggestions } from './use-value-suggestions';\nimport { Button } from '@/ds/components/Button/Button';\nimport { ComboboxPrimitive, comboboxStyles } from '@/ds/components/Combobox';\nimport { Kbd } from '@/ds/components/Kbd/kbd';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { inputSurfaceAndFocusWithinStyle } from '@/ds/primitives/form-element';\nimport './filter-bar-chip.css';\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\n// `filter-bar-segment` carries the left-to-right entrance (see filter-bar-chip.css).\n// No `first:`/`last:` rounding here: a segment is not reliably the first or last child.\n// Base UI interleaves a hidden input after every combobox and wraps an open trigger in\n// focus guards, so the rounded end would silently drop the moment a popup opened and the\n// segment's own state fill — the one state a chip has — would paint square corners\n// straight through the chip's pill edge. The chip clips instead (see `chipClass`).\nexport const segmentClass = cn(\n 'filter-bar-segment flex max-w-48 min-w-0 items-center gap-1 overflow-hidden px-2 text-label whitespace-nowrap outline-none',\n);\n\n// A filter bar is a dense row: it sits above a list, carries many chips at once, and never\n// competes with the page's own controls. Chip and typeahead pill read this one rung so they\n// stay the same height by construction rather than by two call sites agreeing.\nexport const FILTER_BAR_CONTROL_SIZE: ControlSize = 'sm';\n\n// Typed out of ComboboxRoot but honoured at runtime; keepHighlight stops Base UI re-lighting row 0 when the pointer reaches a row's text.\nexport const alwaysHighlightProps = { autoHighlight: 'always', keepHighlight: true } as unknown as {\n autoHighlight: boolean;\n};\n\n// A chip is a field whose value is edited in place, so it wears the field material rather than a\n// fill rung: on a light canvas a `bg-fill` chip read as a grey slab beside the white typeahead\n// pill it belongs to. The segments layer their own state over that card, which is why the chip\n// keeps `divide-border` for the internal seams and takes its outer edge from the material's rim.\n// `overflow-hidden` is what gives every segment its end cap: the chip is the only node that\n// knows where the pill ends, and it keeps knowing it while a framework injects children.\n// `py-px` reserves the rim's top and bottom rows: both colours are translucent, so a divider\n// crossing them stacks its alpha and the joint reads brighter. Vertical only, so the width holds.\nexport const chipClass = cn(\n 'filter-bar-chip relative flex max-w-full items-stretch divide-x divide-border overflow-hidden rounded-full py-px',\n inputSurfaceAndFocusWithinStyle,\n controlHeight[FILTER_BAR_CONTROL_SIZE],\n);\n\nexport const editableSegmentClass = cn(\n segmentClass,\n 'cursor-pointer hover:bg-fill-subtle hover:text-foreground',\n 'focus-visible:bg-fill-hover focus-visible:text-foreground data-[popup-open]:bg-fill-hover data-[popup-open]:text-foreground',\n);\n\n/** Field label with its optional leading icon — used by chips, the draft chip and field option lists. */\nexport function FilterBarFieldLabel({ field, label }: { field: FilterBarField | undefined; label?: string }) {\n const Icon = field?.icon;\n return (\n <>\n {Icon && <Icon className=\"size-[1.1em] shrink-0\" aria-hidden />}\n <span className=\"truncate\">{label ?? field?.label}</span>\n </>\n );\n}\n\n/** Inline style carrying a field's accent onto its field segment (text + icon). */\nexport const fieldSegmentAccentStyle = (field: FilterBarField | undefined) =>\n field?.color ? { color: field.color } : undefined;\n\n/** Segments a chip already showed before its latest step, given how far its draft had got. */\nconst settledSegments = (from: DraftStage, operatorImplied: boolean): number => {\n if (from === 'none') return 0;\n if (from === 'field' || operatorImplied) return 1;\n return 2;\n};\n\nexport const formatValue = (value: FilterBarValue, field: FilterBarField | undefined): string => {\n const suggestions = getFieldSuggestions(field);\n const options = Array.isArray(suggestions) ? suggestions : undefined;\n const label = (v: FilterBarScalar) => options?.find(o => o.value === String(v))?.label ?? String(v);\n return Array.isArray(value) ? value.map(label).join(', ') : label(value);\n};\n\nconst formatValueCompact = (value: FilterBarValue, field: FilterBarField | undefined): string => {\n if (!Array.isArray(value) || value.length < 2) return formatValue(value, field);\n return `${formatValue(value.slice(0, 1), field)} +${value.length - 1}`;\n};\n\ntype ChipContext = {\n item: FilterBarItem;\n index: number;\n field: FilterBarField | undefined;\n operator: FilterBarOperator | undefined;\n openSegment: FilterBarSegment | null;\n setOpenSegment: (segment: FilterBarSegment | null) => void;\n readOnly: boolean;\n /** Filter still being built in the input: segments are inert labels. */\n draft: boolean;\n /** Filter already removed from the value, playing its exit: segments are inert labels. */\n leaving: boolean;\n /** The field allows a single operator, so the operator segment is not shown. */\n operatorImplied: boolean;\n};\n\nconst ChipContext = createContext<ChipContext | null>(null);\nconst useChip = () => {\n const chip = useContext(ChipContext);\n if (!chip) throw new Error('FilterBarChip segments must be rendered inside <FilterBarChip>.');\n return chip;\n};\n\nexport type FilterBarChipProps = {\n item: FilterBarItem;\n /** Locked chip: plain labels, no editors, no remove button. */\n readOnly?: boolean;\n /** `false` keeps the chip editable but drops the remove button and ignores Backspace/Delete. */\n removable?: boolean;\n /**\n * Render the filter being built in the input (see `FilterBarContextValue.draft`): only\n * the picked segments show, as inert labels. Keyed by the draft id, the same element\n * carries on as the editable chip once the value is committed.\n */\n draft?: boolean;\n className?: string;\n /** Custom segment composition; defaults to Field · Operator · Value · Remove. */\n children?: ReactNode;\n};\n\nfunction isInsidePopup(target: EventTarget | null) {\n return target instanceof Element && Boolean(target.closest('[data-slot=\"filter-bar-editor\"]'));\n}\n\nexport function FilterBarChip({\n item,\n readOnly = false,\n removable = true,\n draft = false,\n className,\n children,\n}: FilterBarChipProps) {\n const ctx = useFilterBarContext();\n const [openSegment, setOpenSegment] = useState<FilterBarSegment | null>(null);\n const field = ctx.getField(item.fieldId);\n const operator = ctx.getOperator(item.operatorId);\n const index = ctx.items.findIndex(i => i.id === item.id);\n const rootRef = useRef<HTMLDivElement>(null);\n const leaving = ctx.leaving.has(item.id);\n\n const pinned = !draft && (readOnly || !removable);\n const { registerNonRemovable, settleRemove } = ctx;\n useEffect(() => {\n registerNonRemovable(item.id, pinned);\n return () => registerNonRemovable(item.id, false);\n }, [registerNonRemovable, item.id, pinned]);\n\n // A leaving chip is released once its exit animation has finished. With nothing to\n // animate (no `interpolate-size`, reduced motion, jsdom) it is released straight away.\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(item.id);\n return;\n }\n let cancelled = false;\n Promise.all(animations.map(animation => animation.finished))\n .then(() => {\n if (!cancelled) settleRemove(item.id);\n })\n // Animations cancelled by an unmount reject `finished`; nothing left to settle.\n .catch(() => {});\n return () => {\n cancelled = true;\n };\n }, [leaving, item.id, settleRemove]);\n\n const operatorImplied = field ? ctx.getFieldOperators(field).length === 1 : false;\n const label = [\n field?.label ?? item.fieldId,\n operatorImplied ? '' : (operator?.label ?? item.operatorId),\n draft ? '' : formatValue(item.value, field),\n ]\n .filter(Boolean)\n .join(' ');\n\n // The provider records where each draft step (and the final commit) started from, so\n // the entrance stagger resumes after the segments already on screen and the chip\n // glints once when it lands as a filter (see filter-bar-chip.css).\n const commit = !draft && ctx.lastCommit?.item.id === item.id ? ctx.lastCommit : null;\n const from = draft ? (ctx.draft?.from ?? 'none') : (commit?.from ?? 'none');\n const settled = settledSegments(from, operatorImplied);\n const shine = commit?.glint ?? false;\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (readOnly || draft || leaving || isInsidePopup(event.target)) return;\n const segments = Array.from(rootRef.current?.querySelectorAll<HTMLElement>('[data-filter-bar-segment]') ?? []);\n const current = segments.findIndex(el => el === event.target);\n\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 + 1, 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 if (!removable) return;\n event.preventDefault();\n ctx.removeItem(item.id);\n ctx.focusAfterRemove(index);\n return;\n default:\n }\n },\n [readOnly, draft, leaving, removable, ctx, index, item.id],\n );\n\n const chipValue = useMemo<ChipContext>(\n () => ({ item, index, field, operator, openSegment, setOpenSegment, readOnly, draft, leaving, operatorImplied }),\n [item, index, field, operator, openSegment, readOnly, draft, leaving, operatorImplied],\n );\n const content = children ?? (\n <>\n <FilterBarChipField />\n <FilterBarChipOperator />\n <FilterBarChipValue />\n {removable && <FilterBarChipRemove />}\n </>\n );\n return (\n <ChipContext.Provider value={chipValue}>\n <div\n ref={rootRef}\n role=\"group\"\n aria-label={label}\n // The input already announces the draft's progress through its placeholder.\n aria-hidden={draft || leaving || undefined}\n data-slot=\"filter-bar-chip\"\n data-draft={draft || undefined}\n data-readonly={readOnly || undefined}\n data-leaving={leaving || undefined}\n data-shine={(shine && !leaving) || undefined}\n className={cn(chipClass, leaving && 'pointer-events-none', className)}\n style={\n {\n '--filter-bar-segments-settled': settled,\n '--filter-bar-chip-shine': field?.color ?? 'currentColor',\n } as CSSProperties\n }\n onKeyDown={handleKeyDown}\n onClick={(event: MouseEvent) => event.stopPropagation()}\n onAnimationEnd={(event: AnimationEvent) => {\n if (event.animationName === 'filter-bar-chip-shine') ctx.settleCommit();\n }}\n >\n {readOnly && (\n <span\n className={cn(segmentClass, 'pr-0 text-muted-foreground [--filter-bar-segment-padding:0.5rem_0]')}\n title=\"This filter is locked\"\n >\n <LockIcon className=\"size-[1.1em]\" />\n </span>\n )}\n {content}\n </div>\n </ChipContext.Provider>\n );\n}\n\ntype SegmentComboboxProps<T> = {\n segment: Exclude<FilterBarSegment, 'remove'>;\n label: string;\n fullLabel?: string;\n ariaLabel: string;\n items: readonly T[];\n itemToString: (item: T) => string;\n /** `null` when `items` are already filtered. */\n filter: null | ((item: T, query: string, itemToString?: (item: T) => string) => boolean);\n /** Current selection, surfaced through Base UI's `ItemIndicator`. */\n value?: T | null;\n query: string;\n onQueryChange: (query: string) => void;\n onSelect: (item: T) => void;\n onOpen?: () => void;\n /** Popup content: typically a `SegmentSearchInput` followed by a `FilterBarOptionList`. */\n children: ReactNode;\n};\n\n// Highlighted item of the enclosing SegmentCombobox, for popup inputs that route Enter.\nconst SegmentPopupContext = createContext<{ highlighted: unknown }>({ highlighted: null });\n\ntype SegmentSearchInputProps<T> = {\n placeholder: string;\n /** Leading icon. Defaults to a search glass; free-text editing uses a pencil. */\n icon?: LucideIcon;\n inputMode?: ComponentProps<'input'>['inputMode'];\n onKeyDown?: (event: BaseUIEvent<KeyboardEvent<HTMLInputElement>>, highlighted: T | null) => void;\n};\n\n/** The search/free-text input at the top of a segment popup. */\nfunction SegmentSearchInput<T>({\n placeholder,\n icon: Icon = SearchIcon,\n inputMode,\n onKeyDown,\n}: SegmentSearchInputProps<T>) {\n const { highlighted } = useContext(SegmentPopupContext);\n return (\n <div className={comboboxStyles.searchContainer}>\n <Icon className={comboboxStyles.searchIcon} />\n <ComboboxPrimitive.Input\n className={comboboxStyles.searchInput}\n placeholder={placeholder}\n inputMode={inputMode}\n {...passwordManagerOptOutProps}\n onKeyDown={event => onKeyDown?.(event, highlighted as T | null)}\n />\n </div>\n );\n}\n\n/**\n * A chip segment: a button trigger that opens an option popup. The editor\n * owning the segment supplies items, filtering, selection routing and the\n * popup content.\n */\nfunction SegmentCombobox<T>({\n segment,\n label,\n fullLabel = label,\n ariaLabel,\n items,\n itemToString,\n filter,\n value = null,\n query,\n onQueryChange,\n onSelect,\n onOpen,\n children,\n}: SegmentComboboxProps<T>) {\n const ctx = useFilterBarContext();\n const chip = useChip();\n const container = usePortalContainer();\n const open = chip.openSegment === segment;\n const [highlighted, setHighlighted] = useState<T | null>(null);\n\n const isField = segment === 'field';\n const content = isField ? (\n <FilterBarFieldLabel field={chip.field} label={label} />\n ) : (\n <span className=\"truncate\">{label}</span>\n );\n\n if (chip.readOnly || chip.draft || chip.leaving) {\n return (\n <span\n className={cn(segmentClass, isField && 'text-foreground')}\n style={isField ? fieldSegmentAccentStyle(chip.field) : undefined}\n title={fullLabel}\n >\n {content}\n </span>\n );\n }\n\n return (\n <ComboboxPrimitive.Root<T>\n items={items}\n itemToStringLabel={itemToString}\n itemToStringValue={itemToString}\n filter={filter}\n value={value}\n onValueChange={(item, details) => {\n // The editor decides what a pick means (and when to close); Base UI must not keep it.\n details.cancel();\n if (item !== null) onSelect(item);\n }}\n inputValue={query}\n onInputValueChange={(next, details) => {\n if (details.reason === 'input-change') onQueryChange(next);\n }}\n onItemHighlighted={item => setHighlighted(item ?? null)}\n open={open}\n onOpenChange={next => {\n if (next) onOpen?.();\n else onQueryChange('');\n chip.setOpenSegment(next ? segment : null);\n }}\n {...alwaysHighlightProps}\n modal={false}\n >\n <ComboboxPrimitive.Trigger\n ref={el => ctx.registerSegment(chip.item.id, segment, el)}\n render={\n <button\n type=\"button\"\n data-filter-bar-segment=\"\"\n tabIndex={segment === 'value' ? 0 : -1}\n aria-label={`${ariaLabel}: ${fullLabel}`}\n title={fullLabel}\n className={cn(editableSegmentClass, isField && 'text-foreground')}\n style={isField ? fieldSegmentAccentStyle(chip.field) : undefined}\n />\n }\n >\n {content}\n </ComboboxPrimitive.Trigger>\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 className={cn(comboboxStyles.popup, 'min-w-44')} data-slot=\"filter-bar-editor\">\n <SegmentPopupContext.Provider value={{ highlighted }}>{children}</SegmentPopupContext.Provider>\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n );\n}\n\nconst fieldLabel = (field: FilterBarField) => field.label;\nconst operatorLabel = (operator: FilterBarOperator) => operator.label;\nconst optionLabel = (option: FilterBarOption) => option.label ?? option.value;\n\nfunction FieldEditor() {\n const ctx = useFilterBarContext();\n const chip = useChip();\n const [query, setQuery] = useState('');\n\n const onSelect = useCallback(\n (field: FilterBarField) => {\n const allowed = ctx.getFieldOperators(field);\n const nextOperator = allowed.find(o => o.id === chip.item.operatorId) ?? allowed[0];\n const arityChanged = nextOperator?.arity !== chip.operator?.arity;\n ctx.updateItem(chip.item.id, {\n fieldId: field.id,\n operatorId: nextOperator?.id ?? chip.item.operatorId,\n value: arityChanged || field.id !== chip.item.fieldId ? emptyValueFor(nextOperator) : chip.item.value,\n });\n chip.setOpenSegment(null);\n },\n [ctx, chip],\n );\n\n return (\n <SegmentCombobox<FilterBarField>\n segment=\"field\"\n ariaLabel=\"Field\"\n label={chip.field?.label ?? chip.item.fieldId}\n items={ctx.fields}\n itemToString={fieldLabel}\n filter={matchesQueryFilter}\n value={chip.field}\n query={query}\n onQueryChange={setQuery}\n onSelect={onSelect}\n >\n <SegmentSearchInput placeholder=\"Change field…\" />\n <FilterBarOptionList<FilterBarField>\n aria-label=\"Fields\"\n getKey={f => f.id}\n renderOption={f => <FilterBarFieldLabel field={f} />}\n emptyText=\"No matching field.\"\n />\n </SegmentCombobox>\n );\n}\n\nfunction OperatorEditor() {\n const ctx = useFilterBarContext();\n const chip = useChip();\n const [query, setQuery] = useState('');\n const options = useMemo(() => (chip.field ? ctx.getFieldOperators(chip.field) : ctx.operators), [ctx, chip.field]);\n\n const onSelect = useCallback(\n (operator: FilterBarOperator) => {\n const arityChanged = (operator.arity ?? 'one') !== (chip.operator?.arity ?? 'one');\n ctx.updateItem(chip.item.id, {\n operatorId: operator.id,\n value: arityChanged ? emptyValueFor(operator) : chip.item.value,\n });\n chip.setOpenSegment(null);\n },\n [ctx, chip],\n );\n\n return (\n <SegmentCombobox<FilterBarOperator>\n segment=\"operator\"\n ariaLabel=\"Operator\"\n label={chip.operator?.label ?? chip.item.operatorId}\n items={options}\n itemToString={operatorLabel}\n filter={matchesQueryFilter}\n value={chip.operator}\n query={query}\n onQueryChange={setQuery}\n onSelect={onSelect}\n >\n <SegmentSearchInput placeholder=\"Change 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 </SegmentCombobox>\n );\n}\n\nfunction ValueEditor() {\n const ctx = useFilterBarContext();\n const chip = useChip();\n const open = chip.openSegment === 'value';\n const [query, setQuery] = useState('');\n\n const close = useCallback(() => chip.setOpenSegment(null), [chip]);\n const onCommit = useCallback(\n (value: FilterBarValue) => {\n ctx.updateItem(chip.item.id, { value });\n close();\n },\n [ctx, chip.item.id, close],\n );\n\n const step = useValueStep({\n field: chip.field,\n operator: chip.operator,\n query,\n enabled: open,\n initialValue: chip.item.value,\n setQuery,\n onCommit,\n });\n\n const ValueInput = VALUE_INPUTS[chip.field?.type ?? 'text'];\n\n return (\n <SegmentCombobox<FilterBarOption>\n segment=\"value\"\n ariaLabel=\"Value\"\n label={formatValueCompact(chip.item.value, chip.field) || '…'}\n fullLabel={formatValue(chip.item.value, chip.field) || '…'}\n items={step.options}\n itemToString={optionLabel}\n filter={null}\n query={query}\n onQueryChange={setQuery}\n onSelect={step.handleSelect}\n // Prefill free-text values only; with suggestions, the current value is shown as checked instead.\n onOpen={() =>\n setQuery(!Array.isArray(chip.item.value) && !chip.field?.suggestions ? String(chip.item.value) : '')\n }\n >\n <ValueInput step={step} onCancel={close} />\n </SegmentCombobox>\n );\n}\n\ntype ValueInputProps = {\n step: ReturnType<typeof useValueStep>;\n onCancel: () => void;\n};\n\n/** Suggestion list + multi-select footer, shared by every value input. */\nfunction ValueOptions({ step, onCancel }: ValueInputProps) {\n const chip = useChip();\n const modEnterLabel = useIsApplePlatform() ? '⌘↵' : 'Ctrl ↵';\n return (\n <>\n {step.hasOptions && (\n <FilterBarOptionList<FilterBarOption>\n aria-label=\"Values\"\n aria-multiselectable={step.isMany || undefined}\n getKey={o => o.value}\n renderOption={option => <FilterBarOptionLabel option={option} />}\n isSelected={o => (step.isMany ? step.selected.includes(o.value) : String(chip.item.value) === o.value)}\n isLoading={step.isLoading}\n error={step.error}\n emptyText={step.allowFreeText ? 'No suggestions — press Enter to use your text.' : 'No matching value.'}\n />\n )}\n {step.isMany && (\n <div className=\"flex items-center justify-end gap-1 border-t border-border p-1\">\n <Button size=\"sm\" variant=\"ghost\" onClick={onCancel}>\n Cancel\n </Button>\n <Button size=\"sm\" variant=\"default\" onClick={() => step.commitDone()}>\n Done\n <Kbd size=\"xs\">{modEnterLabel}</Kbd>\n </Button>\n </div>\n )}\n </>\n );\n}\n\nfunction freeTextPlaceholder(step: ValueInputProps['step'], noun: string) {\n if (!step.hasSuggestions) return `Type a ${noun}…`;\n if (step.allowFreeText) return `Search or type a ${noun}…`;\n return `Search ${noun}s…`;\n}\n\n/** Free-text (optionally suggestion-backed) value input; text and number share it. */\nfunction FreeTextValueInput({\n step,\n onCancel,\n inputMode,\n noun,\n}: ValueInputProps & { inputMode?: ComponentProps<'input'>['inputMode']; noun: string }) {\n return (\n <>\n <SegmentSearchInput<FilterBarOption>\n icon={step.hasSuggestions ? SearchIcon : PencilIcon}\n inputMode={inputMode}\n placeholder={freeTextPlaceholder(step, noun)}\n onKeyDown={(event, highlighted) => {\n const highlightedOption = step.hasSuggestions ? highlighted : null;\n const handled = step.handleKeyDown(event, highlightedOption);\n // Base UI closes on Enter when nothing is highlighted; a rejected free-text value must keep the editor open.\n if (handled || (event.key === 'Enter' && highlightedOption === null)) event.preventBaseUIHandler();\n }}\n />\n <ValueOptions step={step} onCancel={onCancel} />\n </>\n );\n}\n\nfunction TextValueInput(props: ValueInputProps) {\n return <FreeTextValueInput {...props} noun=\"value\" />;\n}\n\nfunction NumberValueInput(props: ValueInputProps) {\n return <FreeTextValueInput {...props} inputMode=\"decimal\" noun=\"number\" />;\n}\n\n/** Select-like: no search input, just the True/False (or custom) options. */\nfunction BooleanValueInput(props: ValueInputProps) {\n return <ValueOptions {...props} />;\n}\n\nconst VALUE_INPUTS: Record<FilterBarFieldType, (props: ValueInputProps) => ReactNode> = {\n text: TextValueInput,\n number: NumberValueInput,\n boolean: BooleanValueInput,\n};\n\nexport function FilterBarChipField() {\n return <FieldEditor />;\n}\n\nexport function FilterBarChipOperator() {\n const chip = useChip();\n if (chip.operatorImplied) return null;\n if (chip.draft && !chip.operator) return null;\n return <OperatorEditor />;\n}\n\nexport function FilterBarChipValue() {\n const chip = useChip();\n if (chip.draft || (chip.operator?.arity ?? 'one') === 'none') return null;\n return <ValueEditor />;\n}\n\nexport function FilterBarChipRemove() {\n const ctx = useFilterBarContext();\n const chip = useChip();\n if (chip.readOnly || chip.draft) return null;\n const removeClass = cn(editableSegmentClass, 'px-1.5 text-muted-foreground [--filter-bar-segment-padding:0.375rem]');\n if (chip.leaving) {\n // Keep the × on screen so it folds away with the other segments.\n return (\n <span className={removeClass}>\n <XIcon className=\"size-[1.1em]\" />\n </span>\n );\n }\n const label = `Remove ${chip.field?.label ?? chip.item.fieldId} filter`;\n return (\n <button\n type=\"button\"\n data-filter-bar-segment=\"\"\n tabIndex={-1}\n aria-label={label}\n title={label}\n ref={el => ctx.registerSegment(chip.item.id, 'remove', el)}\n className={removeClass}\n onClick={() => {\n ctx.removeItem(chip.item.id);\n ctx.focusAfterRemove(chip.index);\n }}\n >\n <XIcon className=\"size-[1.1em]\" />\n </button>\n );\n}\n\nFilterBarChip.Field = FilterBarChipField;\nFilterBarChip.Operator = FilterBarChipOperator;\nFilterBarChip.Value = FilterBarChipValue;\nFilterBarChip.Remove = FilterBarChipRemove;\n"],"names":["rendered","leaving","rootGroupOf","value","item","updateTreeItem","updateItem","items","ComboboxPrimitive"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"property-filter-applied-CtSglSaH.cjs","sources":["../src/ds/components/PropertyFilter/property-filter-actions.tsx","../src/ds/components/PropertyFilter/pick-multi-panel.tsx","../src/ds/components/PropertyFilter/property-filter-applied.tsx"],"sourcesContent":["import { EllipsisVerticalIcon, SaveIcon, Trash2Icon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\n\nexport type PropertyFilterActionsProps = {\n disabled?: boolean;\n /** Neutralize each pill's value (keep pills, clear values). Shown as a button, not a menu item. */\n onClear?: () => void;\n /** Fully remove all active filters. Rendered as \"Remove all filters\" inside the overflow menu. */\n onRemoveAll?: () => void;\n /** Persist the current filter set (typically to localStorage) for later restoration. */\n onSave?: () => void;\n /** Drop a previously-saved filter set. Wire only when a saved set actually exists. */\n onRemoveSaved?: () => void;\n};\n\n/**\n * Shared action bar for filter-driven pages (traces, logs, …). Renders a\n * Clear button and an overflow menu with Remove all / Save / Remove saved actions.\n */\nexport function PropertyFilterActions({\n disabled,\n onClear,\n onRemoveAll,\n onSave,\n onRemoveSaved,\n}: PropertyFilterActionsProps) {\n const hasMenuItems = !!(onRemoveAll || onSave || onRemoveSaved);\n if (!onClear && !hasMenuItems) return null;\n\n return (\n <div className=\"flex items-center gap-2\">\n {onClear && (\n <Button disabled={disabled} size=\"md\" onClick={onClear} icon={<XIcon />}>\n Clear\n </Button>\n )}\n\n {hasMenuItems && (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button disabled={disabled} size=\"md\" aria-label=\"More filter actions\">\n <EllipsisVerticalIcon />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {onRemoveAll && (\n <DropdownMenu.Item onSelect={() => onRemoveAll()}>\n <XIcon />\n Remove all filters\n </DropdownMenu.Item>\n )}\n {onRemoveAll && (onSave || onRemoveSaved) && <DropdownMenu.Separator />}\n {onSave && (\n <DropdownMenu.Item onSelect={() => onSave()}>\n <SaveIcon />\n Save filters for next time\n </DropdownMenu.Item>\n )}\n {onRemoveSaved && (\n <DropdownMenu.Item onSelect={() => onRemoveSaved()}>\n <Trash2Icon />\n Remove saved filters\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","import { CheckIcon, SearchIcon } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Spinner } from '@/ds/components/Spinner/spinner';\nimport { FluidMenuItems, useFluidMenu, useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { menuEmptyClass, menuItemCheckClass, menuItemClass, menuSearchClasses } from '@/ds/primitives/menu-item';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { cn } from '@/lib/utils';\n\n// Same rendering as Combobox items: no visible control, a trailing check when selected.\n// Focus is on the item itself (roving via [data-pick-multi-item]): the fluid highlight follows it.\nconst pickMultiItemClass = cn(menuItemClass, 'min-w-0 focus:text-foreground');\n\nfunction PickMultiItem({\n role,\n checked,\n label,\n onClick,\n}: {\n role: 'checkbox' | 'radio';\n checked: boolean;\n label: string;\n onClick: () => void;\n}) {\n return (\n <button\n ref={useFluidMenuItemRef<HTMLButtonElement>()}\n type=\"button\"\n role={role}\n aria-checked={checked}\n data-selected={checked || undefined}\n data-pick-multi-item=\"\"\n title={label}\n className={pickMultiItemClass}\n onClick={onClick}\n >\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n {checked && (\n <span className={menuItemCheckClass}>\n <CheckIcon />\n </span>\n )}\n </button>\n );\n}\n\ntype PickMultiField = Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n\nexport type PickMultiPanelProps = {\n field: PickMultiField;\n tokens: PropertyFilterToken[];\n /** Always carries a value: an empty list is how the panel says \"nothing selected\". */\n onChange: (fieldId: string, value: string | string[]) => void;\n};\n\n/**\n * Reusable body for a pick-multi side popover: optional search input plus a\n * radio group (single-select) or checkbox list (when `field.multi` is true).\n * Shared between the Filter Creator's property-picker side popover and the\n * PropertyFilterApplied pill's inline editor so both surfaces use the exact same UI.\n */\nexport function PickMultiPanel({ field, tokens, onChange }: PickMultiPanelProps) {\n const [query, setQuery] = useState('');\n const menu = useFluidMenu<HTMLDivElement>();\n const listProps = {\n className: cn('max-h-[80dvh] overflow-auto p-1', menu.containerClassName),\n ...menu.getContainerProps({}),\n };\n\n const filteredOptions = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return field.options;\n return field.options.filter(o => o.label.toLowerCase().includes(q));\n }, [field.options, query]);\n\n const token = useMemo(() => tokens.find(t => t.fieldId === field.id), [tokens, field.id]);\n // Fall back to `defaultValue` when no token exists — lets view-toggle fields (e.g. List mode)\n // show their default option pre-selected before the user explicitly picks one.\n const selectedValue = typeof token?.value === 'string' ? token.value : !field.multi ? field.defaultValue : undefined;\n const selectedValues = useMemo<string[]>(() => {\n const value = token?.value;\n if (Array.isArray(value)) return value;\n if (typeof value === 'string') return [value];\n return [];\n }, [token]);\n\n return (\n <>\n {field.searchable !== false && (\n <div className={menuSearchClasses.container}>\n <SearchIcon className={menuSearchClasses.icon} />\n <input\n type=\"text\"\n value={query}\n onChange={e => setQuery(e.target.value)}\n placeholder={`Search ${field.label.toLowerCase()}...`}\n className={menuSearchClasses.input}\n {...passwordManagerOptOutProps}\n onKeyDown={e => {\n if (e.key !== 'ArrowDown') return;\n const panel = e.currentTarget.closest<HTMLElement>('[data-pick-multi-panel]');\n const first = panel?.querySelector<HTMLElement>('[data-pick-multi-item]:not([disabled])');\n if (!first) return;\n e.preventDefault();\n e.stopPropagation();\n first.focus();\n }}\n />\n </div>\n )}\n\n {field.isLoading ? (\n <div className={cn(menuEmptyClass, 'm-1')}>\n <Spinner size=\"sm\" className=\"size-3 text-muted-foreground\" />\n Loading options…\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={cn(menuEmptyClass, 'm-1')}>{field.emptyText ?? 'No option found.'}</div>\n ) : field.multi ? (\n <div {...listProps}>\n <FluidMenuItems menu={menu}>\n {filteredOptions.map(option => {\n const checked = selectedValues.includes(option.value);\n return (\n <PickMultiItem\n key={option.value}\n role=\"checkbox\"\n checked={checked}\n label={option.label}\n onClick={() =>\n onChange(\n field.id,\n checked ? selectedValues.filter(v => v !== option.value) : [...selectedValues, option.value],\n )\n }\n />\n );\n })}\n </FluidMenuItems>\n </div>\n ) : (\n <div role=\"radiogroup\" {...listProps}>\n <FluidMenuItems menu={menu}>\n {filteredOptions.map(option => (\n <PickMultiItem\n key={option.value}\n role=\"radio\"\n checked={selectedValue === option.value}\n label={option.label}\n onClick={() => onChange(field.id, option.value)}\n />\n ))}\n {!field.omitAnyOption && (\n <PickMultiItem\n role=\"radio\"\n checked={selectedValue === 'Any'}\n label=\"Any\"\n onClick={() => onChange(field.id, 'Any')}\n />\n )}\n </FluidMenuItems>\n </div>\n )}\n </>\n );\n}\n","import { LockIcon, XIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { ButtonsGroup, ButtonsGroupText } from '../ButtonsGroup';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip';\nimport { PickMultiPanel } from './pick-multi-panel';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover/popover';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\n\nexport type PropertyFilterAppliedProps = {\n fields: PropertyFilterField[];\n tokens: PropertyFilterToken[];\n onTokensChange: (tokens: PropertyFilterToken[]) => void;\n disabled?: boolean;\n /**\n * Field id that was just added via the Creator — rendered pill auto-focuses\n * its input so the user can start typing immediately.\n */\n autoFocusFieldId?: string;\n /**\n * Field ids whose pills must remain visible and read-only — value stays\n * displayed but cannot be edited or removed. Use when an upstream context\n * (e.g. agent-scoped traces tab) pre-applies a filter that the user must\n * not be able to clear.\n */\n lockedFieldIds?: readonly string[];\n /** Tooltip content shown on hover/focus of any locked pill. */\n lockedTooltipContent?: ReactNode;\n};\n\nfunction stringifyTokenValue(value: string | string[]) {\n if (Array.isArray(value)) return value.length === 0 ? 'Any' : value.join(', ');\n return value;\n}\n\nconst DEFAULT_LOCKED_TOOLTIP = 'This filter is set by the current context and cannot be removed here.';\n\nfunction lookupOptionLabel(field: PropertyFilterField, value: string | string[]): string {\n if (field.kind === 'pick-multi' && field.options) {\n if (Array.isArray(value)) {\n if (value.length === 0) return 'Any';\n return value.map(v => field.options.find(o => o.value === v)?.label ?? v).join(', ');\n }\n return field.options.find(o => o.value === value)?.label ?? value;\n }\n return stringifyTokenValue(value);\n}\n\ntype LockedTokenPillProps = {\n field: PropertyFilterField;\n value: string | string[];\n tooltipContent: ReactNode;\n};\n\nfunction LockedTokenPill({ field, value, tooltipContent }: LockedTokenPillProps) {\n const display = lookupOptionLabel(field, value);\n const lockA11yLabel = `${field.label} filter is locked by context`;\n\n return (\n <TooltipProvider delayDuration={150}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ButtonsGroup\n data-locked-field-id={field.id}\n data-property-filter-pill=\"locked\"\n tabIndex={0}\n aria-label={lockA11yLabel}\n >\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{display}</ButtonsGroupText>\n <ButtonsGroupText>\n <LockIcon />\n </ButtonsGroupText>\n </ButtonsGroup>\n </TooltipTrigger>\n <TooltipContent>{tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n\ntype TextTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'text' }>;\n value: string;\n onChange: (value: string) => void;\n onRemove: () => void;\n disabled?: boolean;\n autoFocus?: boolean;\n};\n\nfunction TextTokenPill({ field, value, onChange, onRemove, disabled, autoFocus }: TextTokenPillProps) {\n // Local draft keeps the caret stable when the URL round-trip trims the\n // stored value (e.g. trailing spaces). We only re-sync from the prop when\n // the external value is genuinely different from our current (trimmed) draft.\n const [draft, setDraft] = useState(value);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (draft.trim() !== value) setDraft(value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n useEffect(() => {\n if (autoFocus) inputRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Input\n ref={inputRef}\n disabled={disabled}\n value={draft}\n placeholder={field.placeholder ?? `Enter ${field.label}`}\n onChange={e => {\n const next = e.target.value;\n setDraft(next);\n // Apply live — URL and traces query update on every keystroke.\n // Empty values persist as empty-value tokens so the pill stays visible.\n if (next.trim() !== value) onChange(next);\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n const trimmed = draft.trim();\n if (trimmed !== value) onChange(trimmed);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setDraft(value);\n e.currentTarget.blur();\n }\n }}\n />\n <Button\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onMouseDown={e => e.preventDefault()}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\ntype PickMultiTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n token: PropertyFilterToken;\n tokens: PropertyFilterToken[];\n onChange: (fieldId: string, value: string | string[]) => void;\n onRemove: () => void;\n disabled?: boolean;\n};\n\nfunction PickMultiTokenPill({ field, token, tokens, onChange, onRemove, disabled }: PickMultiTokenPillProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button type=\"button\" disabled={disabled}>\n {stringifyTokenValue(token.value)}\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" sideOffset={MENU_SIDE_OFFSET} className=\"w-64 p-0\" data-pick-multi-panel>\n <PickMultiPanel field={field} tokens={tokens} onChange={onChange} />\n </PopoverContent>\n </Popover>\n <Button type=\"button\" disabled={disabled} aria-label={`Remove ${field.label} filter`} onClick={onRemove}>\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\n/**\n * Applied filter pills. Text/id-style tokens render with an always-active\n * input so the user can edit the value inline (and an empty token is valid —\n * it persists in the URL until the user explicitly removes it via ×).\n * Pick-multi tokens render with a clickable value that opens the same side\n * popover as the Filter Creator so the user can update selections in place.\n * Creation lives in a separate component (PropertyFilterCreator).\n */\nexport function PropertyFilterApplied({\n fields,\n tokens,\n onTokensChange,\n disabled,\n autoFocusFieldId,\n lockedFieldIds,\n lockedTooltipContent = DEFAULT_LOCKED_TOOLTIP,\n}: PropertyFilterAppliedProps) {\n if (tokens.length === 0) return null;\n\n const lockedSet = new Set(lockedFieldIds ?? []);\n\n const replaceTokenAt = (index: number, next: PropertyFilterToken) => {\n const copy = [...tokens];\n copy[index] = next;\n onTokensChange(copy);\n };\n\n const removeTokenAt = (index: number) => {\n onTokensChange(tokens.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n {tokens.map((token, index) => {\n const field = fields.find(f => f.id === token.fieldId);\n if (!field) return null;\n\n if (lockedSet.has(token.fieldId)) {\n return (\n <LockedTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n tooltipContent={lockedTooltipContent}\n />\n );\n }\n\n if (field.kind === 'text' && !Array.isArray(token.value)) {\n return (\n <TextTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n disabled={disabled}\n autoFocus={autoFocusFieldId === token.fieldId}\n onChange={nextValue => replaceTokenAt(index, { fieldId: token.fieldId, value: nextValue })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n if (field.kind === 'pick-multi') {\n return (\n <PickMultiTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n token={token}\n tokens={tokens}\n disabled={disabled}\n // Unselecting everything (empty array) keeps the pill alive in a\n // neutral state — the user explicitly removes it via ×. This lets\n // the page-level Reset neutralize values without dropping the pill.\n onChange={(fieldId, value) => replaceTokenAt(index, { fieldId, value })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n return (\n <ButtonsGroup key={`${token.fieldId}-${index}`}>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{stringifyTokenValue(token.value)}</ButtonsGroupText>\n <Button\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onClick={() => removeTokenAt(index)}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n })}\n </div>\n );\n}\n"],"names":["jsxs","jsx","Button","XIcon","DropdownMenu","EllipsisVerticalIcon","SaveIcon","Trash2Icon","cn","menuItemClass","useFluidMenuItemRef","menuItemCheckClass","CheckIcon","useState","useFluidMenu","useMemo","Fragment","menuSearchClasses","SearchIcon","passwordManagerOptOutProps","menuEmptyClass","Spinner","FluidMenuItems","TooltipProvider","Tooltip","TooltipTrigger","ButtonsGroup","ButtonsGroupText","LockIcon","TooltipContent","useRef","useEffect","Input","Popover","PopoverTrigger","PopoverContent","MENU_SIDE_OFFSET"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"property-filter-applied-J9ob_Rss.js","sources":["../src/ds/components/PropertyFilter/property-filter-actions.tsx","../src/ds/components/PropertyFilter/pick-multi-panel.tsx","../src/ds/components/PropertyFilter/property-filter-applied.tsx"],"sourcesContent":["import { EllipsisVerticalIcon, SaveIcon, Trash2Icon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\n\nexport type PropertyFilterActionsProps = {\n disabled?: boolean;\n /** Neutralize each pill's value (keep pills, clear values). Shown as a button, not a menu item. */\n onClear?: () => void;\n /** Fully remove all active filters. Rendered as \"Remove all filters\" inside the overflow menu. */\n onRemoveAll?: () => void;\n /** Persist the current filter set (typically to localStorage) for later restoration. */\n onSave?: () => void;\n /** Drop a previously-saved filter set. Wire only when a saved set actually exists. */\n onRemoveSaved?: () => void;\n};\n\n/**\n * Shared action bar for filter-driven pages (traces, logs, …). Renders a\n * Clear button and an overflow menu with Remove all / Save / Remove saved actions.\n */\nexport function PropertyFilterActions({\n disabled,\n onClear,\n onRemoveAll,\n onSave,\n onRemoveSaved,\n}: PropertyFilterActionsProps) {\n const hasMenuItems = !!(onRemoveAll || onSave || onRemoveSaved);\n if (!onClear && !hasMenuItems) return null;\n\n return (\n <div className=\"flex items-center gap-2\">\n {onClear && (\n <Button disabled={disabled} size=\"md\" onClick={onClear} icon={<XIcon />}>\n Clear\n </Button>\n )}\n\n {hasMenuItems && (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button disabled={disabled} size=\"md\" aria-label=\"More filter actions\">\n <EllipsisVerticalIcon />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {onRemoveAll && (\n <DropdownMenu.Item onSelect={() => onRemoveAll()}>\n <XIcon />\n Remove all filters\n </DropdownMenu.Item>\n )}\n {onRemoveAll && (onSave || onRemoveSaved) && <DropdownMenu.Separator />}\n {onSave && (\n <DropdownMenu.Item onSelect={() => onSave()}>\n <SaveIcon />\n Save filters for next time\n </DropdownMenu.Item>\n )}\n {onRemoveSaved && (\n <DropdownMenu.Item onSelect={() => onRemoveSaved()}>\n <Trash2Icon />\n Remove saved filters\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","import { CheckIcon, SearchIcon } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Spinner } from '@/ds/components/Spinner/spinner';\nimport { FluidMenuItems, useFluidMenu, useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { menuEmptyClass, menuItemCheckClass, menuItemClass, menuSearchClasses } from '@/ds/primitives/menu-item';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { cn } from '@/lib/utils';\n\n// Same rendering as Combobox items: no visible control, a trailing check when selected.\n// Focus is on the item itself (roving via [data-pick-multi-item]): the fluid highlight follows it.\nconst pickMultiItemClass = cn(menuItemClass, 'min-w-0 focus:text-foreground');\n\nfunction PickMultiItem({\n role,\n checked,\n label,\n onClick,\n}: {\n role: 'checkbox' | 'radio';\n checked: boolean;\n label: string;\n onClick: () => void;\n}) {\n return (\n <button\n ref={useFluidMenuItemRef<HTMLButtonElement>()}\n type=\"button\"\n role={role}\n aria-checked={checked}\n data-selected={checked || undefined}\n data-pick-multi-item=\"\"\n title={label}\n className={pickMultiItemClass}\n onClick={onClick}\n >\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n {checked && (\n <span className={menuItemCheckClass}>\n <CheckIcon />\n </span>\n )}\n </button>\n );\n}\n\ntype PickMultiField = Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n\nexport type PickMultiPanelProps = {\n field: PickMultiField;\n tokens: PropertyFilterToken[];\n /** Always carries a value: an empty list is how the panel says \"nothing selected\". */\n onChange: (fieldId: string, value: string | string[]) => void;\n};\n\n/**\n * Reusable body for a pick-multi side popover: optional search input plus a\n * radio group (single-select) or checkbox list (when `field.multi` is true).\n * Shared between the Filter Creator's property-picker side popover and the\n * PropertyFilterApplied pill's inline editor so both surfaces use the exact same UI.\n */\nexport function PickMultiPanel({ field, tokens, onChange }: PickMultiPanelProps) {\n const [query, setQuery] = useState('');\n const menu = useFluidMenu<HTMLDivElement>();\n const listProps = {\n className: cn('max-h-[80dvh] overflow-auto p-1', menu.containerClassName),\n ...menu.getContainerProps({}),\n };\n\n const filteredOptions = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return field.options;\n return field.options.filter(o => o.label.toLowerCase().includes(q));\n }, [field.options, query]);\n\n const token = useMemo(() => tokens.find(t => t.fieldId === field.id), [tokens, field.id]);\n // Fall back to `defaultValue` when no token exists — lets view-toggle fields (e.g. List mode)\n // show their default option pre-selected before the user explicitly picks one.\n const selectedValue = typeof token?.value === 'string' ? token.value : !field.multi ? field.defaultValue : undefined;\n const selectedValues = useMemo<string[]>(() => {\n const value = token?.value;\n if (Array.isArray(value)) return value;\n if (typeof value === 'string') return [value];\n return [];\n }, [token]);\n\n return (\n <>\n {field.searchable !== false && (\n <div className={menuSearchClasses.container}>\n <SearchIcon className={menuSearchClasses.icon} />\n <input\n type=\"text\"\n value={query}\n onChange={e => setQuery(e.target.value)}\n placeholder={`Search ${field.label.toLowerCase()}...`}\n className={menuSearchClasses.input}\n {...passwordManagerOptOutProps}\n onKeyDown={e => {\n if (e.key !== 'ArrowDown') return;\n const panel = e.currentTarget.closest<HTMLElement>('[data-pick-multi-panel]');\n const first = panel?.querySelector<HTMLElement>('[data-pick-multi-item]:not([disabled])');\n if (!first) return;\n e.preventDefault();\n e.stopPropagation();\n first.focus();\n }}\n />\n </div>\n )}\n\n {field.isLoading ? (\n <div className={cn(menuEmptyClass, 'm-1')}>\n <Spinner size=\"sm\" className=\"size-3 text-muted-foreground\" />\n Loading options…\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={cn(menuEmptyClass, 'm-1')}>{field.emptyText ?? 'No option found.'}</div>\n ) : field.multi ? (\n <div {...listProps}>\n <FluidMenuItems menu={menu}>\n {filteredOptions.map(option => {\n const checked = selectedValues.includes(option.value);\n return (\n <PickMultiItem\n key={option.value}\n role=\"checkbox\"\n checked={checked}\n label={option.label}\n onClick={() =>\n onChange(\n field.id,\n checked ? selectedValues.filter(v => v !== option.value) : [...selectedValues, option.value],\n )\n }\n />\n );\n })}\n </FluidMenuItems>\n </div>\n ) : (\n <div role=\"radiogroup\" {...listProps}>\n <FluidMenuItems menu={menu}>\n {filteredOptions.map(option => (\n <PickMultiItem\n key={option.value}\n role=\"radio\"\n checked={selectedValue === option.value}\n label={option.label}\n onClick={() => onChange(field.id, option.value)}\n />\n ))}\n {!field.omitAnyOption && (\n <PickMultiItem\n role=\"radio\"\n checked={selectedValue === 'Any'}\n label=\"Any\"\n onClick={() => onChange(field.id, 'Any')}\n />\n )}\n </FluidMenuItems>\n </div>\n )}\n </>\n );\n}\n","import { LockIcon, XIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { ButtonsGroup, ButtonsGroupText } from '../ButtonsGroup';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip';\nimport { PickMultiPanel } from './pick-multi-panel';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover/popover';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\n\nexport type PropertyFilterAppliedProps = {\n fields: PropertyFilterField[];\n tokens: PropertyFilterToken[];\n onTokensChange: (tokens: PropertyFilterToken[]) => void;\n disabled?: boolean;\n /**\n * Field id that was just added via the Creator — rendered pill auto-focuses\n * its input so the user can start typing immediately.\n */\n autoFocusFieldId?: string;\n /**\n * Field ids whose pills must remain visible and read-only — value stays\n * displayed but cannot be edited or removed. Use when an upstream context\n * (e.g. agent-scoped traces tab) pre-applies a filter that the user must\n * not be able to clear.\n */\n lockedFieldIds?: readonly string[];\n /** Tooltip content shown on hover/focus of any locked pill. */\n lockedTooltipContent?: ReactNode;\n};\n\nfunction stringifyTokenValue(value: string | string[]) {\n if (Array.isArray(value)) return value.length === 0 ? 'Any' : value.join(', ');\n return value;\n}\n\nconst DEFAULT_LOCKED_TOOLTIP = 'This filter is set by the current context and cannot be removed here.';\n\nfunction lookupOptionLabel(field: PropertyFilterField, value: string | string[]): string {\n if (field.kind === 'pick-multi' && field.options) {\n if (Array.isArray(value)) {\n if (value.length === 0) return 'Any';\n return value.map(v => field.options.find(o => o.value === v)?.label ?? v).join(', ');\n }\n return field.options.find(o => o.value === value)?.label ?? value;\n }\n return stringifyTokenValue(value);\n}\n\ntype LockedTokenPillProps = {\n field: PropertyFilterField;\n value: string | string[];\n tooltipContent: ReactNode;\n};\n\nfunction LockedTokenPill({ field, value, tooltipContent }: LockedTokenPillProps) {\n const display = lookupOptionLabel(field, value);\n const lockA11yLabel = `${field.label} filter is locked by context`;\n\n return (\n <TooltipProvider delayDuration={150}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ButtonsGroup\n data-locked-field-id={field.id}\n data-property-filter-pill=\"locked\"\n tabIndex={0}\n aria-label={lockA11yLabel}\n >\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{display}</ButtonsGroupText>\n <ButtonsGroupText>\n <LockIcon />\n </ButtonsGroupText>\n </ButtonsGroup>\n </TooltipTrigger>\n <TooltipContent>{tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n\ntype TextTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'text' }>;\n value: string;\n onChange: (value: string) => void;\n onRemove: () => void;\n disabled?: boolean;\n autoFocus?: boolean;\n};\n\nfunction TextTokenPill({ field, value, onChange, onRemove, disabled, autoFocus }: TextTokenPillProps) {\n // Local draft keeps the caret stable when the URL round-trip trims the\n // stored value (e.g. trailing spaces). We only re-sync from the prop when\n // the external value is genuinely different from our current (trimmed) draft.\n const [draft, setDraft] = useState(value);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (draft.trim() !== value) setDraft(value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n useEffect(() => {\n if (autoFocus) inputRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Input\n ref={inputRef}\n disabled={disabled}\n value={draft}\n placeholder={field.placeholder ?? `Enter ${field.label}`}\n onChange={e => {\n const next = e.target.value;\n setDraft(next);\n // Apply live — URL and traces query update on every keystroke.\n // Empty values persist as empty-value tokens so the pill stays visible.\n if (next.trim() !== value) onChange(next);\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n const trimmed = draft.trim();\n if (trimmed !== value) onChange(trimmed);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setDraft(value);\n e.currentTarget.blur();\n }\n }}\n />\n <Button\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onMouseDown={e => e.preventDefault()}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\ntype PickMultiTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n token: PropertyFilterToken;\n tokens: PropertyFilterToken[];\n onChange: (fieldId: string, value: string | string[]) => void;\n onRemove: () => void;\n disabled?: boolean;\n};\n\nfunction PickMultiTokenPill({ field, token, tokens, onChange, onRemove, disabled }: PickMultiTokenPillProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button type=\"button\" disabled={disabled}>\n {stringifyTokenValue(token.value)}\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" sideOffset={MENU_SIDE_OFFSET} className=\"w-64 p-0\" data-pick-multi-panel>\n <PickMultiPanel field={field} tokens={tokens} onChange={onChange} />\n </PopoverContent>\n </Popover>\n <Button type=\"button\" disabled={disabled} aria-label={`Remove ${field.label} filter`} onClick={onRemove}>\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\n/**\n * Applied filter pills. Text/id-style tokens render with an always-active\n * input so the user can edit the value inline (and an empty token is valid —\n * it persists in the URL until the user explicitly removes it via ×).\n * Pick-multi tokens render with a clickable value that opens the same side\n * popover as the Filter Creator so the user can update selections in place.\n * Creation lives in a separate component (PropertyFilterCreator).\n */\nexport function PropertyFilterApplied({\n fields,\n tokens,\n onTokensChange,\n disabled,\n autoFocusFieldId,\n lockedFieldIds,\n lockedTooltipContent = DEFAULT_LOCKED_TOOLTIP,\n}: PropertyFilterAppliedProps) {\n if (tokens.length === 0) return null;\n\n const lockedSet = new Set(lockedFieldIds ?? []);\n\n const replaceTokenAt = (index: number, next: PropertyFilterToken) => {\n const copy = [...tokens];\n copy[index] = next;\n onTokensChange(copy);\n };\n\n const removeTokenAt = (index: number) => {\n onTokensChange(tokens.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n {tokens.map((token, index) => {\n const field = fields.find(f => f.id === token.fieldId);\n if (!field) return null;\n\n if (lockedSet.has(token.fieldId)) {\n return (\n <LockedTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n tooltipContent={lockedTooltipContent}\n />\n );\n }\n\n if (field.kind === 'text' && !Array.isArray(token.value)) {\n return (\n <TextTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n disabled={disabled}\n autoFocus={autoFocusFieldId === token.fieldId}\n onChange={nextValue => replaceTokenAt(index, { fieldId: token.fieldId, value: nextValue })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n if (field.kind === 'pick-multi') {\n return (\n <PickMultiTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n token={token}\n tokens={tokens}\n disabled={disabled}\n // Unselecting everything (empty array) keeps the pill alive in a\n // neutral state — the user explicitly removes it via ×. This lets\n // the page-level Reset neutralize values without dropping the pill.\n onChange={(fieldId, value) => replaceTokenAt(index, { fieldId, value })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n return (\n <ButtonsGroup key={`${token.fieldId}-${index}`}>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{stringifyTokenValue(token.value)}</ButtonsGroupText>\n <Button\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onClick={() => removeTokenAt(index)}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n })}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"select-CQtsggxJ.js","sources":["../src/ds/components/Select/select.tsx"],"sourcesContent":["import { Select as SelectPrimitive } from '@base-ui/react/select';\nimport type { SelectPopupProps, SelectPositionerProps } from '@base-ui/react/select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { buttonVariants } from '../Button/Button';\nimport type { TextButtonSize } from '../Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { controlTriggerOpenState } from '@/ds/primitives/control-size';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { useFluidMenu, useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { fieldTriggerErrorBorder, fieldTriggerStyle, fieldTriggerWidthStyle } from '@/ds/primitives/form-element';\nimport { menuItemCheckClass, menuItemClass, menuPopupClass, menuPositionerClass } from '@/ds/primitives/menu-item';\nimport { menuScrollPopupClass, MenuScrollArea } from '@/ds/primitives/menu-scroll-area';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n/**\n * Select migrated from `@radix-ui/react-select` to Base UI (`@base-ui/react/select`).\n *\n * The public API (`Select`, `SelectGroup`, `SelectValue`, `SelectTrigger`,\n * `SelectContent`, `SelectItem`) is intentionally kept stable so existing\n * consumers do not need changes.\n *\n * Notable behavioral differences vs. Radix that consumers should be aware of:\n * - `onValueChange` now receives a second `eventDetails` argument. Existing\n * handlers typed as `(value: string) => void` keep working (extra arg ignored).\n * - The dropdown no longer overlaps the trigger by default\n * (`alignItemWithTrigger={false}`), matching the previous Radix `popper`\n * positioning behavior.\n *\n * Implementation note: unlike Radix, Base UI's `Select.Value` can only resolve\n * a selected value to its label once the popup has mounted (it reads labels\n * from rendered items). To preserve the Radix behavior where the trigger shows\n * the selected label even while closed, `Select` auto-derives an `items` map\n * from the `SelectItem`s declared inside `SelectContent` and passes it to\n * `Select.Root`. Consumers can still pass an explicit `items` prop to override.\n */\ntype SelectItemNode = React.ReactElement<{ value: unknown; children?: React.ReactNode }>;\n\nfunction isSelectItem(node: React.ReactNode): node is SelectItemNode {\n return React.isValidElement(node) && (node.type as { displayName?: string })?.displayName === 'SelectItem';\n}\n\n/** Recursively collect `{ value, label }` pairs from declared `SelectItem`s. */\nfunction collectItems(children: React.ReactNode, acc: Array<{ value: unknown; label: React.ReactNode }>): void {\n React.Children.forEach(children, child => {\n if (!React.isValidElement(child)) return;\n if (isSelectItem(child)) {\n acc.push({ value: child.props.value, label: child.props.children });\n return;\n }\n const nested = (child.props as { children?: React.ReactNode })?.children;\n if (nested != null) collectItems(nested, acc);\n });\n}\n\ntype SelectRootProps<Value> = SelectPrimitive.Root.Props<Value, false>;\ntype SelectChangeDetails = Parameters<NonNullable<SelectRootProps<unknown>['onValueChange']>>[1];\n\n/**\n * `onValueChange` is intentionally narrowed to a non-null value: these selects\n * always hold a value once changed, which keeps existing `(value) => void`\n * consumer handlers valid (Base UI's own callback type is `Value | null`).\n */\ntype SelectProps<Value = string> = Omit<SelectRootProps<Value>, 'onValueChange'> & {\n onValueChange?: (value: Value, eventDetails: SelectChangeDetails) => void;\n};\n\nfunction Select<Value = string>({ children, items, onValueChange, ...props }: SelectProps<Value>) {\n const derivedItems = React.useMemo(() => {\n if (items != null) return items;\n const acc: Array<{ value: unknown; label: React.ReactNode }> = [];\n collectItems(children, acc);\n return acc.length > 0 ? acc : undefined;\n }, [items, children]);\n\n return (\n <SelectPrimitive.Root\n items={derivedItems as SelectRootProps<Value>['items']}\n onValueChange={onValueChange ? (value, eventDetails) => onValueChange(value as Value, eventDetails) : undefined}\n {...props}\n >\n {children}\n </SelectPrimitive.Root>\n );\n}\nSelect.displayName = 'Select';\n\nconst SelectGroup = SelectPrimitive.Group;\n\nexport type SelectValueProps = Omit<SelectPrimitive.Value.Props, 'className'> & {\n className?: string;\n};\n\n/**\n * Displays the selected value. Radix's `Select.Value` took a `placeholder`\n * prop and rendered the selected item's text automatically; Base UI's\n * `Select.Value` behaves the same way (renders the value, falls back to\n * `placeholder` when nothing is selected), so this is a thin passthrough.\n */\nconst SelectValue = React.forwardRef<HTMLSpanElement, SelectValueProps>(({ className, ...props }, ref) => (\n <SelectPrimitive.Value ref={ref} className={cn('truncate', className)} {...props} />\n));\nSelectValue.displayName = 'SelectValue';\n\n/**\n * A select is a form field, so it reuses the Button's size/shape recipe with\n * these looks: `default` (the Input's overlay surface — the default here too,\n * so a select sits next to an Input as the same kind of thing) and `ghost`\n * (borderless, for dense toolbars/inline pickers). The high-emphasis `primary` look is the only one intentionally NOT\n * offered (a field is not a call-to-action).\n */\nexport type SelectTriggerVariant = 'default' | 'ghost';\ntype SelectTriggerLegacyVariant = 'primary';\n\nexport type SelectTriggerProps = Omit<SelectPrimitive.Trigger.Props, 'className'> & {\n className?: string;\n size?: TextButtonSize;\n variant?: SelectTriggerVariant | SelectTriggerLegacyVariant;\n};\n\nfunction normalizeSelectTriggerVariant(\n variant: SelectTriggerVariant | SelectTriggerLegacyVariant,\n): SelectTriggerVariant {\n return variant === 'primary' ? 'default' : variant;\n}\n\nconst SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className, children, size = 'md', variant = 'default', ...props }, ref) => {\n const visualVariant = normalizeSelectTriggerVariant(variant);\n\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n data-slot=\"select-trigger\"\n // A select = a button + a trailing chevron: reuse the Button recipe\n // (variant colors, size = height/text/padding/radius, unified border\n // focus, disabled) and layer only the select-specific extras.\n className={cn(\n buttonVariants({ variant: visualVariant, size }),\n visualVariant === 'default' && fieldTriggerStyle,\n // Fill the field and push the value left / chevron right (Button's\n // base centers its content with `justify-center`).\n fieldTriggerWidthStyle,\n 'justify-between',\n // Read as \"active\" while the menu is open, per variant (see map above).\n controlTriggerOpenState[visualVariant],\n 'data-[placeholder]:text-muted-foreground',\n fieldTriggerErrorBorder,\n '[&>span]:truncate',\n className,\n )}\n {...props}\n {...keepOwnAccessibleName(props)}\n >\n {children}\n {/* `SelectPrimitive.Icon` renders the provided element in place of its\n default `<span>`, so the chevron would land as a *direct* `<svg>`\n child of the trigger — where Button's `TEXT_MODE_ADORNMENTS`\n `[&>svg]` rules (negative `mx`, forced 50% opacity, 1.1em sizing)\n would distort and mis-position it. Wrapping it in a `<span>` keeps\n the svg one level deep so those rules can't reach it, leaving the\n chevron pinned at the right edge at its intended size and color. */}\n <SelectPrimitive.Icon\n render={\n <span className=\"flex shrink-0 items-center\">\n <ChevronDown className={cn('size-4 text-muted-foreground', transitions.colors)} />\n </span>\n }\n />\n </SelectPrimitive.Trigger>\n );\n },\n);\nSelectTrigger.displayName = 'SelectTrigger';\n\ntype SelectContentPositionerProps = Omit<SelectPositionerProps, keyof SelectPopupProps>;\n\nexport type SelectContentProps = Omit<SelectPopupProps, 'className'> &\n SelectContentPositionerProps & {\n className?: string;\n /**\n * Kept for API compatibility with the previous Radix API. Radix supported\n * `position=\"popper\" | \"item-aligned\"`; Base UI always uses popper-style\n * positioning so this prop is accepted but has no effect.\n */\n position?: 'popper' | 'item-aligned';\n /** Optional portal container, forwarded to `Select.Portal`. */\n container?: HTMLElement | null;\n };\n\nconst SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n (\n {\n className,\n children,\n position: _position,\n container,\n side = 'bottom',\n align = 'start',\n sideOffset = 4,\n alignItemWithTrigger = false,\n anchor,\n positionMethod = FLOATING_POSITION_METHOD,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n },\n ref,\n ) => {\n // Default to the nearest SideDialog/Drawer popup so the dropdown stays\n // interactive inside a modal drawer; an explicit `container` still wins.\n const resolvedContainer = usePortalContainer(container);\n const menu = useFluidMenu<HTMLDivElement>();\n const positionerProps: SelectContentPositionerProps = {\n side,\n align,\n sideOffset,\n alignItemWithTrigger,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n };\n\n return (\n <SelectPrimitive.Portal container={resolvedContainer}>\n <SelectPrimitive.Positioner className={menuPositionerClass} {...positionerProps}>\n <SelectPrimitive.Popup ref={ref} className={cn(menuPopupClass, menuScrollPopupClass, className)} {...props}>\n {/* The viewport is Select's list, so Select scrolls it to line the selected item up with the\n trigger. `role` is restated because the viewport's own `presentation` role would win. */}\n <MenuScrollArea menu={menu} viewportRender={<SelectPrimitive.List role=\"listbox\" />}>\n {children}\n </MenuScrollArea>\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n },\n);\nSelectContent.displayName = 'SelectContent';\n\nexport type SelectItemProps = Omit<SelectPrimitive.Item.Props, 'className'> & {\n className?: string;\n};\n\nconst SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item ref={useFluidMenuItemRef(ref)} className={cn(menuItemClass, className)} {...props}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className={menuItemCheckClass}>\n <Check />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectItem };\n"],"names":["SelectPrimitive"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"select-CbNLtiAs.cjs","sources":["../src/ds/components/Select/select.tsx"],"sourcesContent":["import { Select as SelectPrimitive } from '@base-ui/react/select';\nimport type { SelectPopupProps, SelectPositionerProps } from '@base-ui/react/select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { buttonVariants } from '../Button/Button';\nimport type { TextButtonSize } from '../Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { controlTriggerOpenState } from '@/ds/primitives/control-size';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { useFluidMenu, useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { fieldTriggerErrorBorder, fieldTriggerStyle, fieldTriggerWidthStyle } from '@/ds/primitives/form-element';\nimport { menuItemCheckClass, menuItemClass, menuPopupClass, menuPositionerClass } from '@/ds/primitives/menu-item';\nimport { menuScrollPopupClass, MenuScrollArea } from '@/ds/primitives/menu-scroll-area';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n/**\n * Select migrated from `@radix-ui/react-select` to Base UI (`@base-ui/react/select`).\n *\n * The public API (`Select`, `SelectGroup`, `SelectValue`, `SelectTrigger`,\n * `SelectContent`, `SelectItem`) is intentionally kept stable so existing\n * consumers do not need changes.\n *\n * Notable behavioral differences vs. Radix that consumers should be aware of:\n * - `onValueChange` now receives a second `eventDetails` argument. Existing\n * handlers typed as `(value: string) => void` keep working (extra arg ignored).\n * - The dropdown no longer overlaps the trigger by default\n * (`alignItemWithTrigger={false}`), matching the previous Radix `popper`\n * positioning behavior.\n *\n * Implementation note: unlike Radix, Base UI's `Select.Value` can only resolve\n * a selected value to its label once the popup has mounted (it reads labels\n * from rendered items). To preserve the Radix behavior where the trigger shows\n * the selected label even while closed, `Select` auto-derives an `items` map\n * from the `SelectItem`s declared inside `SelectContent` and passes it to\n * `Select.Root`. Consumers can still pass an explicit `items` prop to override.\n */\ntype SelectItemNode = React.ReactElement<{ value: unknown; children?: React.ReactNode }>;\n\nfunction isSelectItem(node: React.ReactNode): node is SelectItemNode {\n return React.isValidElement(node) && (node.type as { displayName?: string })?.displayName === 'SelectItem';\n}\n\n/** Recursively collect `{ value, label }` pairs from declared `SelectItem`s. */\nfunction collectItems(children: React.ReactNode, acc: Array<{ value: unknown; label: React.ReactNode }>): void {\n React.Children.forEach(children, child => {\n if (!React.isValidElement(child)) return;\n if (isSelectItem(child)) {\n acc.push({ value: child.props.value, label: child.props.children });\n return;\n }\n const nested = (child.props as { children?: React.ReactNode })?.children;\n if (nested != null) collectItems(nested, acc);\n });\n}\n\ntype SelectRootProps<Value> = SelectPrimitive.Root.Props<Value, false>;\ntype SelectChangeDetails = Parameters<NonNullable<SelectRootProps<unknown>['onValueChange']>>[1];\n\n/**\n * `onValueChange` is intentionally narrowed to a non-null value: these selects\n * always hold a value once changed, which keeps existing `(value) => void`\n * consumer handlers valid (Base UI's own callback type is `Value | null`).\n */\ntype SelectProps<Value = string> = Omit<SelectRootProps<Value>, 'onValueChange'> & {\n onValueChange?: (value: Value, eventDetails: SelectChangeDetails) => void;\n};\n\nfunction Select<Value = string>({ children, items, onValueChange, ...props }: SelectProps<Value>) {\n const derivedItems = React.useMemo(() => {\n if (items != null) return items;\n const acc: Array<{ value: unknown; label: React.ReactNode }> = [];\n collectItems(children, acc);\n return acc.length > 0 ? acc : undefined;\n }, [items, children]);\n\n return (\n <SelectPrimitive.Root\n items={derivedItems as SelectRootProps<Value>['items']}\n onValueChange={onValueChange ? (value, eventDetails) => onValueChange(value as Value, eventDetails) : undefined}\n {...props}\n >\n {children}\n </SelectPrimitive.Root>\n );\n}\nSelect.displayName = 'Select';\n\nconst SelectGroup = SelectPrimitive.Group;\n\nexport type SelectValueProps = Omit<SelectPrimitive.Value.Props, 'className'> & {\n className?: string;\n};\n\n/**\n * Displays the selected value. Radix's `Select.Value` took a `placeholder`\n * prop and rendered the selected item's text automatically; Base UI's\n * `Select.Value` behaves the same way (renders the value, falls back to\n * `placeholder` when nothing is selected), so this is a thin passthrough.\n */\nconst SelectValue = React.forwardRef<HTMLSpanElement, SelectValueProps>(({ className, ...props }, ref) => (\n <SelectPrimitive.Value ref={ref} className={cn('truncate', className)} {...props} />\n));\nSelectValue.displayName = 'SelectValue';\n\n/**\n * A select is a form field, so it reuses the Button's size/shape recipe with\n * these looks: `default` (the Input's overlay surface — the default here too,\n * so a select sits next to an Input as the same kind of thing) and `ghost`\n * (borderless, for dense toolbars/inline pickers). The high-emphasis `primary` look is the only one intentionally NOT\n * offered (a field is not a call-to-action).\n */\nexport type SelectTriggerVariant = 'default' | 'ghost';\ntype SelectTriggerLegacyVariant = 'primary';\n\nexport type SelectTriggerProps = Omit<SelectPrimitive.Trigger.Props, 'className'> & {\n className?: string;\n size?: TextButtonSize;\n variant?: SelectTriggerVariant | SelectTriggerLegacyVariant;\n};\n\nfunction normalizeSelectTriggerVariant(\n variant: SelectTriggerVariant | SelectTriggerLegacyVariant,\n): SelectTriggerVariant {\n return variant === 'primary' ? 'default' : variant;\n}\n\nconst SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className, children, size = 'md', variant = 'default', ...props }, ref) => {\n const visualVariant = normalizeSelectTriggerVariant(variant);\n\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n data-slot=\"select-trigger\"\n // A select = a button + a trailing chevron: reuse the Button recipe\n // (variant colors, size = height/text/padding/radius, unified border\n // focus, disabled) and layer only the select-specific extras.\n className={cn(\n buttonVariants({ variant: visualVariant, size }),\n visualVariant === 'default' && fieldTriggerStyle,\n // Fill the field and push the value left / chevron right (Button's\n // base centers its content with `justify-center`).\n fieldTriggerWidthStyle,\n 'justify-between',\n // Read as \"active\" while the menu is open, per variant (see map above).\n controlTriggerOpenState[visualVariant],\n 'data-[placeholder]:text-muted-foreground',\n fieldTriggerErrorBorder,\n '[&>span]:truncate',\n className,\n )}\n {...props}\n {...keepOwnAccessibleName(props)}\n >\n {children}\n {/* `SelectPrimitive.Icon` renders the provided element in place of its\n default `<span>`, so the chevron would land as a *direct* `<svg>`\n child of the trigger — where Button's `TEXT_MODE_ADORNMENTS`\n `[&>svg]` rules (negative `mx`, forced 50% opacity, 1.1em sizing)\n would distort and mis-position it. Wrapping it in a `<span>` keeps\n the svg one level deep so those rules can't reach it, leaving the\n chevron pinned at the right edge at its intended size and color. */}\n <SelectPrimitive.Icon\n render={\n <span className=\"flex shrink-0 items-center\">\n <ChevronDown className={cn('size-4 text-muted-foreground', transitions.colors)} />\n </span>\n }\n />\n </SelectPrimitive.Trigger>\n );\n },\n);\nSelectTrigger.displayName = 'SelectTrigger';\n\ntype SelectContentPositionerProps = Omit<SelectPositionerProps, keyof SelectPopupProps>;\n\nexport type SelectContentProps = Omit<SelectPopupProps, 'className'> &\n SelectContentPositionerProps & {\n className?: string;\n /**\n * Kept for API compatibility with the previous Radix API. Radix supported\n * `position=\"popper\" | \"item-aligned\"`; Base UI always uses popper-style\n * positioning so this prop is accepted but has no effect.\n */\n position?: 'popper' | 'item-aligned';\n /** Optional portal container, forwarded to `Select.Portal`. */\n container?: HTMLElement | null;\n };\n\nconst SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n (\n {\n className,\n children,\n position: _position,\n container,\n side = 'bottom',\n align = 'start',\n sideOffset = 4,\n alignItemWithTrigger = false,\n anchor,\n positionMethod = FLOATING_POSITION_METHOD,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n },\n ref,\n ) => {\n // Default to the nearest SideDialog/Drawer popup so the dropdown stays\n // interactive inside a modal drawer; an explicit `container` still wins.\n const resolvedContainer = usePortalContainer(container);\n const menu = useFluidMenu<HTMLDivElement>();\n const positionerProps: SelectContentPositionerProps = {\n side,\n align,\n sideOffset,\n alignItemWithTrigger,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n };\n\n return (\n <SelectPrimitive.Portal container={resolvedContainer}>\n <SelectPrimitive.Positioner className={menuPositionerClass} {...positionerProps}>\n <SelectPrimitive.Popup ref={ref} className={cn(menuPopupClass, menuScrollPopupClass, className)} {...props}>\n {/* The viewport is Select's list, so Select scrolls it to line the selected item up with the\n trigger. `role` is restated because the viewport's own `presentation` role would win. */}\n <MenuScrollArea menu={menu} viewportRender={<SelectPrimitive.List role=\"listbox\" />}>\n {children}\n </MenuScrollArea>\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n },\n);\nSelectContent.displayName = 'SelectContent';\n\nexport type SelectItemProps = Omit<SelectPrimitive.Item.Props, 'className'> & {\n className?: string;\n};\n\nconst SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item ref={useFluidMenuItemRef(ref)} className={cn(menuItemClass, className)} {...props}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className={menuItemCheckClass}>\n <Check />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectItem };\n"],"names":["React","jsx","SelectPrimitive","cn","jsxs","buttonVariants","fieldTriggerStyle","fieldTriggerWidthStyle","controlTriggerOpenState","fieldTriggerErrorBorder","keepOwnAccessibleName","ChevronDown","transitions","FLOATING_POSITION_METHOD","usePortalContainer","useFluidMenu","menuPositionerClass","menuPopupClass","menuScrollPopupClass","MenuScrollArea","useFluidMenuItemRef","menuItemClass","menuItemCheckClass","Check"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread-list-BANpytn3.cjs","sources":["../src/ds/components/ThreadList/thread-list.tsx"],"sourcesContent":["import { X } from 'lucide-react';\nimport { createElement, type ElementType, type MouseEvent, type ReactNode } from 'react';\n\nimport { cn } from '../../../lib/utils';\nimport { raisedSurfaceStyle } from '../../primitives/raised-surface';\nimport { Button, type ButtonProps } from '../Button';\nimport { Txt } from '../Txt';\n\nexport interface ThreadListProps {\n children: ReactNode;\n 'aria-label'?: string;\n /**\n * When true, drops the standalone block chrome (background, border, rounded corners, inset)\n * so the list can render flush inside an outer container without nesting a second box.\n */\n embedded?: boolean;\n}\n\nexport const ThreadList = ({ children, 'aria-label': ariaLabel = 'Threads', embedded = false }: ThreadListProps) => {\n return (\n <div className={cn('size-full', !embedded && 'pb-2 pl-2')}>\n <nav\n aria-label={ariaLabel}\n className={cn(\n 'flex h-full flex-col gap-1 overflow-y-auto p-1',\n !embedded && cn(raisedSurfaceStyle, 'rounded-studio-panel'),\n )}\n >\n {children}\n </nav>\n </div>\n );\n};\n\nexport interface ThreadListNewItemProps {\n render?: ButtonProps['render'];\n children: ReactNode;\n}\n\nexport const ThreadListNewItem = ({ render, children }: ThreadListNewItemProps) => {\n return (\n <Button render={render} variant=\"ghost\" className=\"w-full justify-start rounded-xl px-3\">\n {children}\n </Button>\n );\n};\n\nexport const ThreadListSeparator = () => (\n <div role=\"separator\" aria-orientation=\"horizontal\" className=\"-mx-1 h-px shrink-0 bg-border/40\" />\n);\n\nexport interface ThreadListItemsProps {\n children: ReactNode;\n}\n\nexport const ThreadListItems = ({ children }: ThreadListItemsProps) => (\n <ol className=\"flex flex-col gap-1\" data-testid=\"thread-list\">\n {children}\n </ol>\n);\n\nexport interface ThreadListItemProps {\n as?: ElementType;\n href?: string;\n to?: string;\n isActive?: boolean;\n onClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n onDelete?: () => void;\n deleteLabel?: string;\n /** Trailing controls (e.g. a menu trigger) shown on hover/focus, and kept visible while a popup they own is open. */\n actions?: ReactNode;\n className?: string;\n children: ReactNode;\n}\n\nexport const ThreadListItem = ({\n as,\n href,\n to,\n isActive,\n onClick,\n onDelete,\n deleteLabel = 'delete',\n actions,\n className,\n children,\n}: ThreadListItemProps) => {\n return (\n <li className=\"group relative\">\n <Button\n render={as ? createElement(as, { href, to }) : undefined}\n onClick={onClick}\n variant=\"ghost\"\n className={cn(\n 'w-full min-w-0 justify-start rounded-xl px-3 text-left',\n (onDelete || actions) && 'pr-9',\n isActive && 'bg-fill-hover text-foreground',\n className,\n )}\n >\n <span className=\"min-w-0 flex-1\">{children}</span>\n </Button>\n\n {onDelete && (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"absolute top-1/2 right-1 -translate-y-1/2 opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100\"\n onClick={onDelete}\n aria-label={deleteLabel}\n >\n <X />\n </Button>\n )}\n\n {actions && (\n <div className=\"absolute top-1/2 right-px flex -translate-y-1/2 items-center opacity-0 transition-opacity group-focus-within:opacity-100 group-hover:opacity-100 has-data-popup-open:opacity-100\">\n {actions}\n </div>\n )}\n </li>\n );\n};\n\nexport interface ThreadListEmptyProps {\n children: ReactNode;\n}\n\nexport const ThreadListEmpty = ({ children }: ThreadListEmptyProps) => {\n return (\n <Txt as=\"p\" variant=\"caption\" tone=\"muted\" className=\"px-3 py-2\">\n {children}\n </Txt>\n );\n};\n"],"names":["jsx","cn","raisedSurfaceStyle","Button","jsxs","createElement","X","Txt"],"mappings":";;;;;;;;;;AAkBO,MAAM,UAAA,GAAa,CAAC,EAAE,QAAA,EAAU,cAAc,SAAA,GAAY,SAAA,EAAW,QAAA,GAAW,KAAA,EAAM,KAAuB;AAClH,EAAA,uBACEA,cAAA,CAAC,SAAI,SAAA,EAAWC,WAAA,CAAG,aAAa,CAAC,QAAA,IAAY,WAAW,CAAA,EACtD,QAAA,kBAAAD,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAWC,WAAA;AAAA,QACT,gDAAA;AAAA,QACA,CAAC,QAAA,IAAYA,WAAA,CAAGC,2CAAA,EAAoB,sBAAsB;AAAA,OAC5D;AAAA,MAEC;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAOO,MAAM,iBAAA,GAAoB,CAAC,EAAE,MAAA,EAAQ,UAAS,KAA8B;AACjF,EAAA,sCACGC,aAAA,EAAA,EAAO,MAAA,EAAgB,SAAQ,OAAA,EAAQ,SAAA,EAAU,wCAC/C,QAAA,EACH,CAAA;AAEJ;AAEO,MAAM,mBAAA,GAAsB,sBACjCH,cAAA,CAAC,KAAA,EAAA,EAAI,MAAK,WAAA,EAAY,kBAAA,EAAiB,YAAA,EAAa,SAAA,EAAU,kCAAA,EAAmC;AAO5F,MAAM,eAAA,GAAkB,CAAC,EAAE,QAAA,EAAS,qBACzCA,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,qBAAA,EAAsB,aAAA,EAAY,aAAA,EAC7C,QAAA,EACH;AAiBK,MAAM,iBAAiB,CAAC;AAAA,EAC7B,EAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAA2B;AACzB,EAAA,uBACEI,eAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,oBAAAJ,cAAA;AAAA,MAACG,aAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,KAAKE,mBAAA,CAAc,EAAA,EAAI,EAAE,IAAA,EAAM,EAAA,EAAI,CAAA,GAAI,MAAA;AAAA,QAC/C,OAAA;AAAA,QACA,OAAA,EAAQ,OAAA;AAAA,QACR,SAAA,EAAWJ,WAAA;AAAA,UACT,wDAAA;AAAA,UAAA,CACC,YAAY,OAAA,KAAY,MAAA;AAAA,UACzB,QAAA,IAAY,+BAAA;AAAA,UACZ;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAS;AAAA;AAAA,KAC7C;AAAA,IAEC,QAAA,oBACCA,cAAA;AAAA,MAACG,aAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAK,SAAA;AAAA,QACL,SAAA,EAAU,+HAAA;AAAA,QACV,OAAA,EAAS,QAAA;AAAA,QACT,YAAA,EAAY,WAAA;AAAA,QAEZ,yCAACG,aAAA,EAAA,EAAE;AAAA;AAAA,KACL;AAAA,IAGD,OAAA,oBACCN,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oLACZ,QAAA,EAAA,OAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAMO,MAAM,eAAA,GAAkB,CAAC,EAAE,QAAA,EAAS,KAA4B;AACrE,EAAA,uBACEA,cAAA,CAACO,OAAA,EAAA,EAAI,EAAA,EAAG,GAAA,EAAI,OAAA,EAAQ,WAAU,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,WAAA,EAClD,QAAA,EACH,CAAA;AAEJ;;;;;;;;;"}