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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (883) hide show
  1. package/README.md +10 -0
  2. package/components.css +7 -0
  3. package/dist/{Avatar-98bsFrSV.js → Avatar-BjaG9NU_.js} +10 -8
  4. package/dist/Avatar-BjaG9NU_.js.map +1 -0
  5. package/dist/{Avatar-BCj8SvOb.cjs → Avatar-DM90rmwx.cjs} +10 -8
  6. package/dist/Avatar-DM90rmwx.cjs.map +1 -0
  7. package/dist/{Button-DH1aTzbs.cjs → Button-C4I05uT4.cjs} +17 -10
  8. package/dist/Button-C4I05uT4.cjs.map +1 -0
  9. package/dist/{Button-EGoajBQY.js → Button-D8a5EWJ5.js} +18 -11
  10. package/dist/Button-D8a5EWJ5.js.map +1 -0
  11. package/dist/{ErrorBoundary-DQPzT6am.js → ErrorBoundary-C6JifxpQ.js} +2 -2
  12. package/dist/{ErrorBoundary-DQPzT6am.js.map → ErrorBoundary-C6JifxpQ.js.map} +1 -1
  13. package/dist/{ErrorBoundary-CpUob9SO.cjs → ErrorBoundary-DP1JqmTo.cjs} +2 -2
  14. package/dist/{ErrorBoundary-CpUob9SO.cjs.map → ErrorBoundary-DP1JqmTo.cjs.map} +1 -1
  15. package/dist/Notice-BioYTS4b.js.map +1 -1
  16. package/dist/Notice-DYgIy4FO.cjs.map +1 -1
  17. package/dist/{activity-CsTUr5_l.js → activity-B7c_nQMn.js} +2 -2
  18. package/dist/activity-B7c_nQMn.js.map +1 -0
  19. package/dist/{activity-2tovEdIP.cjs → activity-D3iI9pYN.cjs} +2 -2
  20. package/dist/activity-D3iI9pYN.cjs.map +1 -0
  21. package/dist/{alert-dialog-B7JTnkF4.js → alert-dialog-B13NSeKN.js} +3 -3
  22. package/dist/{alert-dialog-B7JTnkF4.js.map → alert-dialog-B13NSeKN.js.map} +1 -1
  23. package/dist/{alert-dialog-B1gWLQm2.cjs → alert-dialog-DY2JJAnk.cjs} +3 -3
  24. package/dist/{alert-dialog-B1gWLQm2.cjs.map → alert-dialog-DY2JJAnk.cjs.map} +1 -1
  25. package/dist/arrival-C1hkyLHm.js.map +1 -1
  26. package/dist/arrival-Cvxloi0B.cjs.map +1 -1
  27. package/dist/{ask-user-card-DroerVbm.cjs → ask-user-card-DiFQcUzM.cjs} +2 -2
  28. package/dist/ask-user-card-DiFQcUzM.cjs.map +1 -0
  29. package/dist/{ask-user-card-BCjsjimu.js → ask-user-card-DnvW7jXS.js} +2 -2
  30. package/dist/{ask-user-card-BCjsjimu.js.map → ask-user-card-DnvW7jXS.js.map} +1 -1
  31. package/dist/{avatar-size-CNR0U-LW.js → avatar-size-BXzy28Bx.js} +4 -1
  32. package/dist/avatar-size-BXzy28Bx.js.map +1 -0
  33. package/dist/{avatar-size-DxStOo5A.cjs → avatar-size-DIFE4I8A.cjs} +4 -1
  34. package/dist/avatar-size-DIFE4I8A.cjs.map +1 -0
  35. package/dist/buttons-group.css +0 -4
  36. package/dist/code-DJReJPSX.cjs.map +1 -1
  37. package/dist/code-DLuATvYu.js.map +1 -1
  38. package/dist/{code-block-vpcX2sDQ.cjs → code-block-C79fiykv.cjs} +4 -4
  39. package/dist/{code-block-vpcX2sDQ.cjs.map → code-block-C79fiykv.cjs.map} +1 -1
  40. package/dist/{code-block-DIDa6lg6.js → code-block-D6A1DMv-.js} +4 -4
  41. package/dist/{code-block-DIDa6lg6.js.map → code-block-D6A1DMv-.js.map} +1 -1
  42. package/dist/{code-editor-BDxYMkGm.js → code-editor-8Fpinga4.js} +2 -2
  43. package/dist/{code-editor-BDxYMkGm.js.map → code-editor-8Fpinga4.js.map} +1 -1
  44. package/dist/{code-editor-DQuJ1XXd.cjs → code-editor-Bd-Cldem.cjs} +2 -2
  45. package/dist/{code-editor-DQuJ1XXd.cjs.map → code-editor-Bd-Cldem.cjs.map} +1 -1
  46. package/dist/{collapsible-box-B9ATVQzW.cjs → collapsible-box-CzU0OwJx.cjs} +2 -2
  47. package/dist/{collapsible-box-B9ATVQzW.cjs.map → collapsible-box-CzU0OwJx.cjs.map} +1 -1
  48. package/dist/{collapsible-box-CMBYunuM.js → collapsible-box-DotFa3hr.js} +2 -2
  49. package/dist/{collapsible-box-CMBYunuM.js.map → collapsible-box-DotFa3hr.js.map} +1 -1
  50. package/dist/{combobox-Bw13EcK0.js → combobox-BCoCVZHs.js} +7 -5
  51. package/dist/combobox-BCoCVZHs.js.map +1 -0
  52. package/dist/{combobox-BNlVCFgY.cjs → combobox-DbZAWh8q.cjs} +7 -5
  53. package/dist/combobox-DbZAWh8q.cjs.map +1 -0
  54. package/dist/{combobox-styles-Dr66ofEp.js → combobox-styles-Cens2tsx.js} +2 -2
  55. package/dist/{combobox-styles-Dr66ofEp.js.map → combobox-styles-Cens2tsx.js.map} +1 -1
  56. package/dist/{combobox-styles-BK2nGTNl.cjs → combobox-styles-Cy4rpw03.cjs} +2 -2
  57. package/dist/{combobox-styles-BK2nGTNl.cjs.map → combobox-styles-Cy4rpw03.cjs.map} +1 -1
  58. package/dist/{command-UEPxVJlE.cjs → command-Duh5C_Pm.cjs} +2 -2
  59. package/dist/command-Duh5C_Pm.cjs.map +1 -0
  60. package/dist/{command-V9rsKc7P.js → command-xIH7ZTdl.js} +2 -2
  61. package/dist/command-xIH7ZTdl.js.map +1 -0
  62. package/dist/components/AlertDialog.cjs.js +1 -1
  63. package/dist/components/AlertDialog.es.js +1 -1
  64. package/dist/components/Avatar.cjs.js +1 -1
  65. package/dist/components/Avatar.es.js +1 -1
  66. package/dist/components/Breadcrumb.cjs.js +7 -4
  67. package/dist/components/Breadcrumb.cjs.js.map +1 -1
  68. package/dist/components/Breadcrumb.es.js +7 -4
  69. package/dist/components/Breadcrumb.es.js.map +1 -1
  70. package/dist/components/Button.cjs.js +1 -1
  71. package/dist/components/Button.es.js +2 -2
  72. package/dist/components/ClampedText.cjs.js +2 -2
  73. package/dist/components/ClampedText.cjs.js.map +1 -1
  74. package/dist/components/ClampedText.es.js +2 -2
  75. package/dist/components/ClampedText.es.js.map +1 -1
  76. package/dist/components/CodeBlock.cjs.js +1 -1
  77. package/dist/components/CodeBlock.es.js +1 -1
  78. package/dist/components/CodeEditor.cjs.js +1 -1
  79. package/dist/components/CodeEditor.es.js +1 -1
  80. package/dist/components/CollapsibleBox.cjs.js +1 -1
  81. package/dist/components/CollapsibleBox.es.js +1 -1
  82. package/dist/components/Combobox.cjs.js +2 -2
  83. package/dist/components/Combobox.es.js +2 -2
  84. package/dist/components/Command.cjs.js +1 -1
  85. package/dist/components/Command.es.js +1 -1
  86. package/dist/components/CommandPalette.cjs.js +1 -1
  87. package/dist/components/CommandPalette.es.js +1 -1
  88. package/dist/components/Comment.cjs.js +2 -2
  89. package/dist/components/Comment.es.js +2 -2
  90. package/dist/components/CopyButton.cjs.js +1 -1
  91. package/dist/components/CopyButton.es.js +1 -1
  92. package/dist/components/DataCodeSection.cjs.js +1 -1
  93. package/dist/components/DataCodeSection.es.js +1 -1
  94. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  95. package/dist/components/DataDetailsPanel.es.js +2 -2
  96. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  97. package/dist/components/DataKeysAndValues.es.js +1 -1
  98. package/dist/components/DataList.cjs.js +15 -17
  99. package/dist/components/DataList.cjs.js.map +1 -1
  100. package/dist/components/DataList.es.js +4 -5
  101. package/dist/components/DataList.es.js.map +1 -1
  102. package/dist/components/DataPanel.cjs.js +1 -1
  103. package/dist/components/DataPanel.es.js +1 -1
  104. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  105. package/dist/components/DateRangeTimeline.es.js +1 -1
  106. package/dist/components/DateTimePicker.cjs.js +2 -2
  107. package/dist/components/DateTimePicker.es.js +2 -2
  108. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  109. package/dist/components/DateTimeRangePicker.es.js +1 -1
  110. package/dist/components/Dialog.cjs.js +2 -2
  111. package/dist/components/Dialog.es.js +2 -2
  112. package/dist/components/DisabledFeatureButton.cjs.js +1 -1
  113. package/dist/components/DisabledFeatureButton.es.js +1 -1
  114. package/dist/components/Drawer.cjs.js +1 -1
  115. package/dist/components/Drawer.es.js +1 -1
  116. package/dist/components/EnvironmentVariablesEditor.cjs.js +3 -3
  117. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  118. package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
  119. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  120. package/dist/components/ErrorBoundary.cjs.js +1 -1
  121. package/dist/components/ErrorBoundary.es.js +1 -1
  122. package/dist/components/FilterBar.cjs.js +8 -31
  123. package/dist/components/FilterBar.cjs.js.map +1 -1
  124. package/dist/components/FilterBar.es.js +10 -33
  125. package/dist/components/FilterBar.es.js.map +1 -1
  126. package/dist/components/FormFieldBlocks.cjs.js +3 -3
  127. package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
  128. package/dist/components/FormFieldBlocks.es.js +3 -3
  129. package/dist/components/FormFieldBlocks.es.js.map +1 -1
  130. package/dist/components/InputGroup.cjs.js +1 -1
  131. package/dist/components/InputGroup.es.js +1 -1
  132. package/dist/components/InputNumber.cjs.js +2 -2
  133. package/dist/components/InputNumber.es.js +2 -2
  134. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  135. package/dist/components/JSONSchemaForm.es.js +2 -2
  136. package/dist/components/ListSearch.cjs.js +1 -1
  137. package/dist/components/ListSearch.es.js +1 -1
  138. package/dist/components/LogsDataList.cjs.js +5 -2
  139. package/dist/components/LogsDataList.cjs.js.map +1 -1
  140. package/dist/components/LogsDataList.es.js +5 -2
  141. package/dist/components/LogsDataList.es.js.map +1 -1
  142. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  143. package/dist/components/MarkdownRenderer.es.js +1 -1
  144. package/dist/components/Message.cjs.js +1 -1
  145. package/dist/components/Message.es.js +1 -1
  146. package/dist/components/MetricsCard.cjs.js +1 -1
  147. package/dist/components/MetricsCard.es.js +1 -1
  148. package/dist/components/PrevNextNav.cjs.js +1 -1
  149. package/dist/components/PrevNextNav.es.js +1 -1
  150. package/dist/components/ProductAvatar.cjs.js +2 -1
  151. package/dist/components/ProductAvatar.cjs.js.map +1 -1
  152. package/dist/components/ProductAvatar.es.js +2 -1
  153. package/dist/components/ProductAvatar.es.js.map +1 -1
  154. package/dist/components/PropertyFilter.cjs.js +4 -4
  155. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  156. package/dist/components/PropertyFilter.es.js +5 -5
  157. package/dist/components/PropertyFilter.es.js.map +1 -1
  158. package/dist/components/RuleBuilder.cjs.js +3 -2
  159. package/dist/components/RuleBuilder.cjs.js.map +1 -1
  160. package/dist/components/RuleBuilder.es.js +3 -2
  161. package/dist/components/RuleBuilder.es.js.map +1 -1
  162. package/dist/components/SavedViews.cjs.js +4 -8
  163. package/dist/components/SavedViews.cjs.js.map +1 -1
  164. package/dist/components/SavedViews.es.js +5 -9
  165. package/dist/components/SavedViews.es.js.map +1 -1
  166. package/dist/components/SearchInput.cjs.js +1 -1
  167. package/dist/components/SearchInput.es.js +1 -1
  168. package/dist/components/Select.cjs.js +1 -1
  169. package/dist/components/Select.es.js +1 -1
  170. package/dist/components/SideDialog.cjs.js +1 -1
  171. package/dist/components/SideDialog.es.js +1 -1
  172. package/dist/components/Sidebar.cjs.js +3 -3
  173. package/dist/components/Sidebar.cjs.js.map +1 -1
  174. package/dist/components/Sidebar.es.js +3 -3
  175. package/dist/components/Sidebar.es.js.map +1 -1
  176. package/dist/components/StatusIndicators.cjs.js.map +1 -1
  177. package/dist/components/StatusIndicators.es.js.map +1 -1
  178. package/dist/components/Table.cjs.js.map +1 -1
  179. package/dist/components/Table.es.js.map +1 -1
  180. package/dist/components/Tabs.cjs.js +1 -1
  181. package/dist/components/Tabs.es.js +1 -1
  182. package/dist/components/ThreadList.cjs.js +1 -1
  183. package/dist/components/ThreadList.es.js +1 -1
  184. package/dist/components/ThreadRail.cjs.js.map +1 -1
  185. package/dist/components/ThreadRail.es.js.map +1 -1
  186. package/dist/components/Truncate.cjs.js +1 -1
  187. package/dist/components/Truncate.es.js +1 -1
  188. package/dist/components/Workflow.cjs.js +6 -6
  189. package/dist/components/Workflow.es.js +6 -6
  190. package/dist/components/ai/activity.cjs.js +4 -4
  191. package/dist/components/ai/activity.es.js +4 -4
  192. package/dist/components/ai/ask-user.cjs.js +1 -1
  193. package/dist/components/ai/ask-user.es.js +1 -1
  194. package/dist/components/ai/plan.cjs.js +1 -1
  195. package/dist/components/ai/plan.es.js +1 -1
  196. package/dist/components/ai/tool-approval.cjs.js +1 -1
  197. package/dist/components/ai/tool-approval.es.js +1 -1
  198. package/dist/components/ai/tool-call.cjs.js +4 -4
  199. package/dist/components/ai/tool-call.es.js +4 -4
  200. package/dist/composer-Bs4iyUfe.js.map +1 -1
  201. package/dist/composer-CDQnP3og.cjs.map +1 -1
  202. package/dist/context-menu-C67xhcfa.js.map +1 -1
  203. package/dist/context-menu-jNuzE86D.cjs.map +1 -1
  204. package/dist/{copy-button-Cd0keCti.cjs → copy-button-BC02oZJo.cjs} +2 -2
  205. package/dist/{copy-button-Cd0keCti.cjs.map → copy-button-BC02oZJo.cjs.map} +1 -1
  206. package/dist/{copy-button-C_M3Tu_-.js → copy-button-B_i9lwFJ.js} +2 -2
  207. package/dist/{copy-button-C_M3Tu_-.js.map → copy-button-B_i9lwFJ.js.map} +1 -1
  208. package/dist/{data-code-section-lj3PaHjc.cjs → data-code-section-BJa6NDgN.cjs} +5 -5
  209. package/dist/{data-code-section-lj3PaHjc.cjs.map → data-code-section-BJa6NDgN.cjs.map} +1 -1
  210. package/dist/{data-code-section-mpRgtM8j.js → data-code-section-Cjs-piiY.js} +5 -5
  211. package/dist/{data-code-section-mpRgtM8j.js.map → data-code-section-Cjs-piiY.js.map} +1 -1
  212. package/dist/{data-keys-and-values-1lYi60YK.cjs → data-keys-and-values-DBXIqeXt.cjs} +2 -2
  213. package/dist/data-keys-and-values-DBXIqeXt.cjs.map +1 -0
  214. package/dist/{data-keys-and-values-CHpxKsfq.js → data-keys-and-values-DHp6cHJo.js} +2 -2
  215. package/dist/data-keys-and-values-DHp6cHJo.js.map +1 -0
  216. package/dist/{data-list-top-DJh08vFA.cjs → data-list-DlXU1PLQ.cjs} +339 -13
  217. package/dist/data-list-DlXU1PLQ.cjs.map +1 -0
  218. package/dist/{data-list-top-T-mtdIUp.js → data-list-Tor18oy5.js} +332 -5
  219. package/dist/data-list-Tor18oy5.js.map +1 -0
  220. package/dist/{data-list-skeleton-bNfITSHs.js → data-list-skeleton-CXUB-u3p.js} +2 -2
  221. package/dist/{data-list-skeleton-bNfITSHs.js.map → data-list-skeleton-CXUB-u3p.js.map} +1 -1
  222. package/dist/{data-list-skeleton-sdcaabdX.cjs → data-list-skeleton-DY0F40WQ.cjs} +6 -6
  223. package/dist/{data-list-skeleton-sdcaabdX.cjs.map → data-list-skeleton-DY0F40WQ.cjs.map} +1 -1
  224. package/dist/{data-panel-BkfjzriB.cjs → data-panel-DGNV14pm.cjs} +20 -9
  225. package/dist/data-panel-DGNV14pm.cjs.map +1 -0
  226. package/dist/{data-panel-CMkR6Avv.js → data-panel-DjtnX70w.js} +20 -9
  227. package/dist/data-panel-DjtnX70w.js.map +1 -0
  228. package/dist/{date-time-range-picker-BjQVCVUM.cjs → date-time-range-picker-CXGab8Nj.cjs} +3 -3
  229. package/dist/{date-time-range-picker-BjQVCVUM.cjs.map → date-time-range-picker-CXGab8Nj.cjs.map} +1 -1
  230. package/dist/{date-time-range-picker-D-EECKzz.js → date-time-range-picker-CcnDMZJu.js} +3 -3
  231. package/dist/{date-time-range-picker-D-EECKzz.js.map → date-time-range-picker-CcnDMZJu.js.map} +1 -1
  232. package/dist/{dialog-j2e95YNV.js → dialog-AzCRnEo3.js} +3 -3
  233. package/dist/{dialog-j2e95YNV.js.map → dialog-AzCRnEo3.js.map} +1 -1
  234. package/dist/{dialog-BMUfQ9XU.cjs → dialog-SSeOqRnH.cjs} +3 -3
  235. package/dist/{dialog-BMUfQ9XU.cjs.map → dialog-SSeOqRnH.cjs.map} +1 -1
  236. package/dist/{dialog-action-CmFDNyZX.cjs → dialog-action-Caa-pb85.cjs} +3 -3
  237. package/dist/{dialog-action-CmFDNyZX.cjs.map → dialog-action-Caa-pb85.cjs.map} +1 -1
  238. package/dist/{dialog-action-zKqvuroE.js → dialog-action-DykMOK2W.js} +3 -3
  239. package/dist/{dialog-action-zKqvuroE.js.map → dialog-action-DykMOK2W.js.map} +1 -1
  240. package/dist/domains/auth/components/session-expired.cjs.js +1 -1
  241. package/dist/domains/auth/components/session-expired.es.js +1 -1
  242. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
  243. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
  244. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
  245. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
  246. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  247. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  248. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
  249. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
  250. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
  251. package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
  252. package/dist/domains/chat/messages/dataset-save-action.cjs.js +5 -5
  253. package/dist/domains/chat/messages/dataset-save-action.es.js +5 -5
  254. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  255. package/dist/domains/chat/messages/message-row.es.js +4 -4
  256. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  257. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  258. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  259. package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
  260. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  261. package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
  262. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  263. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  264. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  265. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  266. package/dist/domains/chat/messages/skill-message.cjs.js +3 -3
  267. package/dist/domains/chat/messages/skill-message.es.js +3 -3
  268. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  269. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  270. package/dist/domains/chat/om/om-parts-converter.cjs.js.map +1 -1
  271. package/dist/domains/chat/om/om-parts-converter.es.js.map +1 -1
  272. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  273. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  274. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +4 -4
  275. package/dist/domains/chat/tools/badges/agent-badge.es.js +4 -4
  276. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  277. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  278. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +3 -3
  279. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js.map +1 -1
  280. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
  281. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js.map +1 -1
  282. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  283. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  284. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  285. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  286. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
  287. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
  288. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  289. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  290. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  291. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  292. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +1 -1
  293. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +1 -1
  294. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  295. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  296. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +3 -3
  297. package/dist/domains/chat/tools/badges/tool-badge.es.js +3 -3
  298. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +6 -3
  299. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  300. package/dist/domains/chat/tools/badges/workflow-badge.es.js +6 -3
  301. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  302. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  303. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  304. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  305. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  306. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
  307. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
  308. package/dist/domains/logs/components/log-data-panel.cjs.js +4 -4
  309. package/dist/domains/logs/components/log-data-panel.es.js +4 -4
  310. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
  311. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  312. package/dist/domains/logs/components/logs-list-view.es.js +3 -2
  313. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  314. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  315. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  316. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  317. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  318. package/dist/domains/mcps/components/mcp-app-viewer.cjs.js.map +1 -1
  319. package/dist/domains/mcps/components/mcp-app-viewer.es.js.map +1 -1
  320. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  321. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  322. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  323. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  324. package/dist/domains/metrics/components/agent-runs-card.cjs.js +1 -1
  325. package/dist/domains/metrics/components/agent-runs-card.es.js +1 -1
  326. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  327. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  328. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  329. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  330. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  331. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  332. package/dist/domains/metrics/components/chart-card.cjs.js +1 -1
  333. package/dist/domains/metrics/components/chart-card.es.js +1 -1
  334. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  335. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  336. package/dist/domains/metrics/components/failure-rate-card.cjs.js +1 -1
  337. package/dist/domains/metrics/components/failure-rate-card.es.js +1 -1
  338. package/dist/domains/metrics/components/latency-card.cjs.js +1 -1
  339. package/dist/domains/metrics/components/latency-card.es.js +1 -1
  340. package/dist/domains/metrics/components/scores-card.cjs.js +1 -1
  341. package/dist/domains/metrics/components/scores-card.es.js +1 -1
  342. package/dist/domains/metrics/components/token-usage-card.cjs.js +1 -1
  343. package/dist/domains/metrics/components/token-usage-card.es.js +1 -1
  344. package/dist/domains/metrics/components/trace-volume-card.cjs.js +1 -1
  345. package/dist/domains/metrics/components/trace-volume-card.es.js +1 -1
  346. package/dist/domains/metrics/components/usage-card.cjs.js +1 -1
  347. package/dist/domains/metrics/components/usage-card.es.js +1 -1
  348. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -4
  349. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -4
  350. package/dist/domains/scores/components/score-data-panel.cjs.js +3 -3
  351. package/dist/domains/scores/components/score-data-panel.es.js +3 -3
  352. package/dist/domains/scores/components/span-scoring.cjs.js +3 -3
  353. package/dist/domains/scores/components/span-scoring.es.js +3 -3
  354. package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
  355. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  356. package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
  357. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  358. package/dist/domains/traces/components/feedback-thread.cjs.js +4 -4
  359. package/dist/domains/traces/components/feedback-thread.cjs.js.map +1 -1
  360. package/dist/domains/traces/components/feedback-thread.es.js +4 -4
  361. package/dist/domains/traces/components/feedback-thread.es.js.map +1 -1
  362. package/dist/domains/traces/components/shared.cjs.js +4 -3
  363. package/dist/domains/traces/components/shared.cjs.js.map +1 -1
  364. package/dist/domains/traces/components/shared.es.js +5 -4
  365. package/dist/domains/traces/components/shared.es.js.map +1 -1
  366. package/dist/domains/traces/components/span-data-panel-view.cjs.js +4 -4
  367. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  368. package/dist/domains/traces/components/span-data-panel-view.es.js +4 -4
  369. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  370. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  371. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  372. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
  373. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
  374. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +2 -2
  375. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +2 -2
  376. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
  377. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
  378. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  379. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  380. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  381. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  382. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +2 -2
  383. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +2 -2
  384. package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js.map +1 -1
  385. package/dist/domains/traces/components/span-payload/span-payload-registry.es.js.map +1 -1
  386. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +3 -3
  387. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +3 -3
  388. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  389. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  390. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +2 -2
  391. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +2 -2
  392. package/dist/domains/traces/components/span-rows.cjs.js +5 -0
  393. package/dist/domains/traces/components/span-rows.cjs.js.map +1 -1
  394. package/dist/domains/traces/components/span-rows.es.js +5 -0
  395. package/dist/domains/traces/components/span-rows.es.js.map +1 -1
  396. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  397. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  398. package/dist/domains/traces/components/span-timeline-row.cjs.js +34 -28
  399. package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
  400. package/dist/domains/traces/components/span-timeline-row.es.js +34 -28
  401. package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
  402. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +1 -1
  403. package/dist/domains/traces/components/span-timing-hover-card.es.js +1 -1
  404. package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
  405. package/dist/domains/traces/components/span-token-usage.es.js +1 -1
  406. package/dist/domains/traces/components/span-tree-rail.cjs.js +50 -0
  407. package/dist/domains/traces/components/span-tree-rail.cjs.js.map +1 -0
  408. package/dist/domains/traces/components/span-tree-rail.d.ts +2 -0
  409. package/dist/domains/traces/components/span-tree-rail.es.js +42 -0
  410. package/dist/domains/traces/components/span-tree-rail.es.js.map +1 -0
  411. package/dist/domains/traces/components/span-tree-row.cjs.js +2 -2
  412. package/dist/domains/traces/components/span-tree-row.cjs.js.map +1 -1
  413. package/dist/domains/traces/components/span-tree-row.es.js +2 -2
  414. package/dist/domains/traces/components/span-tree-row.es.js.map +1 -1
  415. package/dist/domains/traces/components/span-type-badge.cjs.js +29 -0
  416. package/dist/domains/traces/components/span-type-badge.cjs.js.map +1 -0
  417. package/dist/domains/traces/components/span-type-badge.d.ts +2 -0
  418. package/dist/domains/traces/components/span-type-badge.es.js +25 -0
  419. package/dist/domains/traces/components/span-type-badge.es.js.map +1 -0
  420. package/dist/domains/traces/components/span-type-legend.cjs.js +2 -2
  421. package/dist/domains/traces/components/span-type-legend.cjs.js.map +1 -1
  422. package/dist/domains/traces/components/span-type-legend.es.js +2 -2
  423. package/dist/domains/traces/components/span-type-legend.es.js.map +1 -1
  424. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  425. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  426. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  427. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  428. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js.map +1 -1
  429. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js.map +1 -1
  430. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +2 -2
  431. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +2 -2
  432. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -1
  433. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  434. package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -1
  435. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  436. package/dist/domains/traces/components/timeline-name-col.cjs.js +53 -27
  437. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  438. package/dist/domains/traces/components/timeline-name-col.es.js +54 -28
  439. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  440. package/dist/domains/traces/components/timeline-structure-sign.cjs.js +23 -14
  441. package/dist/domains/traces/components/timeline-structure-sign.cjs.js.map +1 -1
  442. package/dist/domains/traces/components/timeline-structure-sign.es.js +24 -15
  443. package/dist/domains/traces/components/timeline-structure-sign.es.js.map +1 -1
  444. package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
  445. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  446. package/dist/domains/traces/components/trace-columns-menu.es.js +4 -4
  447. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  448. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +32 -5
  449. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  450. package/dist/domains/traces/components/trace-data-panel-view.es.js +32 -5
  451. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  452. package/dist/domains/traces/components/trace-data-panel.cjs.js +5 -2
  453. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  454. package/dist/domains/traces/components/trace-data-panel.es.js +5 -2
  455. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  456. package/dist/domains/traces/components/trace-error-cell.cjs.js +35 -0
  457. package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -0
  458. package/dist/domains/traces/components/trace-error-cell.d.ts +2 -0
  459. package/dist/domains/traces/components/trace-error-cell.es.js +31 -0
  460. package/dist/domains/traces/components/trace-error-cell.es.js.map +1 -0
  461. package/dist/domains/traces/components/trace-error-details.cjs.js +22 -0
  462. package/dist/domains/traces/components/trace-error-details.cjs.js.map +1 -0
  463. package/dist/domains/traces/components/trace-error-details.d.ts +2 -0
  464. package/dist/domains/traces/components/trace-error-details.es.js +18 -0
  465. package/dist/domains/traces/components/trace-error-details.es.js.map +1 -0
  466. package/dist/domains/traces/components/trace-error-summary.cjs.js +31 -0
  467. package/dist/domains/traces/components/trace-error-summary.cjs.js.map +1 -0
  468. package/dist/domains/traces/components/trace-error-summary.d.ts +2 -0
  469. package/dist/domains/traces/components/trace-error-summary.es.js +27 -0
  470. package/dist/domains/traces/components/trace-error-summary.es.js.map +1 -0
  471. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  472. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  473. package/dist/domains/traces/components/trace-span-panel.cjs.js +1 -1
  474. package/dist/domains/traces/components/trace-span-panel.es.js +1 -1
  475. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +7 -7
  476. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js.map +1 -1
  477. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +7 -7
  478. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js.map +1 -1
  479. package/dist/domains/traces/components/trace-span-tree.cjs.js +1 -2
  480. package/dist/domains/traces/components/trace-span-tree.cjs.js.map +1 -1
  481. package/dist/domains/traces/components/trace-span-tree.es.js +2 -3
  482. package/dist/domains/traces/components/trace-span-tree.es.js.map +1 -1
  483. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  484. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  485. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +1 -1
  486. package/dist/domains/traces/components/trace-thread-item-view.es.js +1 -1
  487. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  488. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  489. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  490. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  491. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  492. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  493. package/dist/domains/traces/components/traces-list-view.cjs.js +10 -7
  494. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  495. package/dist/domains/traces/components/traces-list-view.es.js +9 -6
  496. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  497. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
  498. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  499. package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
  500. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  501. package/dist/domains/traces/hooks/use-trace-list-navigation.cjs.js.map +1 -1
  502. package/dist/domains/traces/hooks/use-trace-list-navigation.es.js.map +1 -1
  503. package/dist/domains/traces/utils/flatten-to-search-text.cjs.js.map +1 -1
  504. package/dist/domains/traces/utils/flatten-to-search-text.es.js.map +1 -1
  505. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  506. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  507. package/dist/domains/workflows/components/workflow-information.cjs.js +1 -1
  508. package/dist/domains/workflows/components/workflow-information.es.js +1 -1
  509. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
  510. package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
  511. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +1 -1
  512. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +1 -1
  513. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  514. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  515. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
  516. package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
  517. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  518. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  519. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -2
  520. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
  521. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  522. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  523. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -1
  524. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +1 -1
  525. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  526. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  527. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  528. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  529. package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
  530. package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
  531. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  532. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  533. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  534. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  535. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +3 -3
  536. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +3 -3
  537. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  538. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  539. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  540. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  541. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  542. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  543. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  544. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  545. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
  546. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
  547. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +3 -3
  548. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +3 -3
  549. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +2 -2
  550. package/dist/domains/workflows/workflow/workflow-run-data.es.js +2 -2
  551. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +1 -1
  552. package/dist/domains/workflows/workflow/workflow-run-header.es.js +1 -1
  553. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  554. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  555. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +3 -3
  556. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +3 -3
  557. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
  558. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  559. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
  560. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
  561. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
  562. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
  563. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
  564. package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
  565. package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +1 -1
  566. package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +1 -1
  567. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +1 -1
  568. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +1 -1
  569. package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
  570. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  571. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +5 -5
  572. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +5 -5
  573. package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
  574. package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
  575. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +2 -2
  576. package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
  577. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  578. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  579. package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
  580. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  581. package/dist/domains/workspace/components/workspace-tree.cjs.js +2 -2
  582. package/dist/domains/workspace/components/workspace-tree.es.js +2 -2
  583. package/dist/{drawer-DROYPMUm.cjs → drawer-DdTU-nBR.cjs} +2 -2
  584. package/dist/{drawer-DROYPMUm.cjs.map → drawer-DdTU-nBR.cjs.map} +1 -1
  585. package/dist/{drawer-C-8E9yHN.js → drawer-mj-G7-Tu.js} +2 -2
  586. package/dist/{drawer-C-8E9yHN.js.map → drawer-mj-G7-Tu.js.map} +1 -1
  587. package/dist/dropdown-menu-CQ_48tVI.js.map +1 -1
  588. package/dist/dropdown-menu-CsynT1aD.cjs.map +1 -1
  589. package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
  590. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  591. package/dist/ee/signals/components/entity-index-list.es.js +3 -1
  592. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  593. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  594. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  595. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js.map +1 -1
  596. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js.map +1 -1
  597. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +6 -4
  598. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  599. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +6 -4
  600. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  601. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  602. package/dist/ee/signals/examples-pager.es.js +1 -1
  603. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  604. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  605. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
  606. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
  607. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  608. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  609. package/dist/ee/signals/signals-error-state.cjs.js +1 -1
  610. package/dist/ee/signals/signals-error-state.es.js +1 -1
  611. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  612. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  613. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  614. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  615. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  616. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  617. package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
  618. package/dist/ee/signals/trace-insight-view.es.js +1 -1
  619. package/dist/ee/signals/trace-intelligence-provider.cjs.js.map +1 -1
  620. package/dist/ee/signals/trace-intelligence-provider.es.js.map +1 -1
  621. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  622. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  623. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  624. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  625. package/dist/{field-error-id-Dbe6IInA.cjs → field-error-id-0yYYU0ar.cjs} +2 -2
  626. package/dist/{field-error-id-Dbe6IInA.cjs.map → field-error-id-0yYYU0ar.cjs.map} +1 -1
  627. package/dist/{field-error-id-Sqhk00e4.js → field-error-id-CdzuQK5c.js} +2 -2
  628. package/dist/{field-error-id-Sqhk00e4.js.map → field-error-id-CdzuQK5c.js.map} +1 -1
  629. package/dist/{filter-bar-chip-BarAq1S2.js → filter-bar-chip-C9CXOudu.js} +3 -3
  630. package/dist/filter-bar-chip-C9CXOudu.js.map +1 -0
  631. package/dist/{filter-bar-chip-BJJ6ytJ4.cjs → filter-bar-chip-DgvuQv6c.cjs} +3 -3
  632. package/dist/filter-bar-chip-DgvuQv6c.cjs.map +1 -0
  633. package/dist/hooks/use-environment-variables-editor.cjs.js.map +1 -1
  634. package/dist/hooks/use-environment-variables-editor.es.js.map +1 -1
  635. package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
  636. package/dist/hooks/use-fluid-hover.es.js.map +1 -1
  637. package/dist/icons/Icon.cjs.js.map +1 -1
  638. package/dist/icons/Icon.es.js.map +1 -1
  639. package/dist/icons/SkillIcon.cjs.js.map +1 -1
  640. package/dist/icons/SkillIcon.es.js.map +1 -1
  641. package/dist/icons/icon-size-classes.cjs.js +4 -4
  642. package/dist/icons/icon-size-classes.cjs.js.map +1 -1
  643. package/dist/icons/icon-size-classes.es.js +4 -4
  644. package/dist/icons/icon-size-classes.es.js.map +1 -1
  645. package/dist/{input-group-CiBbTaPP.js → input-group-BAg6iSIe.js} +2 -2
  646. package/dist/{input-group-CiBbTaPP.js.map → input-group-BAg6iSIe.js.map} +1 -1
  647. package/dist/{input-group-DSW5WoSU.cjs → input-group-DRXUthxe.cjs} +2 -2
  648. package/dist/{input-group-DSW5WoSU.cjs.map → input-group-DRXUthxe.cjs.map} +1 -1
  649. package/dist/keyboard/keyboard-dispatcher.cjs.js +2 -4
  650. package/dist/keyboard/keyboard-dispatcher.cjs.js.map +1 -1
  651. package/dist/keyboard/keyboard-dispatcher.es.js +2 -4
  652. package/dist/keyboard/keyboard-dispatcher.es.js.map +1 -1
  653. package/dist/keyboard/keyboard-shortcuts-context.cjs.js.map +1 -1
  654. package/dist/keyboard/keyboard-shortcuts-context.es.js.map +1 -1
  655. package/dist/keyboard/use-keydown.cjs.js +2 -0
  656. package/dist/keyboard/use-keydown.cjs.js.map +1 -1
  657. package/dist/keyboard/use-keydown.es.js +2 -0
  658. package/dist/keyboard/use-keydown.es.js.map +1 -1
  659. package/dist/layout/tabbed-container.cjs.js +4 -4
  660. package/dist/layout/tabbed-container.es.js +4 -4
  661. package/dist/lib/form/components/array-element-wrapper.cjs.js +1 -1
  662. package/dist/lib/form/components/array-element-wrapper.es.js +1 -1
  663. package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
  664. package/dist/lib/form/components/array-wrapper.es.js +1 -1
  665. package/dist/lib/form/components/date-field.cjs.js +1 -1
  666. package/dist/lib/form/components/date-field.es.js +1 -1
  667. package/dist/lib/form/components/form-submit-row.cjs.js +1 -1
  668. package/dist/lib/form/components/form-submit-row.es.js +1 -1
  669. package/dist/lib/form/components/record-field.cjs.js +1 -1
  670. package/dist/lib/form/components/record-field.es.js +1 -1
  671. package/dist/lib/form/components/select-field.cjs.js +1 -1
  672. package/dist/lib/form/components/select-field.es.js +1 -1
  673. package/dist/lib/form/components/submit-button.cjs.js +1 -1
  674. package/dist/lib/form/components/submit-button.es.js +1 -1
  675. package/dist/lib/form/zod-provider.cjs.js.map +1 -1
  676. package/dist/lib/form/zod-provider.es.js.map +1 -1
  677. package/dist/{list-search-D3I6xt0B.js → list-search-ByJdIxIh.js} +2 -2
  678. package/dist/{list-search-D3I6xt0B.js.map → list-search-ByJdIxIh.js.map} +1 -1
  679. package/dist/{list-search-DHiQ1-O6.cjs → list-search-DNJVeHmK.cjs} +2 -2
  680. package/dist/{list-search-DHiQ1-O6.cjs.map → list-search-DNJVeHmK.cjs.map} +1 -1
  681. package/dist/{logs-data-list-Cb85LPcT.js → logs-data-list-CGerYgSd.js} +2 -3
  682. package/dist/{logs-data-list-Cb85LPcT.js.map → logs-data-list-CGerYgSd.js.map} +1 -1
  683. package/dist/{logs-data-list-DlQxxrNw.cjs → logs-data-list-DEZuSjqt.cjs} +21 -22
  684. package/dist/{logs-data-list-DlQxxrNw.cjs.map → logs-data-list-DEZuSjqt.cjs.map} +1 -1
  685. package/dist/{markdown-renderer-HIfFphpI.cjs → markdown-renderer-BcpwvSl9.cjs} +3 -3
  686. package/dist/{markdown-renderer-HIfFphpI.cjs.map → markdown-renderer-BcpwvSl9.cjs.map} +1 -1
  687. package/dist/{markdown-renderer-BYxWiHRj.js → markdown-renderer-CHLpv5n5.js} +3 -3
  688. package/dist/{markdown-renderer-BYxWiHRj.js.map → markdown-renderer-CHLpv5n5.js.map} +1 -1
  689. package/dist/{message-copy-button-CnVgCy9y.cjs → message-copy-button-D3O4hWDV.cjs} +2 -2
  690. package/dist/{message-copy-button-CnVgCy9y.cjs.map → message-copy-button-D3O4hWDV.cjs.map} +1 -1
  691. package/dist/{message-copy-button-Ctew41Rr.js → message-copy-button-OI1mwAaS.js} +2 -2
  692. package/dist/{message-copy-button-Ctew41Rr.js.map → message-copy-button-OI1mwAaS.js.map} +1 -1
  693. package/dist/{metrics-card-DaFApxZY.cjs → metrics-card-CpjGYNBP.cjs} +2 -2
  694. package/dist/{metrics-card-DaFApxZY.cjs.map → metrics-card-CpjGYNBP.cjs.map} +1 -1
  695. package/dist/{metrics-card-Z_moDiV5.js → metrics-card-D6ty6a6Z.js} +2 -2
  696. package/dist/{metrics-card-Z_moDiV5.js.map → metrics-card-D6ty6a6Z.js.map} +1 -1
  697. package/dist/{notification-activity-MR63WqZm.cjs → notification-activity-BSNuqJDd.cjs} +2 -2
  698. package/dist/{notification-activity-MR63WqZm.cjs.map → notification-activity-BSNuqJDd.cjs.map} +1 -1
  699. package/dist/{notification-activity-FJcMFxIj.js → notification-activity-BWXHmlTn.js} +2 -2
  700. package/dist/{notification-activity-FJcMFxIj.js.map → notification-activity-BWXHmlTn.js.map} +1 -1
  701. package/dist/{plan-BoOK_LAB.cjs → plan-Cm3yHvs3.cjs} +4 -4
  702. package/dist/{plan-BoOK_LAB.cjs.map → plan-Cm3yHvs3.cjs.map} +1 -1
  703. package/dist/{plan-m0hj6Zgv.js → plan-TtrepVnQ.js} +4 -4
  704. package/dist/{plan-m0hj6Zgv.js.map → plan-TtrepVnQ.js.map} +1 -1
  705. package/dist/primitives/form-element.cjs.js.map +1 -1
  706. package/dist/primitives/form-element.es.js.map +1 -1
  707. package/dist/primitives/menu-item.cjs.js +4 -2
  708. package/dist/primitives/menu-item.cjs.js.map +1 -1
  709. package/dist/primitives/menu-item.es.js +4 -2
  710. package/dist/primitives/menu-item.es.js.map +1 -1
  711. package/dist/primitives/popup-anchor.cjs.js +34 -0
  712. package/dist/primitives/popup-anchor.cjs.js.map +1 -0
  713. package/dist/primitives/popup-anchor.d.ts +2 -0
  714. package/dist/primitives/popup-anchor.es.js +10 -0
  715. package/dist/primitives/popup-anchor.es.js.map +1 -0
  716. package/dist/primitives/trigger-button.cjs.js +1 -1
  717. package/dist/primitives/trigger-button.es.js +1 -1
  718. package/dist/{property-filter-applied-J9ob_Rss.js → property-filter-applied-BMmMf4DE.js} +2 -2
  719. package/dist/property-filter-applied-BMmMf4DE.js.map +1 -0
  720. package/dist/{property-filter-applied-CtSglSaH.cjs → property-filter-applied-Bj-bh9gv.cjs} +2 -2
  721. package/dist/property-filter-applied-Bj-bh9gv.cjs.map +1 -0
  722. package/dist/{reasoning-activity-5MFE3mzw.js → reasoning-activity-C-sJt2A9.js} +3 -3
  723. package/dist/{reasoning-activity-5MFE3mzw.js.map → reasoning-activity-C-sJt2A9.js.map} +1 -1
  724. package/dist/{reasoning-activity-DMvughvN.cjs → reasoning-activity-DpYFjxuL.cjs} +3 -3
  725. package/dist/{reasoning-activity-DMvughvN.cjs.map → reasoning-activity-DpYFjxuL.cjs.map} +1 -1
  726. package/dist/resize/panel-drawer.cjs.js +1 -1
  727. package/dist/resize/panel-drawer.es.js +1 -1
  728. package/dist/{search-input-BPqubJZC.js → search-input-C9qFBzn6.js} +2 -2
  729. package/dist/{search-input-BPqubJZC.js.map → search-input-C9qFBzn6.js.map} +1 -1
  730. package/dist/{search-input-BUMYRaUW.cjs → search-input-CMNy0JWd.cjs} +2 -2
  731. package/dist/{search-input-BUMYRaUW.cjs.map → search-input-CMNy0JWd.cjs.map} +1 -1
  732. package/dist/section-CctlZIXp.cjs.map +1 -1
  733. package/dist/section-D0hKTVXt.js.map +1 -1
  734. package/dist/{select-CQtsggxJ.js → select-7rYaECQf.js} +2 -2
  735. package/dist/select-7rYaECQf.js.map +1 -0
  736. package/dist/{select-CbNLtiAs.cjs → select-A3AFKLd9.cjs} +2 -2
  737. package/dist/select-A3AFKLd9.cjs.map +1 -0
  738. package/dist/shimmer-BCSr3Rqf.js.map +1 -1
  739. package/dist/shimmer-Co-XPvF9.cjs.map +1 -1
  740. package/dist/{side-dialog-bm8NPDXy.js → side-dialog-DSvj8H6x.js} +4 -4
  741. package/dist/{side-dialog-bm8NPDXy.js.map → side-dialog-DSvj8H6x.js.map} +1 -1
  742. package/dist/{side-dialog-BzULMBaH.cjs → side-dialog-SJCWBnbw.cjs} +4 -4
  743. package/dist/{side-dialog-BzULMBaH.cjs.map → side-dialog-SJCWBnbw.cjs.map} +1 -1
  744. package/dist/{signal-activity-D-_u7DFm.cjs → signal-activity-C_bihjcd.cjs} +2 -2
  745. package/dist/{signal-activity-D-_u7DFm.cjs.map → signal-activity-C_bihjcd.cjs.map} +1 -1
  746. package/dist/{signal-activity-BkFexFiJ.js → signal-activity-J9kpnwAF.js} +2 -2
  747. package/dist/{signal-activity-BkFexFiJ.js.map → signal-activity-J9kpnwAF.js.map} +1 -1
  748. package/dist/{span-payload-primitives-wujxDKfA.cjs → span-payload-primitives-C0KYtmtV.cjs} +3 -3
  749. package/dist/{span-payload-primitives-wujxDKfA.cjs.map → span-payload-primitives-C0KYtmtV.cjs.map} +1 -1
  750. package/dist/{span-payload-primitives-jQiJK0qI.js → span-payload-primitives-D_N9LeLk.js} +3 -3
  751. package/dist/{span-payload-primitives-jQiJK0qI.js.map → span-payload-primitives-D_N9LeLk.js.map} +1 -1
  752. package/dist/src/domains/traces/components/span-rows.d.ts +2 -0
  753. package/dist/src/domains/traces/components/span-tree-rail.d.ts +23 -0
  754. package/dist/src/domains/traces/components/span-type-badge.d.ts +9 -0
  755. package/dist/src/domains/traces/components/timeline-name-col.d.ts +2 -2
  756. package/dist/src/domains/traces/components/timeline-structure-sign.d.ts +14 -1
  757. package/dist/src/domains/traces/components/trace-error-cell.d.ts +8 -0
  758. package/dist/src/domains/traces/components/trace-error-details.d.ts +10 -0
  759. package/dist/src/domains/traces/components/trace-error-summary.d.ts +8 -0
  760. package/dist/src/domains/traces/components/trace-span-tree-skeleton.d.ts +1 -1
  761. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +1 -0
  762. package/dist/src/ds/components/Avatar/avatar-size.d.ts +1 -1
  763. package/dist/src/ds/components/Breadcrumb/crumb-switcher.d.ts +0 -1
  764. package/dist/src/ds/components/Button/Button.d.ts +1 -1
  765. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-context.d.ts +1 -2
  766. package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +1 -1
  767. package/dist/src/ds/components/Select/select.d.ts +1 -1
  768. package/dist/src/ds/primitives/popup-anchor.d.ts +4 -0
  769. package/dist/src/hooks/use-environment-variables-editor.d.ts +1 -1
  770. package/dist/src/lib/keyboard/keyboard-dispatcher.d.ts +2 -0
  771. package/dist/src/lib/keyboard/use-keydown.d.ts +8 -1
  772. package/dist/style.css +121 -143
  773. package/dist/{tabs-tab-DRaRUvQ3.cjs → tabs-tab-B0W25Dm2.cjs} +2 -2
  774. package/dist/{tabs-tab-DRaRUvQ3.cjs.map → tabs-tab-B0W25Dm2.cjs.map} +1 -1
  775. package/dist/{tabs-tab-CIVJEMoY.js → tabs-tab-CkLyKrL0.js} +2 -2
  776. package/dist/{tabs-tab-CIVJEMoY.js.map → tabs-tab-CkLyKrL0.js.map} +1 -1
  777. package/dist/{thread-list-BANpytn3.cjs → thread-list-BBPZYHh8.cjs} +2 -2
  778. package/dist/thread-list-BBPZYHh8.cjs.map +1 -0
  779. package/dist/{thread-list-lXnXsPul.js → thread-list-BGjKZfEH.js} +2 -2
  780. package/dist/thread-list-BGjKZfEH.js.map +1 -0
  781. package/dist/{time-picker-BpCfTfoe.js → time-picker-Bzdboi4W.js} +2 -2
  782. package/dist/{time-picker-BpCfTfoe.js.map → time-picker-Bzdboi4W.js.map} +1 -1
  783. package/dist/{time-picker-DhekkO5t.cjs → time-picker-CyvG-fwX.cjs} +2 -2
  784. package/dist/{time-picker-DhekkO5t.cjs.map → time-picker-CyvG-fwX.cjs.map} +1 -1
  785. package/dist/{tool-approval-BrqoN_mP.js → tool-approval-P8rUFAYp.js} +4 -4
  786. package/dist/{tool-approval-BrqoN_mP.js.map → tool-approval-P8rUFAYp.js.map} +1 -1
  787. package/dist/{tool-approval-zBfJ20iR.cjs → tool-approval-zhWdp8i6.cjs} +4 -4
  788. package/dist/{tool-approval-zBfJ20iR.cjs.map → tool-approval-zhWdp8i6.cjs.map} +1 -1
  789. package/dist/{tool-call-arguments-DwMeGQHD.cjs → tool-call-arguments-DzpFckIm.cjs} +3 -3
  790. package/dist/{tool-call-arguments-DwMeGQHD.cjs.map → tool-call-arguments-DzpFckIm.cjs.map} +1 -1
  791. package/dist/{tool-call-arguments-Dx4LW1Ni.js → tool-call-arguments-goEdIs4f.js} +3 -3
  792. package/dist/{tool-call-arguments-Dx4LW1Ni.js.map → tool-call-arguments-goEdIs4f.js.map} +1 -1
  793. package/dist/{tool-call-group-DJsiIb-B.cjs → tool-call-group-C56oARyx.cjs} +4 -4
  794. package/dist/tool-call-group-C56oARyx.cjs.map +1 -0
  795. package/dist/{tool-call-group-ZDNZog5K.js → tool-call-group-DU4T72Xn.js} +4 -4
  796. package/dist/tool-call-group-DU4T72Xn.js.map +1 -0
  797. package/dist/{tool-call-mono-Bs7y-1Cq.js → tool-call-mono-DPW6hN91.js} +2 -2
  798. package/dist/{tool-call-mono-Bs7y-1Cq.js.map → tool-call-mono-DPW6hN91.js.map} +1 -1
  799. package/dist/{tool-call-mono-I-vdqzCe.cjs → tool-call-mono-aheL8CkL.cjs} +2 -2
  800. package/dist/{tool-call-mono-I-vdqzCe.cjs.map → tool-call-mono-aheL8CkL.cjs.map} +1 -1
  801. package/dist/{tool-call-output-Dd8zlhLd.js → tool-call-output-BQYzMMMi.js} +2 -2
  802. package/dist/{tool-call-output-Dd8zlhLd.js.map → tool-call-output-BQYzMMMi.js.map} +1 -1
  803. package/dist/{tool-call-output-BrNg0Lkd.cjs → tool-call-output-CuwM5IHd.cjs} +2 -2
  804. package/dist/{tool-call-output-BrNg0Lkd.cjs.map → tool-call-output-CuwM5IHd.cjs.map} +1 -1
  805. package/dist/{tool-card-D4yrR2AE.js → tool-card-aclA3iVz.js} +4 -4
  806. package/dist/{tool-card-D4yrR2AE.js.map → tool-card-aclA3iVz.js.map} +1 -1
  807. package/dist/{tool-card-D6UdNzIX.cjs → tool-card-yii3vGHu.cjs} +4 -4
  808. package/dist/{tool-card-D6UdNzIX.cjs.map → tool-card-yii3vGHu.cjs.map} +1 -1
  809. package/dist/{traces-data-list-Bhhg9drs.cjs → traces-data-list-Co9k5J4f.cjs} +18 -20
  810. package/dist/{traces-data-list-Bhhg9drs.cjs.map → traces-data-list-Co9k5J4f.cjs.map} +1 -1
  811. package/dist/{traces-data-list-DMWPJFBc.js → traces-data-list-TCKjOldO.js} +2 -4
  812. package/dist/{traces-data-list-DMWPJFBc.js.map → traces-data-list-TCKjOldO.js.map} +1 -1
  813. package/dist/use-data-list-keyboard-DF3tLe10.cjs.map +1 -1
  814. package/dist/use-data-list-keyboard-DFQr4t38.js.map +1 -1
  815. package/dist/{use-workflow-graph-runtime-DF-56pIR.cjs → use-workflow-graph-runtime-DcQD5eA6.cjs} +3 -3
  816. package/dist/{use-workflow-graph-runtime-DF-56pIR.cjs.map → use-workflow-graph-runtime-DcQD5eA6.cjs.map} +1 -1
  817. package/dist/{use-workflow-graph-runtime-BrHXo49Q.js → use-workflow-graph-runtime-xq_aSXPh.js} +3 -3
  818. package/dist/{use-workflow-graph-runtime-BrHXo49Q.js.map → use-workflow-graph-runtime-xq_aSXPh.js.map} +1 -1
  819. package/dist/utils/workspace-compat.cjs.js.map +1 -1
  820. package/dist/utils/workspace-compat.es.js.map +1 -1
  821. package/dist/{workflow-code-dialog-content-CfVy6bGG.cjs → workflow-code-dialog-content-B_BQCuFW.cjs} +3 -3
  822. package/dist/{workflow-code-dialog-content-CfVy6bGG.cjs.map → workflow-code-dialog-content-B_BQCuFW.cjs.map} +1 -1
  823. package/dist/{workflow-code-dialog-content-DviJz1jB.js → workflow-code-dialog-content-CFEaeYUX.js} +3 -3
  824. package/dist/{workflow-code-dialog-content-DviJz1jB.js.map → workflow-code-dialog-content-CFEaeYUX.js.map} +1 -1
  825. package/dist/{workflow-condition-card-BRwhMmNO.cjs → workflow-condition-card-CMzoK307.cjs} +3 -3
  826. package/dist/{workflow-condition-card-BRwhMmNO.cjs.map → workflow-condition-card-CMzoK307.cjs.map} +1 -1
  827. package/dist/{workflow-condition-card-sFdOjlab.js → workflow-condition-card-CbQ4fCxY.js} +3 -3
  828. package/dist/{workflow-condition-card-sFdOjlab.js.map → workflow-condition-card-CbQ4fCxY.js.map} +1 -1
  829. package/dist/{workflow-data-edge-view-DpPhr9gZ.cjs → workflow-data-edge-view-0utEB4Yb.cjs} +2 -2
  830. package/dist/{workflow-data-edge-view-DpPhr9gZ.cjs.map → workflow-data-edge-view-0utEB4Yb.cjs.map} +1 -1
  831. package/dist/{workflow-data-edge-view-CuSzc6YI.js → workflow-data-edge-view-gwwJEvXz.js} +2 -2
  832. package/dist/{workflow-data-edge-view-CuSzc6YI.js.map → workflow-data-edge-view-gwwJEvXz.js.map} +1 -1
  833. package/dist/{workflow-debug-controls-CAn_6S8K.cjs → workflow-debug-controls-B5zqE_rm.cjs} +2 -2
  834. package/dist/{workflow-debug-controls-CAn_6S8K.cjs.map → workflow-debug-controls-B5zqE_rm.cjs.map} +1 -1
  835. package/dist/{workflow-debug-controls-CLzbxd5O.js → workflow-debug-controls-CPpdNzD9.js} +2 -2
  836. package/dist/{workflow-debug-controls-CLzbxd5O.js.map → workflow-debug-controls-CPpdNzD9.js.map} +1 -1
  837. package/dist/{workflow-edge-data-button-Dtt_OUz9.js → workflow-edge-data-button-YWjfx-W0.js} +4 -4
  838. package/dist/{workflow-edge-data-button-Dtt_OUz9.js.map → workflow-edge-data-button-YWjfx-W0.js.map} +1 -1
  839. package/dist/{workflow-edge-data-button-B8rQaAoK.cjs → workflow-edge-data-button-tDvziS5v.cjs} +4 -4
  840. package/dist/{workflow-edge-data-button-B8rQaAoK.cjs.map → workflow-edge-data-button-tDvziS5v.cjs.map} +1 -1
  841. package/dist/{workflow-step-action-DqFjktfs.js → workflow-step-action-D8MVfEIl.js} +2 -2
  842. package/dist/{workflow-step-action-DqFjktfs.js.map → workflow-step-action-D8MVfEIl.js.map} +1 -1
  843. package/dist/{workflow-step-action-Cu01omgz.cjs → workflow-step-action-DZgS0_fL.cjs} +2 -2
  844. package/dist/{workflow-step-action-Cu01omgz.cjs.map → workflow-step-action-DZgS0_fL.cjs.map} +1 -1
  845. package/package.json +11 -13
  846. package/theme/scale.css +7 -0
  847. package/dist/Avatar-98bsFrSV.js.map +0 -1
  848. package/dist/Avatar-BCj8SvOb.cjs.map +0 -1
  849. package/dist/Button-DH1aTzbs.cjs.map +0 -1
  850. package/dist/Button-EGoajBQY.js.map +0 -1
  851. package/dist/activity-2tovEdIP.cjs.map +0 -1
  852. package/dist/activity-CsTUr5_l.js.map +0 -1
  853. package/dist/ask-user-card-DroerVbm.cjs.map +0 -1
  854. package/dist/avatar-size-CNR0U-LW.js.map +0 -1
  855. package/dist/avatar-size-DxStOo5A.cjs.map +0 -1
  856. package/dist/combobox-BNlVCFgY.cjs.map +0 -1
  857. package/dist/combobox-Bw13EcK0.js.map +0 -1
  858. package/dist/command-UEPxVJlE.cjs.map +0 -1
  859. package/dist/command-V9rsKc7P.js.map +0 -1
  860. package/dist/data-keys-and-values-1lYi60YK.cjs.map +0 -1
  861. package/dist/data-keys-and-values-CHpxKsfq.js.map +0 -1
  862. package/dist/data-list-CmjTe8xE.cjs +0 -142
  863. package/dist/data-list-CmjTe8xE.cjs.map +0 -1
  864. package/dist/data-list-DT1LVR29.js +0 -138
  865. package/dist/data-list-DT1LVR29.js.map +0 -1
  866. package/dist/data-list-spacer-CdlT6bDd.cjs +0 -218
  867. package/dist/data-list-spacer-CdlT6bDd.cjs.map +0 -1
  868. package/dist/data-list-spacer-D--gDmOm.js +0 -209
  869. package/dist/data-list-spacer-D--gDmOm.js.map +0 -1
  870. package/dist/data-list-top-DJh08vFA.cjs.map +0 -1
  871. package/dist/data-list-top-T-mtdIUp.js.map +0 -1
  872. package/dist/data-panel-BkfjzriB.cjs.map +0 -1
  873. package/dist/data-panel-CMkR6Avv.js.map +0 -1
  874. package/dist/filter-bar-chip-BJJ6ytJ4.cjs.map +0 -1
  875. package/dist/filter-bar-chip-BarAq1S2.js.map +0 -1
  876. package/dist/property-filter-applied-CtSglSaH.cjs.map +0 -1
  877. package/dist/property-filter-applied-J9ob_Rss.js.map +0 -1
  878. package/dist/select-CQtsggxJ.js.map +0 -1
  879. package/dist/select-CbNLtiAs.cjs.map +0 -1
  880. package/dist/thread-list-BANpytn3.cjs.map +0 -1
  881. package/dist/thread-list-lXnXsPul.js.map +0 -1
  882. package/dist/tool-call-group-DJsiIb-B.cjs.map +0 -1
  883. package/dist/tool-call-group-ZDNZog5K.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RuleBuilder.es.js","sources":["../../src/lib/rule-engine/components/schema-utils.ts","../../src/lib/rule-engine/components/rule-field-select.tsx","../../src/lib/rule-engine/components/types.ts","../../src/lib/rule-engine/components/rule-operator-select.tsx","../../src/lib/rule-engine/components/rule-value-input.tsx","../../src/lib/rule-engine/components/rule-row.tsx","../../src/lib/rule-engine/components/rule-builder.tsx"],"sourcesContent":["import type { FieldOption, JsonSchema, JsonSchemaProperty } from './types';\n\n/**\n * Gets the primary type from a JSON Schema property\n */\nexport const getPropertyType = (property: JsonSchemaProperty): string => {\n if (Array.isArray(property.type)) {\n // Return the first non-null type\n return property.type.find(t => t !== 'null') || 'string';\n }\n return property.type || 'string';\n};\n\n/**\n * Checks if a property has nested children (object or array of objects)\n */\nexport const hasNestedChildren = (property: JsonSchemaProperty): boolean => {\n const type = getPropertyType(property);\n\n if (type === 'object' && property.properties) {\n return Object.keys(property.properties).length > 0;\n }\n\n if (type === 'array' && property.items) {\n const itemType = getPropertyType(property.items);\n return itemType === 'object' && !!property.items.properties;\n }\n\n return false;\n};\n\n/**\n * Extracts field options from JSON Schema properties at a given level\n */\nexport const getFieldOptionsFromProperties = (\n properties: Record<string, JsonSchemaProperty> | undefined,\n parentPath: string = '',\n): FieldOption[] => {\n if (!properties) return [];\n\n return Object.entries(properties).map(([key, property]) => {\n const path = parentPath ? `${parentPath}.${key}` : key;\n const type = getPropertyType(property);\n const hasChildren = hasNestedChildren(property);\n\n return {\n path,\n label: property.title || key,\n type,\n hasChildren,\n children: type === 'object' ? property.properties : undefined,\n items: type === 'array' ? property.items : undefined,\n };\n });\n};\n\n/**\n * Gets field options from the root schema\n */\nexport const getFieldOptionsFromSchema = (schema: JsonSchema): FieldOption[] => {\n return getFieldOptionsFromProperties(schema.properties);\n};\n\n/**\n * Gets child field options for a given field option\n */\nexport const getChildFieldOptions = (fieldOption: FieldOption, currentPath: string): FieldOption[] => {\n if (fieldOption.type === 'object' && fieldOption.children) {\n return getFieldOptionsFromProperties(fieldOption.children, currentPath);\n }\n\n if (fieldOption.type === 'array' && fieldOption.items) {\n const itemType = getPropertyType(fieldOption.items);\n if (itemType === 'object' && fieldOption.items.properties) {\n // For arrays, we use the current path directly (user will access via index or iteration)\n return getFieldOptionsFromProperties(fieldOption.items.properties, currentPath);\n }\n }\n\n return [];\n};\n\n/**\n * Parses a field path into segments\n */\nexport const parseFieldPath = (path: string): string[] => {\n return path.split('.').filter(Boolean);\n};\n\n/**\n * Gets the field option at a specific path in the schema\n */\nexport const getFieldOptionAtPath = (schema: JsonSchema, path: string): FieldOption | undefined => {\n const segments = parseFieldPath(path);\n if (segments.length === 0) return undefined;\n\n let currentProperties = schema.properties;\n let currentPath = '';\n let result: FieldOption | undefined;\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n if (segment === undefined) return undefined;\n\n const property = currentProperties?.[segment];\n if (!property) {\n return undefined;\n }\n\n currentPath = currentPath ? `${currentPath}.${segment}` : segment;\n const type = getPropertyType(property);\n const hasChildren = hasNestedChildren(property);\n\n result = {\n path: currentPath,\n label: property.title || segment,\n type,\n hasChildren,\n children: type === 'object' ? property.properties : undefined,\n items: type === 'array' ? property.items : undefined,\n };\n\n // Navigate deeper\n if (type === 'object' && property.properties) {\n currentProperties = property.properties;\n } else if (type === 'array' && property.items?.properties) {\n currentProperties = property.items.properties;\n } else {\n currentProperties = undefined;\n }\n }\n\n return result;\n};\n","import { Braces, Hash, List, ToggleLeft, Type } from 'lucide-react';\nimport * as React from 'react';\n\nimport { getFieldOptionsFromSchema, getFieldOptionAtPath, getChildFieldOptions, parseFieldPath } from './schema-utils';\nimport type { FieldOption, RuleFieldSelectProps } from './types';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Get icon for a field type\n */\nconst getFieldTypeIcon = (type: string): React.ReactNode => {\n switch (type) {\n case 'object':\n return <Braces />;\n case 'array':\n return <List />;\n case 'number':\n case 'integer':\n return <Hash />;\n case 'boolean':\n return <ToggleLeft />;\n case 'string':\n default:\n return <Type />;\n }\n};\n\n/**\n * A single level of field selection\n */\ntype FieldLevelSelectProps = {\n options: FieldOption[];\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n};\n\nconst FieldLevelSelect: React.FC<FieldLevelSelectProps> = ({\n options,\n value,\n onChange,\n placeholder = 'Select field',\n className,\n}) => {\n return (\n <div className={cn('relative', className)}>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger className=\"bg-muted text-foreground\" size=\"sm\">\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map(option => (\n <SelectItem key={option.path} value={option.path}>\n <span className=\"flex items-center gap-2\">\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n {getFieldTypeIcon(option.type)}\n </Icon>\n {option.label}\n {option.hasChildren && <span className=\"text-muted-foreground\">...</span>}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n};\n\n/**\n * Recursive field selector that shows additional dropdowns for nested objects/arrays\n */\nexport const RuleFieldSelect: React.FC<RuleFieldSelectProps> = ({ schema, value, onChange, className }) => {\n // Parse the current path into segments\n const pathSegments = React.useMemo(() => parseFieldPath(value), [value]);\n\n // Build the list of selectors needed based on the current value\n const selectors = React.useMemo(() => {\n const result: Array<{\n options: FieldOption[];\n value: string;\n basePath: string;\n }> = [];\n\n // First level: root schema properties\n const rootOptions = getFieldOptionsFromSchema(schema);\n if (rootOptions.length === 0) return result;\n\n result.push({\n options: rootOptions,\n value: pathSegments[0] || '',\n basePath: '',\n });\n\n // For each segment, check if we need to add more selectors\n let currentPath = '';\n for (let i = 0; i < pathSegments.length; i++) {\n const segment = pathSegments[i];\n if (segment === undefined) break;\n currentPath = currentPath ? `${currentPath}.${segment}` : segment;\n\n const fieldOption = getFieldOptionAtPath(schema, currentPath);\n if (!fieldOption || !fieldOption.hasChildren) break;\n\n // Get child options for the next level\n const childOptions = getChildFieldOptions(fieldOption, currentPath);\n if (childOptions.length === 0) break;\n\n // Check if there's a next segment selected\n const nextSegment = pathSegments[i + 1];\n const nextPath = nextSegment ? `${currentPath}.${nextSegment}` : '';\n\n result.push({\n options: childOptions,\n value: nextPath,\n basePath: currentPath,\n });\n }\n\n return result;\n }, [schema, pathSegments]);\n\n // Handle change at a specific level\n const handleChange = React.useCallback(\n (levelIndex: number, newValue: string) => {\n // When changing a level, we truncate any deeper selections\n onChange(newValue);\n },\n [onChange],\n );\n\n if (selectors.length === 0) {\n return (\n <Txt as=\"p\" variant=\"body\" tone=\"muted\" className={className}>\n No fields available\n </Txt>\n );\n }\n\n return (\n <div className={cn('flex items-center gap-1', className)}>\n {selectors.map((selector, index) => (\n <React.Fragment key={`${selector.basePath}-${index}`}>\n {index > 0 && <span className=\"text-muted-foreground\">.</span>}\n <FieldLevelSelect\n options={selector.options}\n value={selector.value}\n onChange={newValue => handleChange(index, newValue)}\n placeholder={index === 0 ? 'Select field' : 'Select property'}\n />\n </React.Fragment>\n ))}\n </div>\n );\n};\n","import type { ConditionOperator, Rule, RuleGroup } from '../types';\nimport type { JsonSchema, JsonSchemaProperty } from '@/lib/json-schema';\n\nexport type { JsonSchema, JsonSchemaProperty };\n\n/**\n * Represents a field option extracted from JSON Schema\n */\nexport type FieldOption = {\n /** The field path (e.g., \"user.email\") */\n path: string;\n /** Display label */\n label: string;\n /** The JSON Schema type of the field */\n type: string;\n /** Whether this field has nested properties */\n hasChildren: boolean;\n /** Child properties if type is object */\n children?: Record<string, JsonSchemaProperty>;\n /** Item schema if type is array */\n items?: JsonSchemaProperty;\n};\n\n/**\n * Props for the RuleBuilder root component\n */\nexport type RuleBuilderProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current rule group (recursive, supports nested groups) */\n ruleGroup: RuleGroup | undefined;\n /** Callback when rule group changes */\n onChange: (ruleGroup: RuleGroup | undefined) => void;\n /** Maximum nesting depth (default: 3) */\n maxDepth?: number;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Internal props for the recursive RuleGroupView component\n */\nexport type RuleGroupViewProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** The rule group to render */\n group: RuleGroup;\n /** Callback when this group changes */\n onChange: (group: RuleGroup) => void;\n /** Callback to remove this group (undefined for root) */\n onRemove?: () => void;\n /** Current nesting depth (0 = root) */\n depth: number;\n /** Maximum nesting depth */\n maxDepth: number;\n};\n\n/**\n * Props for a single rule row\n */\nexport type RuleRowProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current rule */\n rule: Rule;\n /** Callback when rule changes */\n onChange: (rule: Rule) => void;\n /** Callback to remove this rule */\n onRemove: () => void;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the field selector\n */\nexport type RuleFieldSelectProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current selected field path */\n value: string;\n /** Callback when field changes */\n onChange: (field: string) => void;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the operator selector\n */\nexport type RuleOperatorSelectProps = {\n /** Current selected operator */\n value: ConditionOperator;\n /** Callback when operator changes */\n onChange: (operator: ConditionOperator) => void;\n /** Subset of operators to show. Defaults to all operators. */\n operators?: readonly ConditionOperator[];\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the value input\n */\nexport type RuleValueInputProps = {\n /** Current value */\n value: unknown;\n /** Callback when value changes */\n onChange: (value: unknown) => void;\n /** The operator (affects input behavior for \"in\" and \"not_in\") */\n operator: ConditionOperator;\n /** The field type from JSON Schema (string, number, boolean, etc.) */\n fieldType?: string;\n /** Optional placeholder */\n placeholder?: string;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Operator labels for display\n */\nexport const OPERATOR_LABELS: Record<ConditionOperator, string> = {\n equals: 'equals',\n not_equals: 'not equals',\n contains: 'contains',\n not_contains: 'not contains',\n greater_than: 'greater than',\n less_than: 'less than',\n greater_than_or_equal: 'greater than or equal',\n less_than_or_equal: 'less than or equal',\n in: 'in',\n not_in: 'not in',\n exists: 'exists',\n not_exists: 'not exists',\n};\n\n/**\n * All available operators\n */\nexport const OPERATORS: ConditionOperator[] = [\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal',\n 'in',\n 'not_in',\n 'exists',\n 'not_exists',\n];\n","import {\n Equal,\n EqualNot,\n Text,\n TextSearch,\n ChevronRight,\n ChevronLeft,\n ChevronsRight,\n ChevronsLeft,\n List,\n ListX,\n Check,\n Ban,\n} from 'lucide-react';\nimport * as React from 'react';\n\nimport type { ConditionOperator } from '../types';\nimport type { RuleOperatorSelectProps } from './types';\nimport { OPERATOR_LABELS, OPERATORS } from './types';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Icons for each operator type\n */\nconst OPERATOR_ICONS: Record<ConditionOperator, React.ReactNode> = {\n equals: <Equal />,\n not_equals: <EqualNot />,\n contains: <TextSearch />,\n not_contains: <Text />,\n greater_than: <ChevronRight />,\n less_than: <ChevronLeft />,\n greater_than_or_equal: <ChevronsRight />,\n less_than_or_equal: <ChevronsLeft />,\n in: <List />,\n not_in: <ListX />,\n exists: <Check />,\n not_exists: <Ban />,\n};\n\n/**\n * Select component for choosing a rule operator\n */\nexport const RuleOperatorSelect: React.FC<RuleOperatorSelectProps> = ({ value, onChange, operators, className }) => {\n const operatorList = operators ?? OPERATORS;\n\n return (\n <div className={cn('relative', className)}>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger className=\"bg-muted text-foreground\" size=\"sm\">\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {operatorList.map(operator => (\n <SelectItem key={operator} value={operator}>\n <span className=\"flex items-center gap-2\">\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n {OPERATOR_ICONS[operator]}\n </Icon>\n {OPERATOR_LABELS[operator]}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n};\n","import { Hash, ToggleLeft, Type } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { RuleValueInputProps } from './types';\nimport { Input } from '@/ds/components/Input/input';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Parses a string value to the appropriate type\n */\nconst parseValue = (stringValue: string): unknown => {\n const trimmed = stringValue.trim();\n\n // Empty string\n if (trimmed === '') return '';\n\n // Boolean\n if (trimmed === 'true') return true;\n if (trimmed === 'false') return false;\n\n // Null\n if (trimmed === 'null') return null;\n\n // Reject special number strings - keep as strings\n const lowerTrimmed = trimmed.toLowerCase();\n if (lowerTrimmed === 'infinity' || lowerTrimmed === '-infinity' || lowerTrimmed === 'nan') {\n return trimmed;\n }\n\n // Number\n const num = Number(trimmed);\n if (!Number.isNaN(num)) return num;\n\n // String (default)\n return stringValue;\n};\n\n/**\n * Parses a comma-separated string into an array of values\n */\nconst parseArrayValue = (stringValue: string): unknown[] => {\n if (stringValue.trim() === '') return [];\n\n return stringValue.split(',').map(item => parseValue(item.trim()));\n};\n\n/**\n * Converts a value to a display string\n */\nconst valueToString = (value: unknown): string => {\n if (value === null) return 'null';\n if (value === undefined) return '';\n if (Array.isArray(value)) return value.map(valueToString).join(', ');\n return String(value);\n};\n\n/**\n * Converts a boolean value to a string for the select\n */\nconst booleanToString = (value: unknown): string => {\n if (value === true) return 'true';\n if (value === false) return 'false';\n return '';\n};\n\ntype BaseInputProps = {\n value: unknown;\n onChange: (value: unknown) => void;\n placeholder?: string;\n className?: string;\n};\n\n/**\n * Boolean value input using a Select dropdown with icon inside\n */\nconst BooleanValueInput: React.FC<BaseInputProps> = ({ value, onChange, className }) => {\n const stringValue = booleanToString(value);\n\n const handleChange = React.useCallback(\n (newValue: string) => {\n onChange(newValue === 'true');\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon\n size=\"xs\"\n className=\"pointer-events-none absolute top-1/2 left-2 z-10 -translate-y-1/2 text-muted-foreground\"\n >\n <ToggleLeft />\n </Icon>\n <Select value={stringValue} onValueChange={handleChange}>\n <SelectTrigger className=\"bg-muted pl-7\" size=\"sm\">\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n </div>\n );\n};\n\n/**\n * Number value input with icon inside\n */\nconst NumberValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = value === undefined || value === '' ? '' : String(value);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (inputValue === '') {\n onChange('');\n } else {\n const num = Number(inputValue);\n onChange(Number.isNaN(num) ? inputValue : num);\n }\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon size=\"xs\" className=\"pointer-events-none absolute top-1/2 left-2 -translate-y-1/2 text-muted-foreground\">\n <Hash />\n </Icon>\n <Input\n type=\"number\"\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter number'}\n className=\"min-w-35 bg-muted pl-7\"\n size=\"sm\"\n />\n </div>\n );\n};\n\n/**\n * Text value input with icon inside\n */\nconst TextValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = valueToString(value);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(parseValue(e.target.value));\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon size=\"xs\" className=\"pointer-events-none absolute top-1/2 left-2 -translate-y-1/2 text-muted-foreground\">\n <Type />\n </Icon>\n <Input\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter value'}\n className=\"min-w-35 bg-muted pl-7\"\n size=\"sm\"\n />\n </div>\n );\n};\n\n/**\n * Array value input (for \"in\" and \"not_in\" operators)\n */\nconst ArrayValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = React.useMemo(() => {\n if (Array.isArray(value)) {\n return value.map(valueToString).join(', ');\n }\n return valueToString(value);\n }, [value]);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(parseArrayValue(e.target.value));\n },\n [onChange],\n );\n\n return (\n <Input\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter values (comma-separated)'}\n className={cn('min-w-40 bg-muted', className)}\n size=\"sm\"\n />\n );\n};\n\n/**\n * Input component for entering rule values\n * Supports different modes based on the operator and field type:\n * - \"in\" and \"not_in\": Comma-separated values (parsed as array)\n * - Boolean fields: Select dropdown with true/false\n * - Number fields: Number input\n * - Other: Text input\n */\nexport const RuleValueInput: React.FC<RuleValueInputProps> = ({\n value,\n onChange,\n operator,\n fieldType,\n placeholder,\n className,\n}) => {\n const isArrayOperator = operator === 'in' || operator === 'not_in';\n\n // Array operators always use text input for comma-separated values\n if (isArrayOperator) {\n return <ArrayValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Boolean fields use Select dropdown\n if (fieldType === 'boolean') {\n return <BooleanValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Number fields use number input\n if (fieldType === 'number' || fieldType === 'integer') {\n return <NumberValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Default to text input\n return <TextValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n};\n","import { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { ConditionOperator } from '../types';\n\nimport { RuleFieldSelect } from './rule-field-select';\nimport { RuleOperatorSelect } from './rule-operator-select';\nimport { RuleValueInput } from './rule-value-input';\nimport { getFieldOptionAtPath } from './schema-utils';\nimport type { RuleRowProps } from './types';\n\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nconst PRIMITIVE_TYPES = new Set(['string', 'number', 'boolean', 'integer']);\n\n/**\n * A single rule row with field selector, operator selector, and value input\n */\nexport const RuleRow: React.FC<RuleRowProps> = ({ schema, rule, onChange, onRemove, className }) => {\n const fieldType = React.useMemo(() => {\n return getFieldOptionAtPath(schema, rule.field)?.type;\n }, [schema, rule.field]);\n\n const isPrimitive = fieldType !== undefined && PRIMITIVE_TYPES.has(fieldType);\n const isArray = fieldType === 'array';\n const isArrayOperator = rule.operator === 'in' || rule.operator === 'not_in';\n const isExistenceOperator = rule.operator === 'exists' || rule.operator === 'not_exists';\n\n // Show operator + value for primitive types, or for array types (restricted to in/not_in)\n const showComparator = isPrimitive || isArray;\n const showValueInput = !isExistenceOperator && (isPrimitive || (isArray && isArrayOperator));\n\n const handleFieldChange = React.useCallback(\n (field: string) => {\n onChange({ ...rule, field });\n },\n [rule, onChange],\n );\n\n const handleOperatorChange = React.useCallback(\n (operator: ConditionOperator) => {\n const isNewExistence = operator === 'exists' || operator === 'not_exists';\n\n // Existence operators don't need a value\n if (isNewExistence) {\n onChange({ ...rule, operator, value: undefined });\n return;\n }\n\n // Reset value when changing to/from array operators\n const isArrayOperator = operator === 'in' || operator === 'not_in';\n const wasArrayOperator = rule.operator === 'in' || rule.operator === 'not_in';\n\n let newValue = rule.value;\n if (isArrayOperator && !wasArrayOperator) {\n // Converting to array operator: wrap value in array\n newValue = rule.value !== undefined ? [rule.value] : [];\n } else if (!isArrayOperator && wasArrayOperator) {\n // Converting from array operator: take first value\n newValue = Array.isArray(rule.value) ? rule.value[0] : rule.value;\n }\n\n onChange({ ...rule, operator, value: newValue });\n },\n [rule, onChange],\n );\n\n const handleValueChange = React.useCallback(\n (value: unknown) => {\n onChange({ ...rule, value });\n },\n [rule, onChange],\n );\n\n return (\n <div className=\"flex justify-between gap-2\">\n <div className={cn('flex flex-wrap items-center gap-2', className)}>\n <RuleFieldSelect schema={schema} value={rule.field} onChange={handleFieldChange} />\n\n {showComparator && (\n <>\n <RuleOperatorSelect\n value={rule.operator}\n onChange={handleOperatorChange}\n operators={isArray ? (['in', 'not_in'] as const) : undefined}\n />\n\n {showValueInput && (\n <RuleValueInput\n value={rule.value}\n onChange={handleValueChange}\n operator={rule.operator}\n fieldType={fieldType}\n />\n )}\n </>\n )}\n </div>\n\n <Button type=\"button\" onClick={onRemove} tooltip=\"Remove rule\" size=\"icon-sm\" variant=\"ghost\">\n <X />\n </Button>\n </div>\n );\n};\n","import { Plus, X, Component } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { Rule, RuleGroup, RuleGroupDepth1 } from '../types';\nimport { isRule, createDefaultRule, createDefaultRuleGroup } from '../utils';\n\nimport { RuleRow } from './rule-row';\nimport type { RuleBuilderProps, RuleGroupViewProps } from './types';\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_MAX_DEPTH = 3;\n\n/**\n * Internal recursive component that renders one level of a rule group.\n */\nconst RuleGroupView: React.FC<RuleGroupViewProps> = ({ schema, group, onChange, onRemove, depth, maxDepth }) => {\n const isRoot = depth === 0;\n\n const handleToggleOperator = () => {\n onChange({ ...group, operator: group.operator === 'AND' ? 'OR' : 'AND' });\n };\n\n const handleConditionChange = (index: number, condition: Rule | RuleGroup) => {\n onChange({\n ...group,\n conditions: group.conditions.map((c, i) => (i === index ? (condition as Rule | RuleGroupDepth1) : c)),\n });\n };\n\n const handleRemoveCondition = (index: number) => {\n const newConditions = group.conditions.filter((_, i) => i !== index);\n if (newConditions.length === 0 && onRemove) {\n onRemove();\n } else {\n onChange({ ...group, conditions: newConditions });\n }\n };\n\n const handleAddRule = () => {\n onChange({ ...group, conditions: [...group.conditions, createDefaultRule()] });\n };\n\n const handleAddGroup = () => {\n onChange({\n ...group,\n conditions: [\n ...group.conditions,\n createDefaultRuleGroup(group.operator === 'AND' ? 'OR' : 'AND') as RuleGroupDepth1,\n ],\n });\n };\n\n return (\n <div className={cn(isRoot ? 'bg-background' : 'bg-card pl-6')}>\n {/* Non-root group header */}\n {!isRoot && (\n <div className=\"flex items-center justify-between border-b border-dashed border-border py-1.5 pr-4 pl-3\">\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\">\n Group\n </Txt>\n {onRemove && (\n <Button type=\"button\" onClick={onRemove} tooltip=\"Remove group\" size=\"icon-sm\" variant=\"ghost\">\n <X />\n </Button>\n )}\n </div>\n )}\n\n {group.conditions.map((condition, index) => (\n <div key={index} className=\"border-b border-dashed border-border last:border-b-0\">\n <div className={cn('relative', isRule(condition) && 'border-l-4 border-border p-4')}>\n {index > 0 && (\n <button\n type=\"button\"\n onClick={handleToggleOperator}\n className={cn(\n 'absolute top-0 left-1/2 z-10 -translate-1/2 cursor-pointer rounded-full px-3 py-0.5',\n group.operator === 'OR'\n ? 'bg-badge-amber-subtle text-badge-amber-foreground hover:bg-badge-amber-strong'\n : 'bg-badge-blue-subtle text-badge-blue-foreground hover:bg-badge-blue-strong',\n )}\n >\n <Txt as=\"span\" variant=\"meta\" className=\"block\">\n {group.operator.toLowerCase()}\n </Txt>\n </button>\n )}\n\n {isRule(condition) ? (\n <RuleRow\n schema={schema}\n rule={condition}\n onChange={updatedRule => handleConditionChange(index, updatedRule)}\n onRemove={() => handleRemoveCondition(index)}\n />\n ) : (\n <RuleGroupView\n schema={schema}\n group={condition}\n onChange={updatedGroup => handleConditionChange(index, updatedGroup)}\n onRemove={() => handleRemoveCondition(index)}\n depth={depth + 1}\n maxDepth={maxDepth}\n />\n )}\n </div>\n </div>\n ))}\n\n <div className=\"flex gap-1 p-2\">\n <Button type=\"button\" onClick={handleAddRule} variant=\"ghost\" size=\"sm\" icon={<Plus />}>\n Add rule\n </Button>\n {depth < maxDepth - 1 && (\n <Button type=\"button\" onClick={handleAddGroup} variant=\"ghost\" size=\"sm\" icon={<Component />}>\n Add group\n </Button>\n )}\n </div>\n </div>\n );\n};\n\n/**\n * Rule builder component for creating and managing a recursive set of rules\n * based on a JSON Schema defining available fields.\n *\n * Supports nested rule groups with AND/OR operators at each level.\n */\nexport const RuleBuilder: React.FC<RuleBuilderProps> = ({\n schema,\n ruleGroup,\n onChange,\n maxDepth = DEFAULT_MAX_DEPTH,\n className,\n}) => {\n const handleGroupChange = React.useCallback(\n (group: RuleGroup) => {\n onChange(group);\n },\n [onChange],\n );\n\n const handleAddFirstRule = React.useCallback(() => {\n onChange({ operator: 'AND', conditions: [createDefaultRule()] });\n }, [onChange]);\n\n if (!ruleGroup) {\n return (\n <button\n type=\"button\"\n onClick={handleAddFirstRule}\n className={cn(\n quietTextHover,\n controlStateColorTransition,\n 'flex w-full items-center justify-center gap-2 rounded-md border border-dashed border-border p-2',\n )}\n >\n <Icon>\n <Plus />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" className=\"block\">\n Add conditional rule\n </Txt>\n </button>\n );\n }\n\n return (\n <div className={className}>\n <RuleGroupView schema={schema} group={ruleGroup} onChange={handleGroupChange} depth={0} maxDepth={maxDepth} />\n </div>\n );\n};\n"],"names":["isArrayOperator"],"mappings":"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"}
1
+ {"version":3,"file":"RuleBuilder.es.js","sources":["../../src/lib/rule-engine/components/schema-utils.ts","../../src/lib/rule-engine/components/rule-field-select.tsx","../../src/lib/rule-engine/components/types.ts","../../src/lib/rule-engine/components/rule-operator-select.tsx","../../src/lib/rule-engine/components/rule-value-input.tsx","../../src/lib/rule-engine/components/rule-row.tsx","../../src/lib/rule-engine/components/rule-builder.tsx"],"sourcesContent":["import type { FieldOption, JsonSchema, JsonSchemaProperty } from './types';\n\n/**\n * Gets the primary type from a JSON Schema property\n */\nexport const getPropertyType = (property: JsonSchemaProperty): string => {\n if (Array.isArray(property.type)) {\n // Return the first non-null type\n return property.type.find(t => t !== 'null') || 'string';\n }\n return property.type || 'string';\n};\n\n/**\n * Checks if a property has nested children (object or array of objects)\n */\nexport const hasNestedChildren = (property: JsonSchemaProperty): boolean => {\n const type = getPropertyType(property);\n\n if (type === 'object' && property.properties) {\n return Object.keys(property.properties).length > 0;\n }\n\n if (type === 'array' && property.items) {\n const itemType = getPropertyType(property.items);\n return itemType === 'object' && !!property.items.properties;\n }\n\n return false;\n};\n\n/**\n * Extracts field options from JSON Schema properties at a given level\n */\nexport const getFieldOptionsFromProperties = (\n properties: Record<string, JsonSchemaProperty> | undefined,\n parentPath: string = '',\n): FieldOption[] => {\n if (!properties) return [];\n\n return Object.entries(properties).map(([key, property]) => {\n const path = parentPath ? `${parentPath}.${key}` : key;\n const type = getPropertyType(property);\n const hasChildren = hasNestedChildren(property);\n\n return {\n path,\n label: property.title || key,\n type,\n hasChildren,\n children: type === 'object' ? property.properties : undefined,\n items: type === 'array' ? property.items : undefined,\n };\n });\n};\n\n/**\n * Gets field options from the root schema\n */\nexport const getFieldOptionsFromSchema = (schema: JsonSchema): FieldOption[] => {\n return getFieldOptionsFromProperties(schema.properties);\n};\n\n/**\n * Gets child field options for a given field option\n */\nexport const getChildFieldOptions = (fieldOption: FieldOption, currentPath: string): FieldOption[] => {\n if (fieldOption.type === 'object' && fieldOption.children) {\n return getFieldOptionsFromProperties(fieldOption.children, currentPath);\n }\n\n if (fieldOption.type === 'array' && fieldOption.items) {\n const itemType = getPropertyType(fieldOption.items);\n if (itemType === 'object' && fieldOption.items.properties) {\n // For arrays, we use the current path directly (user will access via index or iteration)\n return getFieldOptionsFromProperties(fieldOption.items.properties, currentPath);\n }\n }\n\n return [];\n};\n\n/**\n * Parses a field path into segments\n */\nexport const parseFieldPath = (path: string): string[] => {\n return path.split('.').filter(Boolean);\n};\n\n/**\n * Gets the field option at a specific path in the schema\n */\nexport const getFieldOptionAtPath = (schema: JsonSchema, path: string): FieldOption | undefined => {\n const segments = parseFieldPath(path);\n if (segments.length === 0) return undefined;\n\n let currentProperties = schema.properties;\n let currentPath = '';\n let result: FieldOption | undefined;\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n if (segment === undefined) return undefined;\n\n const property = currentProperties?.[segment];\n if (!property) {\n return undefined;\n }\n\n currentPath = currentPath ? `${currentPath}.${segment}` : segment;\n const type = getPropertyType(property);\n const hasChildren = hasNestedChildren(property);\n\n result = {\n path: currentPath,\n label: property.title || segment,\n type,\n hasChildren,\n children: type === 'object' ? property.properties : undefined,\n items: type === 'array' ? property.items : undefined,\n };\n\n // Navigate deeper\n if (type === 'object' && property.properties) {\n currentProperties = property.properties;\n } else if (type === 'array' && property.items?.properties) {\n currentProperties = property.items.properties;\n } else {\n currentProperties = undefined;\n }\n }\n\n return result;\n};\n","import { Braces, Hash, List, ToggleLeft, Type } from 'lucide-react';\nimport * as React from 'react';\n\nimport { getFieldOptionsFromSchema, getFieldOptionAtPath, getChildFieldOptions, parseFieldPath } from './schema-utils';\nimport type { FieldOption, RuleFieldSelectProps } from './types';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Get icon for a field type\n */\nconst getFieldTypeIcon = (type: string): React.ReactNode => {\n switch (type) {\n case 'object':\n return <Braces />;\n case 'array':\n return <List />;\n case 'number':\n case 'integer':\n return <Hash />;\n case 'boolean':\n return <ToggleLeft />;\n case 'string':\n default:\n return <Type />;\n }\n};\n\n/**\n * A single level of field selection\n */\ntype FieldLevelSelectProps = {\n options: FieldOption[];\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n};\n\nconst FieldLevelSelect: React.FC<FieldLevelSelectProps> = ({\n options,\n value,\n onChange,\n placeholder = 'Select field',\n className,\n}) => {\n return (\n <div className={cn('relative', className)}>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger className=\"bg-muted text-foreground\" size=\"sm\">\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map(option => (\n <SelectItem key={option.path} value={option.path}>\n <span className=\"flex items-center gap-2\">\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n {getFieldTypeIcon(option.type)}\n </Icon>\n {option.label}\n {option.hasChildren && <span className=\"text-muted-foreground\">...</span>}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n};\n\n/**\n * Recursive field selector that shows additional dropdowns for nested objects/arrays\n */\nexport const RuleFieldSelect: React.FC<RuleFieldSelectProps> = ({ schema, value, onChange, className }) => {\n // Parse the current path into segments\n const pathSegments = React.useMemo(() => parseFieldPath(value), [value]);\n\n // Build the list of selectors needed based on the current value\n const selectors = React.useMemo(() => {\n const result: Array<{\n options: FieldOption[];\n value: string;\n basePath: string;\n }> = [];\n\n // First level: root schema properties\n const rootOptions = getFieldOptionsFromSchema(schema);\n if (rootOptions.length === 0) return result;\n\n result.push({\n options: rootOptions,\n value: pathSegments[0] || '',\n basePath: '',\n });\n\n // For each segment, check if we need to add more selectors\n let currentPath = '';\n for (let i = 0; i < pathSegments.length; i++) {\n const segment = pathSegments[i];\n if (segment === undefined) break;\n currentPath = currentPath ? `${currentPath}.${segment}` : segment;\n\n const fieldOption = getFieldOptionAtPath(schema, currentPath);\n if (!fieldOption || !fieldOption.hasChildren) break;\n\n // Get child options for the next level\n const childOptions = getChildFieldOptions(fieldOption, currentPath);\n if (childOptions.length === 0) break;\n\n // Check if there's a next segment selected\n const nextSegment = pathSegments[i + 1];\n const nextPath = nextSegment ? `${currentPath}.${nextSegment}` : '';\n\n result.push({\n options: childOptions,\n value: nextPath,\n basePath: currentPath,\n });\n }\n\n return result;\n }, [schema, pathSegments]);\n\n // Handle change at a specific level\n const handleChange = React.useCallback(\n (levelIndex: number, newValue: string) => {\n // When changing a level, we truncate any deeper selections\n onChange(newValue);\n },\n [onChange],\n );\n\n if (selectors.length === 0) {\n return (\n <Txt as=\"p\" variant=\"body\" tone=\"muted\" className={className}>\n No fields available\n </Txt>\n );\n }\n\n return (\n <div className={cn('flex items-center gap-1', className)}>\n {selectors.map((selector, index) => (\n <React.Fragment key={`${selector.basePath}-${index}`}>\n {index > 0 && <span className=\"text-muted-foreground\">.</span>}\n <FieldLevelSelect\n options={selector.options}\n value={selector.value}\n onChange={newValue => handleChange(index, newValue)}\n placeholder={index === 0 ? 'Select field' : 'Select property'}\n />\n </React.Fragment>\n ))}\n </div>\n );\n};\n","import type { ConditionOperator, Rule, RuleGroup } from '../types';\nimport type { JsonSchema, JsonSchemaProperty } from '@/lib/json-schema';\n\nexport type { JsonSchema, JsonSchemaProperty };\n\n/**\n * Represents a field option extracted from JSON Schema\n */\nexport type FieldOption = {\n /** The field path (e.g., \"user.email\") */\n path: string;\n /** Display label */\n label: string;\n /** The JSON Schema type of the field */\n type: string;\n /** Whether this field has nested properties */\n hasChildren: boolean;\n /** Child properties if type is object */\n children?: Record<string, JsonSchemaProperty>;\n /** Item schema if type is array */\n items?: JsonSchemaProperty;\n};\n\n/**\n * Props for the RuleBuilder root component\n */\nexport type RuleBuilderProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current rule group (recursive, supports nested groups) */\n ruleGroup: RuleGroup | undefined;\n /** Callback when rule group changes */\n onChange: (ruleGroup: RuleGroup | undefined) => void;\n /** Maximum nesting depth (default: 3) */\n maxDepth?: number;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Internal props for the recursive RuleGroupView component\n */\nexport type RuleGroupViewProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** The rule group to render */\n group: RuleGroup;\n /** Callback when this group changes */\n onChange: (group: RuleGroup) => void;\n /** Callback to remove this group (undefined for root) */\n onRemove?: () => void;\n /** Current nesting depth (0 = root) */\n depth: number;\n /** Maximum nesting depth */\n maxDepth: number;\n};\n\n/**\n * Props for a single rule row\n */\nexport type RuleRowProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current rule */\n rule: Rule;\n /** Callback when rule changes */\n onChange: (rule: Rule) => void;\n /** Callback to remove this rule */\n onRemove: () => void;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the field selector\n */\nexport type RuleFieldSelectProps = {\n /** JSON Schema defining available fields */\n schema: JsonSchema;\n /** Current selected field path */\n value: string;\n /** Callback when field changes */\n onChange: (field: string) => void;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the operator selector\n */\nexport type RuleOperatorSelectProps = {\n /** Current selected operator */\n value: ConditionOperator;\n /** Callback when operator changes */\n onChange: (operator: ConditionOperator) => void;\n /** Subset of operators to show. Defaults to all operators. */\n operators?: readonly ConditionOperator[];\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Props for the value input\n */\nexport type RuleValueInputProps = {\n /** Current value */\n value: unknown;\n /** Callback when value changes */\n onChange: (value: unknown) => void;\n /** The operator (affects input behavior for \"in\" and \"not_in\") */\n operator: ConditionOperator;\n /** The field type from JSON Schema (string, number, boolean, etc.) */\n fieldType?: string;\n /** Optional placeholder */\n placeholder?: string;\n /** Optional class name */\n className?: string;\n};\n\n/**\n * Operator labels for display\n */\nexport const OPERATOR_LABELS: Record<ConditionOperator, string> = {\n equals: 'equals',\n not_equals: 'not equals',\n contains: 'contains',\n not_contains: 'not contains',\n greater_than: 'greater than',\n less_than: 'less than',\n greater_than_or_equal: 'greater than or equal',\n less_than_or_equal: 'less than or equal',\n in: 'in',\n not_in: 'not in',\n exists: 'exists',\n not_exists: 'not exists',\n};\n\n/**\n * All available operators\n */\nexport const OPERATORS: ConditionOperator[] = [\n 'equals',\n 'not_equals',\n 'contains',\n 'not_contains',\n 'greater_than',\n 'less_than',\n 'greater_than_or_equal',\n 'less_than_or_equal',\n 'in',\n 'not_in',\n 'exists',\n 'not_exists',\n];\n","import {\n Equal,\n EqualNot,\n Text,\n TextSearch,\n ChevronRight,\n ChevronLeft,\n ChevronsRight,\n ChevronsLeft,\n List,\n ListX,\n Check,\n Ban,\n} from 'lucide-react';\nimport * as React from 'react';\n\nimport type { ConditionOperator } from '../types';\nimport type { RuleOperatorSelectProps } from './types';\nimport { OPERATOR_LABELS, OPERATORS } from './types';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Icons for each operator type\n */\nconst OPERATOR_ICONS: Record<ConditionOperator, React.ReactNode> = {\n equals: <Equal />,\n not_equals: <EqualNot />,\n contains: <TextSearch />,\n not_contains: <Text />,\n greater_than: <ChevronRight />,\n less_than: <ChevronLeft />,\n greater_than_or_equal: <ChevronsRight />,\n less_than_or_equal: <ChevronsLeft />,\n in: <List />,\n not_in: <ListX />,\n exists: <Check />,\n not_exists: <Ban />,\n};\n\n/**\n * Select component for choosing a rule operator\n */\nexport const RuleOperatorSelect: React.FC<RuleOperatorSelectProps> = ({ value, onChange, operators, className }) => {\n const operatorList = operators ?? OPERATORS;\n\n return (\n <div className={cn('relative', className)}>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger className=\"bg-muted text-foreground\" size=\"sm\">\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {operatorList.map(operator => (\n <SelectItem key={operator} value={operator}>\n <span className=\"flex items-center gap-2\">\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n {OPERATOR_ICONS[operator]}\n </Icon>\n {OPERATOR_LABELS[operator]}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n};\n","import { Hash, ToggleLeft, Type } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { RuleValueInputProps } from './types';\nimport { Input } from '@/ds/components/Input/input';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select/select';\nimport { Icon } from '@/ds/icons';\nimport { cn } from '@/lib/utils';\n\n/**\n * Parses a string value to the appropriate type\n */\nconst parseValue = (stringValue: string): unknown => {\n const trimmed = stringValue.trim();\n\n // Empty string\n if (trimmed === '') return '';\n\n // Boolean\n if (trimmed === 'true') return true;\n if (trimmed === 'false') return false;\n\n // Null\n if (trimmed === 'null') return null;\n\n // Reject special number strings - keep as strings\n const lowerTrimmed = trimmed.toLowerCase();\n if (lowerTrimmed === 'infinity' || lowerTrimmed === '-infinity' || lowerTrimmed === 'nan') {\n return trimmed;\n }\n\n // Number\n const num = Number(trimmed);\n if (!Number.isNaN(num)) return num;\n\n // String (default)\n return stringValue;\n};\n\n/**\n * Parses a comma-separated string into an array of values\n */\nconst parseArrayValue = (stringValue: string): unknown[] => {\n if (stringValue.trim() === '') return [];\n\n return stringValue.split(',').map(item => parseValue(item.trim()));\n};\n\n/**\n * Converts a value to a display string\n */\nconst valueToString = (value: unknown): string => {\n if (value === null) return 'null';\n if (value === undefined) return '';\n if (Array.isArray(value)) return value.map(valueToString).join(', ');\n return String(value);\n};\n\n/**\n * Converts a boolean value to a string for the select\n */\nconst booleanToString = (value: unknown): string => {\n if (value === true) return 'true';\n if (value === false) return 'false';\n return '';\n};\n\ntype BaseInputProps = {\n value: unknown;\n onChange: (value: unknown) => void;\n placeholder?: string;\n className?: string;\n};\n\n/**\n * Boolean value input using a Select dropdown with icon inside\n */\nconst BooleanValueInput: React.FC<BaseInputProps> = ({ value, onChange, className }) => {\n const stringValue = booleanToString(value);\n\n const handleChange = React.useCallback(\n (newValue: string) => {\n onChange(newValue === 'true');\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon\n size=\"xs\"\n className=\"pointer-events-none absolute top-1/2 left-2 z-10 -translate-y-1/2 text-muted-foreground\"\n >\n <ToggleLeft />\n </Icon>\n <Select value={stringValue} onValueChange={handleChange}>\n <SelectTrigger className=\"bg-muted pl-7\" size=\"sm\">\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n </div>\n );\n};\n\n/**\n * Number value input with icon inside\n */\nconst NumberValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = value === undefined || value === '' ? '' : String(value);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (inputValue === '') {\n onChange('');\n } else {\n const num = Number(inputValue);\n onChange(Number.isNaN(num) ? inputValue : num);\n }\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon size=\"xs\" className=\"pointer-events-none absolute top-1/2 left-2 -translate-y-1/2 text-muted-foreground\">\n <Hash />\n </Icon>\n <Input\n type=\"number\"\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter number'}\n className=\"min-w-35 bg-muted pl-7\"\n size=\"sm\"\n />\n </div>\n );\n};\n\n/**\n * Text value input with icon inside\n */\nconst TextValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = valueToString(value);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(parseValue(e.target.value));\n },\n [onChange],\n );\n\n return (\n <div className={cn('relative', className)}>\n <Icon size=\"xs\" className=\"pointer-events-none absolute top-1/2 left-2 -translate-y-1/2 text-muted-foreground\">\n <Type />\n </Icon>\n <Input\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter value'}\n className=\"min-w-35 bg-muted pl-7\"\n size=\"sm\"\n />\n </div>\n );\n};\n\n/**\n * Array value input (for \"in\" and \"not_in\" operators)\n */\nconst ArrayValueInput: React.FC<BaseInputProps> = ({ value, onChange, placeholder, className }) => {\n const displayValue = React.useMemo(() => {\n if (Array.isArray(value)) {\n return value.map(valueToString).join(', ');\n }\n return valueToString(value);\n }, [value]);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(parseArrayValue(e.target.value));\n },\n [onChange],\n );\n\n return (\n <Input\n value={displayValue}\n onChange={handleChange}\n placeholder={placeholder || 'Enter values (comma-separated)'}\n className={cn('min-w-40 bg-muted', className)}\n size=\"sm\"\n />\n );\n};\n\n/**\n * Input component for entering rule values\n * Supports different modes based on the operator and field type:\n * - \"in\" and \"not_in\": Comma-separated values (parsed as array)\n * - Boolean fields: Select dropdown with true/false\n * - Number fields: Number input\n * - Other: Text input\n */\nexport const RuleValueInput: React.FC<RuleValueInputProps> = ({\n value,\n onChange,\n operator,\n fieldType,\n placeholder,\n className,\n}) => {\n const isArrayOperator = operator === 'in' || operator === 'not_in';\n\n // Array operators always use text input for comma-separated values\n if (isArrayOperator) {\n return <ArrayValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Boolean fields use Select dropdown\n if (fieldType === 'boolean') {\n return <BooleanValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Number fields use number input\n if (fieldType === 'number' || fieldType === 'integer') {\n return <NumberValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n }\n\n // Default to text input\n return <TextValueInput value={value} onChange={onChange} placeholder={placeholder} className={className} />;\n};\n","import { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { ConditionOperator } from '../types';\n\nimport { RuleFieldSelect } from './rule-field-select';\nimport { RuleOperatorSelect } from './rule-operator-select';\nimport { RuleValueInput } from './rule-value-input';\nimport { getFieldOptionAtPath } from './schema-utils';\nimport type { RuleRowProps } from './types';\n\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nconst PRIMITIVE_TYPES = new Set(['string', 'number', 'boolean', 'integer']);\n\n/**\n * A single rule row with field selector, operator selector, and value input\n */\nexport const RuleRow: React.FC<RuleRowProps> = ({ schema, rule, onChange, onRemove, className }) => {\n const fieldType = React.useMemo(() => {\n return getFieldOptionAtPath(schema, rule.field)?.type;\n }, [schema, rule.field]);\n\n const isPrimitive = fieldType !== undefined && PRIMITIVE_TYPES.has(fieldType);\n const isArray = fieldType === 'array';\n const isArrayOperator = rule.operator === 'in' || rule.operator === 'not_in';\n const isExistenceOperator = rule.operator === 'exists' || rule.operator === 'not_exists';\n\n // Show operator + value for primitive types, or for array types (restricted to in/not_in)\n const showComparator = isPrimitive || isArray;\n const showValueInput = !isExistenceOperator && (isPrimitive || (isArray && isArrayOperator));\n\n const handleFieldChange = React.useCallback(\n (field: string) => {\n onChange({ ...rule, field });\n },\n [rule, onChange],\n );\n\n const handleOperatorChange = React.useCallback(\n (operator: ConditionOperator) => {\n const isNewExistence = operator === 'exists' || operator === 'not_exists';\n\n // Existence operators don't need a value\n if (isNewExistence) {\n onChange({ ...rule, operator, value: undefined });\n return;\n }\n\n // Reset value when changing to/from array operators\n const isArrayOperator = operator === 'in' || operator === 'not_in';\n const wasArrayOperator = rule.operator === 'in' || rule.operator === 'not_in';\n\n let newValue = rule.value;\n if (isArrayOperator && !wasArrayOperator) {\n // Converting to array operator: wrap value in array\n newValue = rule.value !== undefined ? [rule.value] : [];\n } else if (!isArrayOperator && wasArrayOperator) {\n // Converting from array operator: take first value\n newValue = Array.isArray(rule.value) ? rule.value[0] : rule.value;\n }\n\n onChange({ ...rule, operator, value: newValue });\n },\n [rule, onChange],\n );\n\n const handleValueChange = React.useCallback(\n (value: unknown) => {\n onChange({ ...rule, value });\n },\n [rule, onChange],\n );\n\n return (\n <div className=\"flex justify-between gap-2\">\n <div className={cn('flex flex-wrap items-center gap-2', className)}>\n <RuleFieldSelect schema={schema} value={rule.field} onChange={handleFieldChange} />\n\n {showComparator && (\n <>\n <RuleOperatorSelect\n value={rule.operator}\n onChange={handleOperatorChange}\n operators={isArray ? (['in', 'not_in'] as const) : undefined}\n />\n\n {showValueInput && (\n <RuleValueInput\n value={rule.value}\n onChange={handleValueChange}\n operator={rule.operator}\n fieldType={fieldType}\n />\n )}\n </>\n )}\n </div>\n\n <Button type=\"button\" onClick={onRemove} tooltip=\"Remove rule\" size=\"icon-sm\" variant=\"ghost\">\n <X />\n </Button>\n </div>\n );\n};\n","import { Plus, X, Component } from 'lucide-react';\nimport * as React from 'react';\n\nimport type { Rule, RuleGroup, RuleGroupDepth1 } from '../types';\nimport { isRule, createDefaultRule, createDefaultRuleGroup } from '../utils';\n\nimport { RuleRow } from './rule-row';\nimport type { RuleBuilderProps, RuleGroupViewProps } from './types';\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_MAX_DEPTH = 3;\n\n/**\n * Internal recursive component that renders one level of a rule group.\n */\nconst RuleGroupView: React.FC<RuleGroupViewProps> = ({ schema, group, onChange, onRemove, depth, maxDepth }) => {\n const isRoot = depth === 0;\n\n const handleToggleOperator = () => {\n onChange({ ...group, operator: group.operator === 'AND' ? 'OR' : 'AND' });\n };\n\n const handleConditionChange = (index: number, condition: Rule | RuleGroup) => {\n onChange({\n ...group,\n // oxlint-disable-next-line typescript/no-unnecessary-type-assertion -- Built core declarations distinguish the recursive group's depth from its children.\n conditions: group.conditions.map((c, i) => (i === index ? (condition as Rule | RuleGroupDepth1) : c)),\n });\n };\n\n const handleRemoveCondition = (index: number) => {\n const newConditions = group.conditions.filter((_, i) => i !== index);\n if (newConditions.length === 0 && onRemove) {\n onRemove();\n } else {\n onChange({ ...group, conditions: newConditions });\n }\n };\n\n const handleAddRule = () => {\n onChange({ ...group, conditions: [...group.conditions, createDefaultRule()] });\n };\n\n const handleAddGroup = () => {\n onChange({\n ...group,\n conditions: [\n ...group.conditions,\n createDefaultRuleGroup(group.operator === 'AND' ? 'OR' : 'AND') as RuleGroupDepth1,\n ],\n });\n };\n\n return (\n <div className={cn(isRoot ? 'bg-background' : 'bg-card pl-6')}>\n {/* Non-root group header */}\n {!isRoot && (\n <div className=\"flex items-center justify-between border-b border-dashed border-border py-1.5 pr-4 pl-3\">\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\">\n Group\n </Txt>\n {onRemove && (\n <Button type=\"button\" onClick={onRemove} tooltip=\"Remove group\" size=\"icon-sm\" variant=\"ghost\">\n <X />\n </Button>\n )}\n </div>\n )}\n\n {group.conditions.map((condition, index) => (\n <div key={index} className=\"border-b border-dashed border-border last:border-b-0\">\n <div className={cn('relative', isRule(condition) && 'border-l-4 border-border p-4')}>\n {index > 0 && (\n <button\n type=\"button\"\n onClick={handleToggleOperator}\n className={cn(\n 'absolute top-0 left-1/2 z-10 -translate-1/2 cursor-pointer rounded-full px-3 py-0.5',\n group.operator === 'OR'\n ? 'bg-badge-amber-subtle text-badge-amber-foreground hover:bg-badge-amber-strong'\n : 'bg-badge-blue-subtle text-badge-blue-foreground hover:bg-badge-blue-strong',\n )}\n >\n <Txt as=\"span\" variant=\"meta\" className=\"block\">\n {group.operator.toLowerCase()}\n </Txt>\n </button>\n )}\n\n {isRule(condition) ? (\n <RuleRow\n schema={schema}\n rule={condition}\n onChange={updatedRule => handleConditionChange(index, updatedRule)}\n onRemove={() => handleRemoveCondition(index)}\n />\n ) : (\n <RuleGroupView\n schema={schema}\n group={condition}\n onChange={updatedGroup => handleConditionChange(index, updatedGroup)}\n onRemove={() => handleRemoveCondition(index)}\n depth={depth + 1}\n maxDepth={maxDepth}\n />\n )}\n </div>\n </div>\n ))}\n\n <div className=\"flex gap-1 p-2\">\n <Button type=\"button\" onClick={handleAddRule} variant=\"ghost\" size=\"sm\" icon={<Plus />}>\n Add rule\n </Button>\n {depth < maxDepth - 1 && (\n <Button type=\"button\" onClick={handleAddGroup} variant=\"ghost\" size=\"sm\" icon={<Component />}>\n Add group\n </Button>\n )}\n </div>\n </div>\n );\n};\n\n/**\n * Rule builder component for creating and managing a recursive set of rules\n * based on a JSON Schema defining available fields.\n *\n * Supports nested rule groups with AND/OR operators at each level.\n */\nexport const RuleBuilder: React.FC<RuleBuilderProps> = ({\n schema,\n ruleGroup,\n onChange,\n maxDepth = DEFAULT_MAX_DEPTH,\n className,\n}) => {\n const handleGroupChange = React.useCallback(\n (group: RuleGroup) => {\n onChange(group);\n },\n [onChange],\n );\n\n const handleAddFirstRule = React.useCallback(() => {\n onChange({ operator: 'AND', conditions: [createDefaultRule()] });\n }, [onChange]);\n\n if (!ruleGroup) {\n return (\n <button\n type=\"button\"\n onClick={handleAddFirstRule}\n className={cn(\n quietTextHover,\n controlStateColorTransition,\n 'flex w-full items-center justify-center gap-2 rounded-md border border-dashed border-border p-2',\n )}\n >\n <Icon>\n <Plus />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" className=\"block\">\n Add conditional rule\n </Txt>\n </button>\n );\n }\n\n return (\n <div className={className}>\n <RuleGroupView schema={schema} group={ruleGroup} onChange={handleGroupChange} depth={0} maxDepth={maxDepth} />\n </div>\n );\n};\n"],"names":["isArrayOperator"],"mappings":"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"}
@@ -7,9 +7,9 @@ const lucideReact = require('lucide-react');
7
7
  const React = require('react');
8
8
  const v4 = require('zod/v4');
9
9
  const primitives_passwordManagerAutofill = require('../primitives/password-manager-autofill.cjs.js');
10
- const filterBarChip = require('../filter-bar-chip-BJJ6ytJ4.cjs');
10
+ const filterBarChip = require('../filter-bar-chip-DgvuQv6c.cjs');
11
11
  const Txt = require('../Txt-CIS2G5Jx.cjs');
12
- const Button = require('../Button-DH1aTzbs.cjs');
12
+ const Button = require('../Button-C4I05uT4.cjs');
13
13
  const contextMenu = require('../context-menu-jNuzE86D.cjs');
14
14
  const dropdownMenu = require('../dropdown-menu-CsynT1aD.cjs');
15
15
  const hoverCard = require('../hover-card-DVBz-iu-.cjs');
@@ -100,10 +100,7 @@ function SavedViewSummary({ filters, fields, operators, settings }) {
100
100
  }
101
101
 
102
102
  const restingTabClass = Button.buttonVariants({ variant: "default", size: "sm" });
103
- const selectedTabClass = utils_cn.cn(
104
- Button.buttonVariants({ variant: "ghost", size: "sm" }),
105
- "bg-fill-hover text-foreground not-disabled:hover:bg-fill-hover"
106
- );
103
+ const selectedTabClass = Button.buttonVariants({ variant: "subtle", size: "sm" });
107
104
  const editingTabClass = utils_cn.cn(
108
105
  primitives_controlSize.controlHeight.sm,
109
106
  "inline-flex items-center gap-1.5 rounded-full border border-dashed border-border-strong bg-fill-hover px-[.9em] text-label text-foreground",
@@ -286,8 +283,7 @@ function SavedViewTab({
286
283
  children: [
287
284
  /* @__PURE__ */ jsxRuntime.jsx(SavedViewTabIcon, {}),
288
285
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-48 truncate", children: view.name }),
289
- unsaved && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-1.5 shrink-0 rounded-full bg-warning-indicator", "aria-hidden": true }),
290
- selected && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { "aria-hidden": true, className: "size-3" })
286
+ unsaved && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-1.5 shrink-0 rounded-full bg-warning-indicator", "aria-hidden": true })
291
287
  ]
292
288
  }
293
289
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"SavedViews.cjs.js","sources":["../../src/ds/components/SavedViews/saved-view-schema.ts","../../src/ds/components/SavedViews/saved-view-name-input.tsx","../../src/ds/components/SavedViews/saved-view-summary.tsx","../../src/ds/components/SavedViews/saved-view-tabs.tsx","../../src/ds/components/SavedViews/saved-view-editor.tsx","../../src/ds/components/SavedViews/saved-views-storage.ts","../../src/ds/components/SavedViews/use-saved-views.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nexport const MAX_SAVED_VIEW_NAME_CHARS = 80;\n\nconst SAVED_VIEWS_STORAGE_VERSION = 1;\n\nconst filterBarScalarSchema = z.union([z.string(), z.number(), z.boolean()]);\n\nconst savedViewFilterSchema = z.object({\n id: z.string().min(1),\n fieldId: z.string().min(1),\n operatorId: z.string().min(1),\n value: z.union([filterBarScalarSchema, z.array(filterBarScalarSchema)]),\n}) satisfies z.ZodType<FilterBarItem>;\n\nexport const savedViewNameSchema = z.string().trim().min(1).max(MAX_SAVED_VIEW_NAME_CHARS);\n\nconst storedSavedViewSchema = z.object({\n id: z.string().min(1),\n name: savedViewNameSchema,\n filters: z.array(savedViewFilterSchema),\n settings: z.unknown(),\n});\n\n// Views stay `unknown` so one malformed view is dropped on its own, not the whole list.\nconst savedViewsDocumentSchema = z.object({\n version: z.literal(SAVED_VIEWS_STORAGE_VERSION),\n views: z.array(z.unknown()),\n});\n\n// Only `safeParse` is used, so the consumer's Zod version never has to match this package's.\nexport type SavedViewSettingsSchema<TSettings> = {\n safeParse: (value: unknown) => { success: true; data: TSettings } | { success: false };\n};\n\nexport type SavedView<TSettings> = {\n id: string;\n name: string;\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport function parseSavedViews<TSettings>(\n raw: string | null,\n settingsSchema: SavedViewSettingsSchema<TSettings>,\n): SavedView<TSettings>[] {\n if (!raw) return [];\n let json: unknown;\n try {\n json = JSON.parse(raw);\n } catch {\n return [];\n }\n const document = savedViewsDocumentSchema.safeParse(json);\n if (!document.success) return [];\n return document.data.views.flatMap(candidate => {\n const view = storedSavedViewSchema.safeParse(candidate);\n if (!view.success) return [];\n const settings = settingsSchema.safeParse(view.data.settings);\n if (!settings.success) return [];\n return [{ ...view.data, settings: settings.data }];\n });\n}\n\nexport function serializeSavedViews<TSettings>(views: readonly SavedView<TSettings>[]): string {\n return JSON.stringify({ version: SAVED_VIEWS_STORAGE_VERSION, views });\n}\n","import { MAX_SAVED_VIEW_NAME_CHARS } from './saved-view-schema';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\n\n// Uncontrolled so blur is the one exit: Enter blurs, Escape restores the name first, blur commits.\nexport function SavedViewNameInput({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <input\n autoFocus\n aria-label=\"View name\"\n defaultValue={name}\n maxLength={MAX_SAVED_VIEW_NAME_CHARS}\n {...passwordManagerOptOutProps}\n onFocus={event => event.currentTarget.select()}\n onBlur={event => onCommit(event.currentTarget.value)}\n onKeyDown={event => {\n if (event.key === 'Escape') event.currentTarget.value = name;\n if (event.key === 'Enter' || event.key === 'Escape') {\n event.preventDefault();\n event.currentTarget.blur();\n }\n }}\n className=\"field-sizing-content min-w-12 bg-transparent text-foreground outline-hidden\"\n />\n );\n}\n","import type { ReactNode } from 'react';\nimport { FilterBarFieldLabel, formatValue } from '@/ds/components/FilterBar/filter-bar-chip';\nimport type { FilterBarField, FilterBarItem, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { Txt } from '@/ds/components/Txt';\n\ntype SavedViewSummaryProps = {\n filters: readonly FilterBarItem[];\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings?: ReactNode;\n};\n\nexport function SavedViewSummary({ filters, fields, operators, settings }: SavedViewSummaryProps) {\n return (\n <div className=\"flex min-w-48 flex-col gap-2\">\n {filters.length === 0 ? (\n <Txt variant=\"caption\" tone=\"muted\">\n No filters\n </Txt>\n ) : (\n <ul aria-label=\"Filters\" className=\"flex flex-col gap-1.5\">\n {filters.map(filter => {\n const field = fields.find(candidate => candidate.id === filter.fieldId);\n const operatorStated = (field?.operators?.length ?? operators.length) > 1;\n const operator = operators.find(candidate => candidate.id === filter.operatorId);\n return (\n <li key={filter.id} className=\"min-w-0\">\n <Txt as=\"span\" variant=\"body-sm\" className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"flex min-w-0 shrink-0 items-center gap-1 text-muted-foreground\">\n <FilterBarFieldLabel field={field} label={field?.label ?? filter.fieldId} />\n </span>\n {operatorStated && <span className=\"shrink-0 text-muted-foreground\">{operator?.label}</span>}\n <span className=\"min-w-0 truncate\">{formatValue(filter.value, field)}</span>\n </Txt>\n </li>\n );\n })}\n </ul>\n )}\n {settings}\n </div>\n );\n}\n","import {\n ChevronDownIcon,\n CopyIcon,\n LayersIcon,\n LayersPlusIcon,\n PencilIcon,\n TextCursorInputIcon,\n Trash2Icon,\n} from 'lucide-react';\nimport { Fragment, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { SavedViewNameInput } from './saved-view-name-input';\nimport type { SavedView } from './saved-view-schema';\nimport { SavedViewSummary } from './saved-view-summary';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button, buttonVariants } from '@/ds/components/Button/Button';\nimport { ContextMenu } from '@/ds/components/ContextMenu';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport type { FilterBarField, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nconst restingTabClass = buttonVariants({ variant: 'default', size: 'sm' });\nconst selectedTabClass = cn(\n buttonVariants({ variant: 'ghost', size: 'sm' }),\n 'bg-fill-hover text-foreground not-disabled:hover:bg-fill-hover',\n);\nconst editingTabClass = cn(\n controlHeight.sm,\n 'inline-flex items-center gap-1.5 rounded-full border border-dashed border-border-strong bg-fill-hover px-[.9em] text-label text-foreground',\n '[&_svg]:size-3.5 [&_svg]:shrink-0',\n);\n\nexport type SavedViewTabsProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n defaultLabel: string;\n newViewSettings: NoInfer<TSettings>;\n describeSettings?: (settings: TSettings) => ReactNode;\n 'aria-label'?: string;\n className?: string;\n};\n\nexport function SavedViewTabs<TSettings>({\n views,\n fields,\n operators,\n defaultLabel,\n newViewSettings,\n describeSettings,\n 'aria-label': ariaLabel = 'Views',\n className,\n}: SavedViewTabsProps<TSettings>) {\n const [renamingViewId, setRenamingViewId] = useState<string>();\n const { draft } = views;\n const creating = draft !== undefined && draft.viewId === undefined;\n const defaultSelected = views.activeView === undefined && !creating;\n\n return (\n <div role=\"group\" aria-label={ariaLabel} className={cn('flex flex-wrap items-center gap-1.5', className)}>\n <button\n type=\"button\"\n aria-pressed={defaultSelected}\n className={defaultSelected ? selectedTabClass : restingTabClass}\n onClick={() => views.select(undefined)}\n >\n {defaultLabel}\n </button>\n {views.views.map(view => {\n if (renamingViewId === view.id) {\n return (\n <RenamingViewTab\n key={view.id}\n name={view.name}\n onCommit={name => {\n setRenamingViewId(undefined);\n views.rename(view.id, name);\n }}\n />\n );\n }\n return (\n <SavedViewTab\n key={view.id}\n view={view}\n selected={views.activeView?.id === view.id && !creating}\n unsaved={draft?.viewId === view.id && views.unsaved}\n fields={fields}\n operators={operators}\n settings={describeSettings?.(view.settings)}\n onSelect={() => views.select(view.id)}\n onEdit={() => views.edit(view.id)}\n onRename={() => setRenamingViewId(view.id)}\n onDuplicate={() => views.duplicate(view.id)}\n onDelete={() => views.remove(view.id)}\n />\n );\n })}\n {views.storageError && (\n <Txt role=\"alert\" variant=\"caption\" className=\"w-full text-destructive-foreground\">\n {views.storageError}\n </Txt>\n )}\n {creating ? (\n <EditingViewTab name={draft.name} unsaved onRename={name => views.change({ name })} />\n ) : (\n <Button\n type=\"button\"\n size=\"icon-sm\"\n tooltip=\"New view\"\n disabled={draft !== undefined}\n onClick={() => views.create(newViewSettings)}\n >\n <LayersPlusIcon />\n </Button>\n )}\n </div>\n );\n}\n\nfunction EditingViewTab({\n name,\n unsaved,\n onRename,\n}: {\n name: string;\n unsaved: boolean;\n onRename: (name: string) => void;\n}) {\n const [renaming, setRenaming] = useState(false);\n return (\n <span aria-current=\"true\" className={editingTabClass}>\n <LayersIcon aria-hidden />\n {renaming ? (\n <SavedViewNameInput\n name={name}\n onCommit={next => {\n setRenaming(false);\n if (next.trim()) onRename(next);\n }}\n />\n ) : (\n <>\n <span className=\"max-w-48 truncate\">{name}</span>\n {unsaved && (\n <>\n <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />\n <VisuallyHidden>Unsaved changes</VisuallyHidden>\n </>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Rename view\"\n className=\"-mr-2 size-6\"\n onClick={() => setRenaming(true)}\n >\n <PencilIcon />\n </Button>\n </>\n )}\n </span>\n );\n}\n\nfunction RenamingViewTab({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <span className={cn(restingTabClass, 'gap-1.5')}>\n <SavedViewTabIcon />\n <SavedViewNameInput name={name} onCommit={onCommit} />\n </span>\n );\n}\n\nfunction SavedViewTabIcon() {\n return (\n <Icon data-slot=\"button-icon\" size=\"sm\">\n <LayersIcon aria-hidden />\n </Icon>\n );\n}\n\nfunction SavedViewTab<TSettings>({\n view,\n selected,\n unsaved,\n fields,\n operators,\n settings,\n onSelect,\n onEdit,\n onRename,\n onDuplicate,\n onDelete,\n}: {\n view: SavedView<TSettings>;\n selected: boolean;\n unsaved: boolean;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings: ReactNode;\n onSelect: () => void;\n onEdit: () => void;\n onRename: () => void;\n onDuplicate: () => void;\n onDelete: () => void;\n}) {\n const actions: ViewAction[] = [\n { label: 'Edit view', icon: <PencilIcon aria-hidden />, onClick: onEdit },\n { label: 'Rename', icon: <TextCursorInputIcon aria-hidden />, onClick: onRename },\n { label: 'Duplicate', icon: <CopyIcon aria-hidden />, onClick: onDuplicate },\n { label: 'Delete view', icon: <Trash2Icon aria-hidden />, onClick: onDelete, destructive: true },\n ];\n const [menuOpen, setMenuOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const changeMenuOpen = (open: boolean) => {\n setMenuOpen(selected && open);\n if (open) setPreviewOpen(false);\n };\n\n return (\n <ContextMenu>\n <DropdownMenu open={selected && menuOpen} onOpenChange={changeMenuOpen}>\n <HoverCard open={!selected && previewOpen} onOpenChange={setPreviewOpen}>\n <ContextMenu.Trigger\n render={\n <HoverCardTrigger\n delay={400}\n render={\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n aria-pressed={selected}\n aria-haspopup={selected ? 'menu' : undefined}\n onClick={() => {\n if (selected) return;\n setPreviewOpen(false);\n onSelect();\n }}\n className={cn(selected ? selectedTabClass : restingTabClass, 'gap-1.5')}\n />\n }\n />\n }\n />\n }\n >\n <SavedViewTabIcon />\n <span className=\"max-w-48 truncate\">{view.name}</span>\n {unsaved && <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />}\n {selected && <ChevronDownIcon aria-hidden className=\"size-3\" />}\n </ContextMenu.Trigger>\n <HoverCardContent side=\"bottom\" align=\"start\" showArrow={false}>\n <SavedViewSummary filters={view.filters} fields={fields} operators={operators} settings={settings} />\n </HoverCardContent>\n </HoverCard>\n <DropdownMenu.Content align=\"start\">\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <DropdownMenu.Separator />}\n <DropdownMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </DropdownMenu.Item>\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n <ContextMenu.Content>\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <ContextMenu.Separator />}\n <ContextMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </ContextMenu.Item>\n </Fragment>\n ))}\n </ContextMenu.Content>\n </ContextMenu>\n );\n}\n\ntype ViewAction = { label: string; icon: ReactNode; onClick: () => void; destructive?: boolean };\n","import type { ReactNode } from 'react';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport type SavedViewEditorProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n children: ReactNode;\n className?: string;\n};\n\nexport function SavedViewEditor<TSettings>({ views, children, className }: SavedViewEditorProps<TSettings>) {\n const { draft } = views;\n const creating = draft?.viewId === undefined;\n return (\n <div\n role={draft ? 'group' : undefined}\n aria-label={draft ? `Edit view ${draft.name}` : undefined}\n className={cn('flex min-w-0 flex-wrap items-center gap-2', className)}\n >\n {children}\n {draft && (\n <>\n {!creating && views.unsaved && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n Unsaved changes\n </Txt>\n )}\n <div className=\"ml-auto flex shrink-0 items-center gap-3\">\n {creating && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"max-sm:hidden\">\n Saved in this browser\n </Txt>\n )}\n <div className=\"flex items-center gap-1\">\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={views.discard}>\n {creating ? 'Cancel' : 'Reset'}\n </Button>\n <Button type=\"button\" variant=\"primary\" size=\"sm\" disabled={!views.unsaved} onClick={views.save}>\n {creating ? 'Save view' : 'Save changes'}\n </Button>\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n","type SavedViewsSubscribe = (listener: () => void) => () => void;\n\nconst listenersByKey = new Map<string, Set<() => void>>();\nconst subscribeByKey = new Map<string, SavedViewsSubscribe>();\n\nexport function readSavedViewsRaw(key: string): string | null {\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nexport function writeSavedViewsRaw(key: string, raw: string): boolean {\n try {\n window.localStorage.setItem(key, raw);\n } catch {\n return false;\n }\n listenersByKey.get(key)?.forEach(listener => listener());\n return true;\n}\n\nexport function savedViewsSubscriber(key: string): SavedViewsSubscribe {\n const cached = subscribeByKey.get(key);\n if (cached) return cached;\n const subscribe: SavedViewsSubscribe = listener => subscribeSavedViews(key, listener);\n subscribeByKey.set(key, subscribe);\n return subscribe;\n}\n\nfunction subscribeSavedViews(key: string, listener: () => void): () => void {\n const listeners = listenersByKey.get(key) ?? new Set<() => void>();\n listenersByKey.set(key, listeners);\n listeners.add(listener);\n const onStorage = (event: StorageEvent) => {\n if (event.key === key || event.key === null) listener();\n };\n window.addEventListener('storage', onStorage);\n return () => {\n listeners.delete(listener);\n window.removeEventListener('storage', onStorage);\n };\n}\n","import { useState, useSyncExternalStore } from 'react';\nimport { parseSavedViews, savedViewNameSchema, serializeSavedViews } from './saved-view-schema';\nimport type { SavedView, SavedViewSettingsSchema } from './saved-view-schema';\nimport { readSavedViewsRaw, savedViewsSubscriber, writeSavedViewsRaw } from './saved-views-storage';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nconst NEW_SAVED_VIEW_NAME = 'Untitled view';\n\nexport type SavedViewContent<TSettings> = {\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport type SavedViewDraft<TSettings> = SavedViewContent<TSettings> & {\n viewId?: string;\n name: string;\n};\n\nexport type SavedViewDraftChange<TSettings> = Partial<Omit<SavedViewDraft<TSettings>, 'viewId'>>;\n\nexport type UseSavedViewsOptions<TSettings> = {\n storageKey: string;\n settingsSchema: SavedViewSettingsSchema<TSettings>;\n activeViewId: string | undefined;\n onActiveViewChange: (viewId: string | undefined) => void;\n};\n\nexport type SavedViewsController<TSettings> = {\n views: SavedView<TSettings>[];\n activeView: SavedView<TSettings> | undefined;\n draft: SavedViewDraft<TSettings> | undefined;\n unsaved: boolean;\n storageError: string | undefined;\n applied: SavedViewContent<TSettings> | undefined;\n select: (viewId: string | undefined) => void;\n create: (settings: TSettings, filters?: FilterBarItem[]) => void;\n edit: (viewId: string) => void;\n change: (patch: SavedViewDraftChange<TSettings>) => void;\n save: () => void;\n discard: () => void;\n rename: (viewId: string, name: string) => void;\n duplicate: (viewId: string) => void;\n remove: (viewId: string) => void;\n};\n\nfunction createSavedViewId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') return crypto.randomUUID();\n return `view-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n}\n\nfunction validViewName(name: string): string | undefined {\n const parsed = savedViewNameSchema.safeParse(name);\n return parsed.success ? parsed.data : undefined;\n}\n\nfunction sameViewContent<TSettings>(draft: SavedViewDraft<TSettings>, view: SavedView<TSettings>): boolean {\n return (\n JSON.stringify([draft.name, draft.filters, draft.settings]) ===\n JSON.stringify([view.name, view.filters, view.settings])\n );\n}\n\nexport function useSavedViews<TSettings>({\n storageKey,\n settingsSchema,\n activeViewId,\n onActiveViewChange,\n}: UseSavedViewsOptions<TSettings>): SavedViewsController<TSettings> {\n const raw = useSyncExternalStore(\n savedViewsSubscriber(storageKey),\n () => readSavedViewsRaw(storageKey),\n () => null,\n );\n const views = parseSavedViews(raw, settingsSchema);\n const [failedStorageKey, setFailedStorageKey] = useState<string>();\n const [pendingDraft, setDraft] = useState<SavedViewDraft<TSettings>>();\n const [draftScope, setDraftScope] = useState({ storageKey, activeViewId });\n const draftView = views.find(view => view.id === pendingDraft?.viewId);\n const draftViewDeleted = pendingDraft?.viewId !== undefined && !draftView;\n const storageKeyChanged = draftScope.storageKey !== storageKey;\n if (storageKeyChanged || draftScope.activeViewId !== activeViewId || draftViewDeleted) {\n setDraftScope({ storageKey, activeViewId });\n if (storageKeyChanged || draftViewDeleted || pendingDraft?.viewId !== activeViewId) setDraft(undefined);\n }\n const draft = pendingDraft?.viewId === undefined || pendingDraft.viewId === activeViewId ? pendingDraft : undefined;\n const unsaved = draft !== undefined && (!draftView || !sameViewContent(draft, draftView));\n\n const activeView = views.find(view => view.id === activeViewId);\n const write = (next: SavedView<TSettings>[]) => {\n const saved = writeSavedViewsRaw(storageKey, serializeSavedViews(next));\n setFailedStorageKey(saved ? undefined : storageKey);\n return saved;\n };\n\n return {\n views,\n activeView,\n draft,\n unsaved,\n storageError:\n failedStorageKey === storageKey\n ? 'Could not save changes. Check your browser storage settings and try again.'\n : undefined,\n applied: draft ?? activeView,\n select: viewId => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n onActiveViewChange(viewId);\n },\n create: (settings, filters = []) => setDraft({ name: NEW_SAVED_VIEW_NAME, filters, settings }),\n edit: viewId => {\n if (draft?.viewId === viewId) return;\n const view = views.find(candidate => candidate.id === viewId);\n if (!view) return;\n const { id, ...content } = view;\n setDraft({ ...content, viewId: id });\n if (viewId !== activeViewId) onActiveViewChange(viewId);\n },\n change: patch => {\n if (draft) {\n setDraft({ ...draft, ...patch });\n return;\n }\n if (!activeView) return;\n const { id, ...content } = activeView;\n setDraft({ ...content, ...patch, viewId: id });\n },\n save: () => {\n if (!draft) return;\n const { viewId, ...content } = draft;\n const saved: SavedView<TSettings> = {\n ...content,\n id: viewId ?? createSavedViewId(),\n name: validViewName(content.name) ?? views.find(view => view.id === viewId)?.name ?? NEW_SAVED_VIEW_NAME,\n };\n if (!write(viewId ? views.map(view => (view.id === viewId ? saved : view)) : [...views, saved])) return;\n setDraft(undefined);\n if (saved.id !== activeViewId) onActiveViewChange(saved.id);\n },\n discard: () => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n },\n rename: (viewId, name) => {\n const nextName = validViewName(name);\n if (!nextName) return;\n if (!write(views.map(view => (view.id === viewId ? { ...view, name: nextName } : view)))) return;\n if (draft?.viewId === viewId) setDraft({ ...draft, name: nextName });\n },\n duplicate: viewId => {\n const index = views.findIndex(view => view.id === viewId);\n const original = views[index];\n if (!original) return;\n const copy: SavedView<TSettings> = {\n ...original,\n id: createSavedViewId(),\n name: validViewName(`${original.name} copy`) ?? original.name,\n };\n if (!write(views.toSpliced(index + 1, 0, copy))) return;\n setDraft(undefined);\n onActiveViewChange(copy.id);\n },\n remove: viewId => {\n if (!write(views.filter(view => view.id !== viewId))) return;\n if (draft?.viewId === viewId) setDraft(undefined);\n if (activeViewId === viewId) onActiveViewChange(undefined);\n },\n };\n}\n"],"names":["z","jsx","passwordManagerOptOutProps","jsxs","Txt","FilterBarFieldLabel","buttonVariants","cn","controlHeight","useState","Button","LayersPlusIcon","LayersIcon","Fragment","VisuallyHidden","PencilIcon","Icon","TextCursorInputIcon","CopyIcon","Trash2Icon","ContextMenu","DropdownMenu","HoverCard","HoverCardTrigger","ChevronDownIcon","HoverCardContent","useSyncExternalStore"],"mappings":"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"}
1
+ {"version":3,"file":"SavedViews.cjs.js","sources":["../../src/ds/components/SavedViews/saved-view-schema.ts","../../src/ds/components/SavedViews/saved-view-name-input.tsx","../../src/ds/components/SavedViews/saved-view-summary.tsx","../../src/ds/components/SavedViews/saved-view-tabs.tsx","../../src/ds/components/SavedViews/saved-view-editor.tsx","../../src/ds/components/SavedViews/saved-views-storage.ts","../../src/ds/components/SavedViews/use-saved-views.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nexport const MAX_SAVED_VIEW_NAME_CHARS = 80;\n\nconst SAVED_VIEWS_STORAGE_VERSION = 1;\n\nconst filterBarScalarSchema = z.union([z.string(), z.number(), z.boolean()]);\n\nconst savedViewFilterSchema = z.object({\n id: z.string().min(1),\n fieldId: z.string().min(1),\n operatorId: z.string().min(1),\n value: z.union([filterBarScalarSchema, z.array(filterBarScalarSchema)]),\n}) satisfies z.ZodType<FilterBarItem>;\n\nexport const savedViewNameSchema = z.string().trim().min(1).max(MAX_SAVED_VIEW_NAME_CHARS);\n\nconst storedSavedViewSchema = z.object({\n id: z.string().min(1),\n name: savedViewNameSchema,\n filters: z.array(savedViewFilterSchema),\n settings: z.unknown(),\n});\n\n// Views stay `unknown` so one malformed view is dropped on its own, not the whole list.\nconst savedViewsDocumentSchema = z.object({\n version: z.literal(SAVED_VIEWS_STORAGE_VERSION),\n views: z.array(z.unknown()),\n});\n\n// Only `safeParse` is used, so the consumer's Zod version never has to match this package's.\nexport type SavedViewSettingsSchema<TSettings> = {\n safeParse: (value: unknown) => { success: true; data: TSettings } | { success: false };\n};\n\nexport type SavedView<TSettings> = {\n id: string;\n name: string;\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport function parseSavedViews<TSettings>(\n raw: string | null,\n settingsSchema: SavedViewSettingsSchema<TSettings>,\n): SavedView<TSettings>[] {\n if (!raw) return [];\n let json: unknown;\n try {\n json = JSON.parse(raw);\n } catch {\n return [];\n }\n const document = savedViewsDocumentSchema.safeParse(json);\n if (!document.success) return [];\n return document.data.views.flatMap(candidate => {\n const view = storedSavedViewSchema.safeParse(candidate);\n if (!view.success) return [];\n const settings = settingsSchema.safeParse(view.data.settings);\n if (!settings.success) return [];\n return [{ ...view.data, settings: settings.data }];\n });\n}\n\nexport function serializeSavedViews<TSettings>(views: readonly SavedView<TSettings>[]): string {\n return JSON.stringify({ version: SAVED_VIEWS_STORAGE_VERSION, views });\n}\n","import { MAX_SAVED_VIEW_NAME_CHARS } from './saved-view-schema';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\n\n// Uncontrolled so blur is the one exit: Enter blurs, Escape restores the name first, blur commits.\nexport function SavedViewNameInput({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <input\n autoFocus\n aria-label=\"View name\"\n defaultValue={name}\n maxLength={MAX_SAVED_VIEW_NAME_CHARS}\n {...passwordManagerOptOutProps}\n onFocus={event => event.currentTarget.select()}\n onBlur={event => onCommit(event.currentTarget.value)}\n onKeyDown={event => {\n if (event.key === 'Escape') event.currentTarget.value = name;\n if (event.key === 'Enter' || event.key === 'Escape') {\n event.preventDefault();\n event.currentTarget.blur();\n }\n }}\n className=\"field-sizing-content min-w-12 bg-transparent text-foreground outline-hidden\"\n />\n );\n}\n","import type { ReactNode } from 'react';\nimport { FilterBarFieldLabel, formatValue } from '@/ds/components/FilterBar/filter-bar-chip';\nimport type { FilterBarField, FilterBarItem, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { Txt } from '@/ds/components/Txt';\n\ntype SavedViewSummaryProps = {\n filters: readonly FilterBarItem[];\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings?: ReactNode;\n};\n\nexport function SavedViewSummary({ filters, fields, operators, settings }: SavedViewSummaryProps) {\n return (\n <div className=\"flex min-w-48 flex-col gap-2\">\n {filters.length === 0 ? (\n <Txt variant=\"caption\" tone=\"muted\">\n No filters\n </Txt>\n ) : (\n <ul aria-label=\"Filters\" className=\"flex flex-col gap-1.5\">\n {filters.map(filter => {\n const field = fields.find(candidate => candidate.id === filter.fieldId);\n const operatorStated = (field?.operators?.length ?? operators.length) > 1;\n const operator = operators.find(candidate => candidate.id === filter.operatorId);\n return (\n <li key={filter.id} className=\"min-w-0\">\n <Txt as=\"span\" variant=\"body-sm\" className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"flex min-w-0 shrink-0 items-center gap-1 text-muted-foreground\">\n <FilterBarFieldLabel field={field} label={field?.label ?? filter.fieldId} />\n </span>\n {operatorStated && <span className=\"shrink-0 text-muted-foreground\">{operator?.label}</span>}\n <span className=\"min-w-0 truncate\">{formatValue(filter.value, field)}</span>\n </Txt>\n </li>\n );\n })}\n </ul>\n )}\n {settings}\n </div>\n );\n}\n","import { CopyIcon, LayersIcon, LayersPlusIcon, PencilIcon, TextCursorInputIcon, Trash2Icon } from 'lucide-react';\nimport { Fragment, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { SavedViewNameInput } from './saved-view-name-input';\nimport type { SavedView } from './saved-view-schema';\nimport { SavedViewSummary } from './saved-view-summary';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button, buttonVariants } from '@/ds/components/Button/Button';\nimport { ContextMenu } from '@/ds/components/ContextMenu';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport type { FilterBarField, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nconst restingTabClass = buttonVariants({ variant: 'default', size: 'sm' });\nconst selectedTabClass = buttonVariants({ variant: 'subtle', size: 'sm' });\nconst editingTabClass = cn(\n controlHeight.sm,\n 'inline-flex items-center gap-1.5 rounded-full border border-dashed border-border-strong bg-fill-hover px-[.9em] text-label text-foreground',\n '[&_svg]:size-3.5 [&_svg]:shrink-0',\n);\n\nexport type SavedViewTabsProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n defaultLabel: string;\n newViewSettings: NoInfer<TSettings>;\n describeSettings?: (settings: TSettings) => ReactNode;\n 'aria-label'?: string;\n className?: string;\n};\n\nexport function SavedViewTabs<TSettings>({\n views,\n fields,\n operators,\n defaultLabel,\n newViewSettings,\n describeSettings,\n 'aria-label': ariaLabel = 'Views',\n className,\n}: SavedViewTabsProps<TSettings>) {\n const [renamingViewId, setRenamingViewId] = useState<string>();\n const { draft } = views;\n const creating = draft !== undefined && draft.viewId === undefined;\n const defaultSelected = views.activeView === undefined && !creating;\n\n return (\n <div role=\"group\" aria-label={ariaLabel} className={cn('flex flex-wrap items-center gap-1.5', className)}>\n <button\n type=\"button\"\n aria-pressed={defaultSelected}\n className={defaultSelected ? selectedTabClass : restingTabClass}\n onClick={() => views.select(undefined)}\n >\n {defaultLabel}\n </button>\n {views.views.map(view => {\n if (renamingViewId === view.id) {\n return (\n <RenamingViewTab\n key={view.id}\n name={view.name}\n onCommit={name => {\n setRenamingViewId(undefined);\n views.rename(view.id, name);\n }}\n />\n );\n }\n return (\n <SavedViewTab\n key={view.id}\n view={view}\n selected={views.activeView?.id === view.id && !creating}\n unsaved={draft?.viewId === view.id && views.unsaved}\n fields={fields}\n operators={operators}\n settings={describeSettings?.(view.settings)}\n onSelect={() => views.select(view.id)}\n onEdit={() => views.edit(view.id)}\n onRename={() => setRenamingViewId(view.id)}\n onDuplicate={() => views.duplicate(view.id)}\n onDelete={() => views.remove(view.id)}\n />\n );\n })}\n {views.storageError && (\n <Txt role=\"alert\" variant=\"caption\" className=\"w-full text-destructive-foreground\">\n {views.storageError}\n </Txt>\n )}\n {creating ? (\n <EditingViewTab name={draft.name} unsaved onRename={name => views.change({ name })} />\n ) : (\n <Button\n type=\"button\"\n size=\"icon-sm\"\n tooltip=\"New view\"\n disabled={draft !== undefined}\n onClick={() => views.create(newViewSettings)}\n >\n <LayersPlusIcon />\n </Button>\n )}\n </div>\n );\n}\n\nfunction EditingViewTab({\n name,\n unsaved,\n onRename,\n}: {\n name: string;\n unsaved: boolean;\n onRename: (name: string) => void;\n}) {\n const [renaming, setRenaming] = useState(false);\n return (\n <span aria-current=\"true\" className={editingTabClass}>\n <LayersIcon aria-hidden />\n {renaming ? (\n <SavedViewNameInput\n name={name}\n onCommit={next => {\n setRenaming(false);\n if (next.trim()) onRename(next);\n }}\n />\n ) : (\n <>\n <span className=\"max-w-48 truncate\">{name}</span>\n {unsaved && (\n <>\n <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />\n <VisuallyHidden>Unsaved changes</VisuallyHidden>\n </>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Rename view\"\n className=\"-mr-2 size-6\"\n onClick={() => setRenaming(true)}\n >\n <PencilIcon />\n </Button>\n </>\n )}\n </span>\n );\n}\n\nfunction RenamingViewTab({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <span className={cn(restingTabClass, 'gap-1.5')}>\n <SavedViewTabIcon />\n <SavedViewNameInput name={name} onCommit={onCommit} />\n </span>\n );\n}\n\nfunction SavedViewTabIcon() {\n return (\n <Icon data-slot=\"button-icon\" size=\"sm\">\n <LayersIcon aria-hidden />\n </Icon>\n );\n}\n\nfunction SavedViewTab<TSettings>({\n view,\n selected,\n unsaved,\n fields,\n operators,\n settings,\n onSelect,\n onEdit,\n onRename,\n onDuplicate,\n onDelete,\n}: {\n view: SavedView<TSettings>;\n selected: boolean;\n unsaved: boolean;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings: ReactNode;\n onSelect: () => void;\n onEdit: () => void;\n onRename: () => void;\n onDuplicate: () => void;\n onDelete: () => void;\n}) {\n const actions: ViewAction[] = [\n { label: 'Edit view', icon: <PencilIcon aria-hidden />, onClick: onEdit },\n { label: 'Rename', icon: <TextCursorInputIcon aria-hidden />, onClick: onRename },\n { label: 'Duplicate', icon: <CopyIcon aria-hidden />, onClick: onDuplicate },\n { label: 'Delete view', icon: <Trash2Icon aria-hidden />, onClick: onDelete, destructive: true },\n ];\n const [menuOpen, setMenuOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const changeMenuOpen = (open: boolean) => {\n setMenuOpen(selected && open);\n if (open) setPreviewOpen(false);\n };\n\n return (\n <ContextMenu>\n <DropdownMenu open={selected && menuOpen} onOpenChange={changeMenuOpen}>\n <HoverCard open={!selected && previewOpen} onOpenChange={setPreviewOpen}>\n <ContextMenu.Trigger\n render={\n <HoverCardTrigger\n delay={400}\n render={\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n aria-pressed={selected}\n aria-haspopup={selected ? 'menu' : undefined}\n onClick={() => {\n if (selected) return;\n setPreviewOpen(false);\n onSelect();\n }}\n className={cn(selected ? selectedTabClass : restingTabClass, 'gap-1.5')}\n />\n }\n />\n }\n />\n }\n >\n <SavedViewTabIcon />\n <span className=\"max-w-48 truncate\">{view.name}</span>\n {unsaved && <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />}\n </ContextMenu.Trigger>\n <HoverCardContent side=\"bottom\" align=\"start\" showArrow={false}>\n <SavedViewSummary filters={view.filters} fields={fields} operators={operators} settings={settings} />\n </HoverCardContent>\n </HoverCard>\n <DropdownMenu.Content align=\"start\">\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <DropdownMenu.Separator />}\n <DropdownMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </DropdownMenu.Item>\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n <ContextMenu.Content>\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <ContextMenu.Separator />}\n <ContextMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </ContextMenu.Item>\n </Fragment>\n ))}\n </ContextMenu.Content>\n </ContextMenu>\n );\n}\n\ntype ViewAction = { label: string; icon: ReactNode; onClick: () => void; destructive?: boolean };\n","import type { ReactNode } from 'react';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport type SavedViewEditorProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n children?: ReactNode;\n className?: string;\n};\n\nexport function SavedViewEditor<TSettings>({ views, children, className }: SavedViewEditorProps<TSettings>) {\n const { draft } = views;\n const creating = draft?.viewId === undefined;\n return (\n <div\n role={draft ? 'group' : undefined}\n aria-label={draft ? `Edit view ${draft.name}` : undefined}\n className={cn('flex min-w-0 flex-wrap items-center gap-2', className)}\n >\n {children}\n {draft && (\n <>\n {!creating && views.unsaved && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n Unsaved changes\n </Txt>\n )}\n <div className=\"ml-auto flex shrink-0 items-center gap-3\">\n {creating && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"max-sm:hidden\">\n Saved in this browser\n </Txt>\n )}\n <div className=\"flex items-center gap-1\">\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={views.discard}>\n {creating ? 'Cancel' : 'Reset'}\n </Button>\n <Button type=\"button\" variant=\"primary\" size=\"sm\" disabled={!views.unsaved} onClick={views.save}>\n {creating ? 'Save view' : 'Save changes'}\n </Button>\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n","type SavedViewsSubscribe = (listener: () => void) => () => void;\n\nconst listenersByKey = new Map<string, Set<() => void>>();\nconst subscribeByKey = new Map<string, SavedViewsSubscribe>();\n\nexport function readSavedViewsRaw(key: string): string | null {\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nexport function writeSavedViewsRaw(key: string, raw: string): boolean {\n try {\n window.localStorage.setItem(key, raw);\n } catch {\n return false;\n }\n listenersByKey.get(key)?.forEach(listener => listener());\n return true;\n}\n\nexport function savedViewsSubscriber(key: string): SavedViewsSubscribe {\n const cached = subscribeByKey.get(key);\n if (cached) return cached;\n const subscribe: SavedViewsSubscribe = listener => subscribeSavedViews(key, listener);\n subscribeByKey.set(key, subscribe);\n return subscribe;\n}\n\nfunction subscribeSavedViews(key: string, listener: () => void): () => void {\n const listeners = listenersByKey.get(key) ?? new Set<() => void>();\n listenersByKey.set(key, listeners);\n listeners.add(listener);\n const onStorage = (event: StorageEvent) => {\n if (event.key === key || event.key === null) listener();\n };\n window.addEventListener('storage', onStorage);\n return () => {\n listeners.delete(listener);\n window.removeEventListener('storage', onStorage);\n };\n}\n","import { useState, useSyncExternalStore } from 'react';\nimport { parseSavedViews, savedViewNameSchema, serializeSavedViews } from './saved-view-schema';\nimport type { SavedView, SavedViewSettingsSchema } from './saved-view-schema';\nimport { readSavedViewsRaw, savedViewsSubscriber, writeSavedViewsRaw } from './saved-views-storage';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nconst NEW_SAVED_VIEW_NAME = 'Untitled view';\n\nexport type SavedViewContent<TSettings> = {\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport type SavedViewDraft<TSettings> = SavedViewContent<TSettings> & {\n viewId?: string;\n name: string;\n};\n\nexport type SavedViewDraftChange<TSettings> = Partial<Omit<SavedViewDraft<TSettings>, 'viewId'>>;\n\nexport type UseSavedViewsOptions<TSettings> = {\n storageKey: string;\n settingsSchema: SavedViewSettingsSchema<TSettings>;\n activeViewId: string | undefined;\n onActiveViewChange: (viewId: string | undefined) => void;\n};\n\nexport type SavedViewsController<TSettings> = {\n views: SavedView<TSettings>[];\n activeView: SavedView<TSettings> | undefined;\n draft: SavedViewDraft<TSettings> | undefined;\n unsaved: boolean;\n storageError: string | undefined;\n applied: SavedViewContent<TSettings> | undefined;\n select: (viewId: string | undefined) => void;\n create: (settings: TSettings, filters?: FilterBarItem[]) => void;\n edit: (viewId: string) => void;\n change: (patch: SavedViewDraftChange<TSettings>) => void;\n save: () => void;\n discard: () => void;\n rename: (viewId: string, name: string) => void;\n duplicate: (viewId: string) => void;\n remove: (viewId: string) => void;\n};\n\nfunction createSavedViewId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') return crypto.randomUUID();\n return `view-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n}\n\nfunction validViewName(name: string): string | undefined {\n const parsed = savedViewNameSchema.safeParse(name);\n return parsed.success ? parsed.data : undefined;\n}\n\nfunction sameViewContent<TSettings>(draft: SavedViewDraft<TSettings>, view: SavedView<TSettings>): boolean {\n return (\n JSON.stringify([draft.name, draft.filters, draft.settings]) ===\n JSON.stringify([view.name, view.filters, view.settings])\n );\n}\n\nexport function useSavedViews<TSettings>({\n storageKey,\n settingsSchema,\n activeViewId,\n onActiveViewChange,\n}: UseSavedViewsOptions<TSettings>): SavedViewsController<TSettings> {\n const raw = useSyncExternalStore(\n savedViewsSubscriber(storageKey),\n () => readSavedViewsRaw(storageKey),\n () => null,\n );\n const views = parseSavedViews(raw, settingsSchema);\n const [failedStorageKey, setFailedStorageKey] = useState<string>();\n const [pendingDraft, setDraft] = useState<SavedViewDraft<TSettings>>();\n const [draftScope, setDraftScope] = useState({ storageKey, activeViewId });\n const draftView = views.find(view => view.id === pendingDraft?.viewId);\n const draftViewDeleted = pendingDraft?.viewId !== undefined && !draftView;\n const storageKeyChanged = draftScope.storageKey !== storageKey;\n if (storageKeyChanged || draftScope.activeViewId !== activeViewId || draftViewDeleted) {\n setDraftScope({ storageKey, activeViewId });\n if (storageKeyChanged || draftViewDeleted || pendingDraft?.viewId !== activeViewId) setDraft(undefined);\n }\n const draft = pendingDraft?.viewId === undefined || pendingDraft.viewId === activeViewId ? pendingDraft : undefined;\n const unsaved = draft !== undefined && (!draftView || !sameViewContent(draft, draftView));\n\n const activeView = views.find(view => view.id === activeViewId);\n const write = (next: SavedView<TSettings>[]) => {\n const saved = writeSavedViewsRaw(storageKey, serializeSavedViews(next));\n setFailedStorageKey(saved ? undefined : storageKey);\n return saved;\n };\n\n return {\n views,\n activeView,\n draft,\n unsaved,\n storageError:\n failedStorageKey === storageKey\n ? 'Could not save changes. Check your browser storage settings and try again.'\n : undefined,\n applied: draft ?? activeView,\n select: viewId => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n onActiveViewChange(viewId);\n },\n create: (settings, filters = []) => setDraft({ name: NEW_SAVED_VIEW_NAME, filters, settings }),\n edit: viewId => {\n if (draft?.viewId === viewId) return;\n const view = views.find(candidate => candidate.id === viewId);\n if (!view) return;\n const { id, ...content } = view;\n setDraft({ ...content, viewId: id });\n if (viewId !== activeViewId) onActiveViewChange(viewId);\n },\n change: patch => {\n if (draft) {\n setDraft({ ...draft, ...patch });\n return;\n }\n if (!activeView) return;\n const { id, ...content } = activeView;\n setDraft({ ...content, ...patch, viewId: id });\n },\n save: () => {\n if (!draft) return;\n const { viewId, ...content } = draft;\n const saved: SavedView<TSettings> = {\n ...content,\n id: viewId ?? createSavedViewId(),\n name: validViewName(content.name) ?? views.find(view => view.id === viewId)?.name ?? NEW_SAVED_VIEW_NAME,\n };\n if (!write(viewId ? views.map(view => (view.id === viewId ? saved : view)) : [...views, saved])) return;\n setDraft(undefined);\n if (saved.id !== activeViewId) onActiveViewChange(saved.id);\n },\n discard: () => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n },\n rename: (viewId, name) => {\n const nextName = validViewName(name);\n if (!nextName) return;\n if (!write(views.map(view => (view.id === viewId ? { ...view, name: nextName } : view)))) return;\n if (draft?.viewId === viewId) setDraft({ ...draft, name: nextName });\n },\n duplicate: viewId => {\n const index = views.findIndex(view => view.id === viewId);\n const original = views[index];\n if (!original) return;\n const copy: SavedView<TSettings> = {\n ...original,\n id: createSavedViewId(),\n name: validViewName(`${original.name} copy`) ?? original.name,\n };\n if (!write(views.toSpliced(index + 1, 0, copy))) return;\n setDraft(undefined);\n onActiveViewChange(copy.id);\n },\n remove: viewId => {\n if (!write(views.filter(view => view.id !== viewId))) return;\n if (draft?.viewId === viewId) setDraft(undefined);\n if (activeViewId === viewId) onActiveViewChange(undefined);\n },\n };\n}\n"],"names":["z","jsx","passwordManagerOptOutProps","jsxs","Txt","FilterBarFieldLabel","buttonVariants","cn","controlHeight","useState","Button","LayersPlusIcon","LayersIcon","Fragment","VisuallyHidden","PencilIcon","Icon","TextCursorInputIcon","CopyIcon","Trash2Icon","ContextMenu","DropdownMenu","HoverCard","HoverCardTrigger","HoverCardContent","useSyncExternalStore"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
2
- import { LayersPlusIcon, ChevronDownIcon, LayersIcon, PencilIcon, TextCursorInputIcon, CopyIcon, Trash2Icon } from 'lucide-react';
2
+ import { LayersPlusIcon, LayersIcon, PencilIcon, TextCursorInputIcon, CopyIcon, Trash2Icon } from 'lucide-react';
3
3
  import { useState, Fragment, useSyncExternalStore } from 'react';
4
4
  import { z } from 'zod/v4';
5
5
  import { passwordManagerOptOutProps } from '../primitives/password-manager-autofill.es.js';
6
- import { a as FilterBarFieldLabel, t as formatValue } from '../filter-bar-chip-BarAq1S2.js';
6
+ import { a as FilterBarFieldLabel, t as formatValue } from '../filter-bar-chip-C9CXOudu.js';
7
7
  import { T as Txt } from '../Txt-BtIGLRk1.js';
8
- import { B as Button, b as buttonVariants } from '../Button-EGoajBQY.js';
8
+ import { B as Button, b as buttonVariants } from '../Button-D8a5EWJ5.js';
9
9
  import { C as ContextMenu } from '../context-menu-C67xhcfa.js';
10
10
  import { D as DropdownMenu } from '../dropdown-menu-CQ_48tVI.js';
11
11
  import { H as HoverCard, b as HoverCardTrigger, a as HoverCardContent } from '../hover-card-CJ1fcJvo.js';
@@ -96,10 +96,7 @@ function SavedViewSummary({ filters, fields, operators, settings }) {
96
96
  }
97
97
 
98
98
  const restingTabClass = buttonVariants({ variant: "default", size: "sm" });
99
- const selectedTabClass = cn(
100
- buttonVariants({ variant: "ghost", size: "sm" }),
101
- "bg-fill-hover text-foreground not-disabled:hover:bg-fill-hover"
102
- );
99
+ const selectedTabClass = buttonVariants({ variant: "subtle", size: "sm" });
103
100
  const editingTabClass = cn(
104
101
  controlHeight.sm,
105
102
  "inline-flex items-center gap-1.5 rounded-full border border-dashed border-border-strong bg-fill-hover px-[.9em] text-label text-foreground",
@@ -282,8 +279,7 @@ function SavedViewTab({
282
279
  children: [
283
280
  /* @__PURE__ */ jsx(SavedViewTabIcon, {}),
284
281
  /* @__PURE__ */ jsx("span", { className: "max-w-48 truncate", children: view.name }),
285
- unsaved && /* @__PURE__ */ jsx("span", { className: "size-1.5 shrink-0 rounded-full bg-warning-indicator", "aria-hidden": true }),
286
- selected && /* @__PURE__ */ jsx(ChevronDownIcon, { "aria-hidden": true, className: "size-3" })
282
+ unsaved && /* @__PURE__ */ jsx("span", { className: "size-1.5 shrink-0 rounded-full bg-warning-indicator", "aria-hidden": true })
287
283
  ]
288
284
  }
289
285
  ),