@vertesia/ui 0.66.0 → 0.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/lib/esm/core/components/Badge.js +1 -1
  2. package/lib/esm/core/components/Badge.js.map +1 -1
  3. package/lib/esm/core/components/FormItem.js +2 -2
  4. package/lib/esm/core/components/FormItem.js.map +1 -1
  5. package/lib/esm/core/components/InputList.js +2 -2
  6. package/lib/esm/core/components/InputList.js.map +1 -1
  7. package/lib/esm/core/components/shadcn/checkbox.js +1 -1
  8. package/lib/esm/core/components/shadcn/checkbox.js.map +1 -1
  9. package/lib/esm/core/components/shadcn/command.js +1 -1
  10. package/lib/esm/core/components/shadcn/command.js.map +1 -1
  11. package/lib/esm/core/components/shadcn/dialog.js +6 -6
  12. package/lib/esm/core/components/shadcn/dialog.js.map +1 -1
  13. package/lib/esm/core/components/shadcn/filters/DynamicLabel.js.map +1 -1
  14. package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js +129 -0
  15. package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -0
  16. package/lib/esm/core/components/shadcn/filters/comboBox/SelectCombobox.js +46 -0
  17. package/lib/esm/core/components/shadcn/filters/comboBox/SelectCombobox.js.map +1 -0
  18. package/lib/esm/core/components/shadcn/filters/comboBox/StringListCombobox.js +23 -0
  19. package/lib/esm/core/components/shadcn/filters/comboBox/StringListCombobox.js.map +1 -0
  20. package/lib/esm/core/components/shadcn/filters/comboBox/TextCombobox.js +28 -0
  21. package/lib/esm/core/components/shadcn/filters/comboBox/TextCombobox.js.map +1 -0
  22. package/lib/esm/core/components/shadcn/filters/comboBox/comboBox.js +5 -0
  23. package/lib/esm/core/components/shadcn/filters/comboBox/comboBox.js.map +1 -0
  24. package/lib/esm/core/components/shadcn/filters/filter/SelectFilter.js +101 -0
  25. package/lib/esm/core/components/shadcn/filters/filter/SelectFilter.js.map +1 -0
  26. package/lib/esm/core/components/shadcn/filters/{stringListFilter.js → filter/StringListFilter.js} +3 -3
  27. package/lib/esm/core/components/shadcn/filters/filter/StringListFilter.js.map +1 -0
  28. package/lib/esm/core/components/shadcn/filters/{textFilter.js → filter/TextFilter.js} +4 -4
  29. package/lib/esm/core/components/shadcn/filters/filter/TextFilter.js.map +1 -0
  30. package/lib/esm/core/components/shadcn/filters/filter/dateFilter.js +161 -0
  31. package/lib/esm/core/components/shadcn/filters/filter/dateFilter.js.map +1 -0
  32. package/lib/esm/core/components/shadcn/filters/filter-styles.js +88 -0
  33. package/lib/esm/core/components/shadcn/filters/filter-styles.js.map +1 -0
  34. package/lib/esm/core/components/shadcn/filters/filterBar.js +128 -87
  35. package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
  36. package/lib/esm/core/components/shadcn/filters/filters.js +7 -6
  37. package/lib/esm/core/components/shadcn/filters/filters.js.map +1 -1
  38. package/lib/esm/core/components/shadcn/filters/index.js +1 -1
  39. package/lib/esm/core/components/shadcn/filters/index.js.map +1 -1
  40. package/lib/esm/core/components/shadcn/filters/types.js.map +1 -1
  41. package/lib/esm/core/components/toast/NotificationPanel.js +24 -18
  42. package/lib/esm/core/components/toast/NotificationPanel.js.map +1 -1
  43. package/lib/esm/features/agent/PayloadBuilder.js +47 -27
  44. package/lib/esm/features/agent/PayloadBuilder.js.map +1 -1
  45. package/lib/esm/features/agent/chat/ModernAgentConversation.js +10 -4
  46. package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
  47. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +7 -6
  48. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  49. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +13 -2
  50. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  51. package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingMessages.js +2 -1
  52. package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingMessages.js.map +1 -1
  53. package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js +10 -4
  54. package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
  55. package/lib/esm/features/facets/DocumentsFacetsNav.js +133 -0
  56. package/lib/esm/features/facets/DocumentsFacetsNav.js.map +1 -0
  57. package/lib/esm/features/facets/RunsFacetsNav.js +125 -0
  58. package/lib/esm/features/facets/RunsFacetsNav.js.map +1 -0
  59. package/lib/esm/features/facets/VFacetsNav.js +4 -113
  60. package/lib/esm/features/facets/VFacetsNav.js.map +1 -1
  61. package/lib/esm/features/facets/VStringFacet.js +6 -4
  62. package/lib/esm/features/facets/VStringFacet.js.map +1 -1
  63. package/lib/esm/features/facets/VTypeFacet.js +4 -5
  64. package/lib/esm/features/facets/VTypeFacet.js.map +1 -1
  65. package/lib/esm/features/facets/VUserFacet.js +1 -1
  66. package/lib/esm/features/facets/VUserFacet.js.map +1 -1
  67. package/lib/esm/features/facets/WorkflowExecutionsFacetsNav.js +98 -0
  68. package/lib/esm/features/facets/WorkflowExecutionsFacetsNav.js.map +1 -0
  69. package/lib/esm/features/facets/index.js +3 -2
  70. package/lib/esm/features/facets/index.js.map +1 -1
  71. package/lib/esm/features/store/collections/CollectionsTable.js +1 -1
  72. package/lib/esm/features/store/collections/CollectionsTable.js.map +1 -1
  73. package/lib/esm/features/store/collections/CreateCollection.js +10 -9
  74. package/lib/esm/features/store/collections/CreateCollection.js.map +1 -1
  75. package/lib/esm/features/store/collections/EditCollectionView.js +10 -9
  76. package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
  77. package/lib/esm/features/store/collections/SelectCollection.js +1 -1
  78. package/lib/esm/features/store/collections/SelectCollection.js.map +1 -1
  79. package/lib/esm/features/store/objects/DocumentPreviewPanel.js +0 -1
  80. package/lib/esm/features/store/objects/DocumentPreviewPanel.js.map +1 -1
  81. package/lib/esm/features/store/objects/DocumentSearchResults.js +37 -2
  82. package/lib/esm/features/store/objects/DocumentSearchResults.js.map +1 -1
  83. package/lib/esm/features/store/objects/components/ContentOverview.js +5 -6
  84. package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
  85. package/lib/esm/features/store/objects/components/SelectDocument.js +2 -2
  86. package/lib/esm/features/store/objects/components/SelectDocument.js.map +1 -1
  87. package/lib/esm/features/store/objects/components/VectorSearchWidget.js +1 -1
  88. package/lib/esm/features/store/objects/components/VectorSearchWidget.js.map +1 -1
  89. package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js +16 -4
  90. package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js.map +1 -1
  91. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +72 -37
  92. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
  93. package/lib/esm/features/store/types/ObjectSchemaEditor.js +15 -0
  94. package/lib/esm/features/store/types/ObjectSchemaEditor.js.map +1 -1
  95. package/lib/esm/features/user/UserInfo.js +8 -8
  96. package/lib/esm/features/user/UserInfo.js.map +1 -1
  97. package/lib/esm/layout/FullHeightLayout.js +2 -4
  98. package/lib/esm/layout/FullHeightLayout.js.map +1 -1
  99. package/lib/esm/router/HistoryNavigator.js +2 -2
  100. package/lib/esm/router/HistoryNavigator.js.map +1 -1
  101. package/lib/esm/shell/SplashScreen.js +19 -0
  102. package/lib/esm/shell/SplashScreen.js.map +1 -0
  103. package/lib/esm/shell/VertesiaShell.js +10 -0
  104. package/lib/esm/shell/VertesiaShell.js.map +1 -0
  105. package/lib/esm/shell/index.js +7 -0
  106. package/lib/esm/shell/index.js.map +1 -0
  107. package/lib/esm/shell/login/EnterpriseSigninButton.js +81 -0
  108. package/lib/esm/shell/login/EnterpriseSigninButton.js.map +1 -0
  109. package/lib/esm/shell/login/GitHubSignInButton.js +24 -0
  110. package/lib/esm/shell/login/GitHubSignInButton.js.map +1 -0
  111. package/lib/esm/shell/login/GoogleSignInButton.js +25 -0
  112. package/lib/esm/shell/login/GoogleSignInButton.js.map +1 -0
  113. package/lib/esm/shell/login/InviteAcceptModal.js +45 -0
  114. package/lib/esm/shell/login/InviteAcceptModal.js.map +1 -0
  115. package/lib/esm/shell/login/MicrosoftSigninButton.js +19 -0
  116. package/lib/esm/shell/login/MicrosoftSigninButton.js.map +1 -0
  117. package/lib/esm/shell/login/PreviewIcon.js +23 -0
  118. package/lib/esm/shell/login/PreviewIcon.js.map +1 -0
  119. package/lib/esm/shell/login/SignInModal.js +9 -0
  120. package/lib/esm/shell/login/SignInModal.js.map +1 -0
  121. package/lib/esm/shell/login/SigninScreen.js +64 -0
  122. package/lib/esm/shell/login/SigninScreen.js.map +1 -0
  123. package/lib/esm/shell/login/SignupForm.js +91 -0
  124. package/lib/esm/shell/login/SignupForm.js.map +1 -0
  125. package/lib/esm/shell/login/TerminalLogin.js +179 -0
  126. package/lib/esm/shell/login/TerminalLogin.js.map +1 -0
  127. package/lib/esm/shell/login/UserInfo.js +40 -0
  128. package/lib/esm/shell/login/UserInfo.js.map +1 -0
  129. package/lib/esm/shell/login/UserSessionMenu.js +31 -0
  130. package/lib/esm/shell/login/UserSessionMenu.js.map +1 -0
  131. package/lib/esm/shell/utils.js +6 -0
  132. package/lib/esm/shell/utils.js.map +1 -0
  133. package/lib/esm/widgets/SvgIcon.js +36 -0
  134. package/lib/esm/widgets/SvgIcon.js.map +1 -0
  135. package/lib/esm/widgets/index.js +7 -6
  136. package/lib/esm/widgets/index.js.map +1 -1
  137. package/lib/esm/widgets/upload/UploadSummary.js +1 -1
  138. package/lib/esm/widgets/upload/UploadSummary.js.map +1 -1
  139. package/lib/tsconfig.tsbuildinfo +1 -1
  140. package/lib/types/core/components/FormItem.d.ts +2 -1
  141. package/lib/types/core/components/shadcn/dialog.d.ts +2 -1
  142. package/lib/types/core/components/shadcn/filters/DynamicLabel.d.ts +1 -1
  143. package/lib/types/core/components/shadcn/filters/comboBox/DateCombobox.d.ts +5 -0
  144. package/lib/types/core/components/shadcn/filters/comboBox/SelectCombobox.d.ts +8 -0
  145. package/lib/types/core/components/shadcn/filters/comboBox/StringListCombobox.d.ts +5 -0
  146. package/lib/types/core/components/shadcn/filters/comboBox/TextCombobox.d.ts +5 -0
  147. package/lib/types/core/components/shadcn/filters/comboBox/comboBox.d.ts +4 -0
  148. package/lib/types/core/components/shadcn/filters/{selectFilter.d.ts → filter/SelectFilter.d.ts} +2 -2
  149. package/lib/types/core/components/shadcn/filters/{stringListFilter.d.ts → filter/StringListFilter.d.ts} +1 -1
  150. package/lib/types/core/components/shadcn/filters/{textFilter.d.ts → filter/TextFilter.d.ts} +1 -1
  151. package/lib/types/core/components/shadcn/filters/{dateFilter.d.ts → filter/dateFilter.d.ts} +1 -1
  152. package/lib/types/core/components/shadcn/filters/filter-styles.d.ts +1 -0
  153. package/lib/types/core/components/shadcn/filters/filterBar.d.ts +14 -4
  154. package/lib/types/core/components/shadcn/filters/index.d.ts +1 -1
  155. package/lib/types/core/components/shadcn/filters/types.d.ts +2 -0
  156. package/lib/types/features/agent/PayloadBuilder.d.ts +17 -8
  157. package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts +2 -1
  158. package/lib/types/features/facets/DocumentsFacetsNav.d.ts +16 -0
  159. package/lib/types/features/facets/RunsFacetsNav.d.ts +18 -0
  160. package/lib/types/features/facets/VFacetsNav.d.ts +1 -1
  161. package/lib/types/features/facets/VStringFacet.d.ts +6 -2
  162. package/lib/types/features/facets/VTypeFacet.d.ts +3 -1
  163. package/lib/types/features/facets/WorkflowExecutionsFacetsNav.d.ts +13 -0
  164. package/lib/types/features/facets/index.d.ts +3 -2
  165. package/lib/types/shell/SplashScreen.d.ts +4 -0
  166. package/lib/types/shell/VertesiaShell.d.ts +7 -0
  167. package/lib/types/shell/index.d.ts +6 -0
  168. package/lib/types/shell/login/EnterpriseSigninButton.d.ts +5 -0
  169. package/lib/types/shell/login/GitHubSignInButton.d.ts +5 -0
  170. package/lib/types/shell/login/GoogleSignInButton.d.ts +5 -0
  171. package/lib/types/shell/login/InviteAcceptModal.d.ts +1 -0
  172. package/lib/types/shell/login/MicrosoftSigninButton.d.ts +5 -0
  173. package/lib/types/shell/login/PreviewIcon.d.ts +5 -0
  174. package/lib/types/shell/login/SignInModal.d.ts +6 -0
  175. package/lib/types/shell/login/SigninScreen.d.ts +8 -0
  176. package/lib/types/shell/login/SignupForm.d.ts +7 -0
  177. package/lib/types/shell/login/TerminalLogin.d.ts +1 -0
  178. package/lib/types/shell/login/UserInfo.d.ts +5 -0
  179. package/lib/types/shell/login/UserSessionMenu.d.ts +8 -0
  180. package/lib/types/shell/utils.d.ts +1 -0
  181. package/lib/types/widgets/SvgIcon.d.ts +6 -0
  182. package/lib/types/widgets/index.d.ts +7 -6
  183. package/lib/vertesia-ui-core.js +1 -1
  184. package/lib/vertesia-ui-core.js.map +1 -1
  185. package/lib/vertesia-ui-features.js +1 -1
  186. package/lib/vertesia-ui-features.js.map +1 -1
  187. package/lib/vertesia-ui-layout.js +1 -1
  188. package/lib/vertesia-ui-layout.js.map +1 -1
  189. package/lib/vertesia-ui-router.js +1 -1
  190. package/lib/vertesia-ui-router.js.map +1 -1
  191. package/lib/vertesia-ui-shell.js +2 -0
  192. package/lib/vertesia-ui-shell.js.map +1 -0
  193. package/lib/vertesia-ui-widgets.js +1 -1
  194. package/lib/vertesia-ui-widgets.js.map +1 -1
  195. package/package.json +14 -6
  196. package/src/core/components/Badge.tsx +12 -8
  197. package/src/core/components/FormItem.tsx +4 -3
  198. package/src/core/components/InputList.tsx +21 -17
  199. package/src/core/components/shadcn/checkbox.tsx +2 -2
  200. package/src/core/components/shadcn/command.tsx +1 -1
  201. package/src/core/components/shadcn/dialog.tsx +18 -9
  202. package/src/core/components/shadcn/filters/DynamicLabel.tsx +1 -2
  203. package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +211 -0
  204. package/src/core/components/shadcn/filters/{comboBox.tsx → comboBox/SelectCombobox.tsx} +8 -192
  205. package/src/core/components/shadcn/filters/comboBox/StringListCombobox.tsx +76 -0
  206. package/src/core/components/shadcn/filters/comboBox/TextCombobox.tsx +81 -0
  207. package/src/core/components/shadcn/filters/comboBox/comboBox.tsx +4 -0
  208. package/src/core/components/shadcn/filters/filter/SelectFilter.tsx +161 -0
  209. package/src/core/components/shadcn/filters/{stringListFilter.tsx → filter/StringListFilter.tsx} +7 -7
  210. package/src/core/components/shadcn/filters/{textFilter.tsx → filter/TextFilter.tsx} +17 -11
  211. package/src/core/components/shadcn/filters/filter/dateFilter.tsx +256 -0
  212. package/src/core/components/shadcn/filters/filter-styles.ts +87 -0
  213. package/src/core/components/shadcn/filters/filterBar.tsx +208 -152
  214. package/src/core/components/shadcn/filters/filters.tsx +7 -5
  215. package/src/core/components/shadcn/filters/index.ts +1 -1
  216. package/src/core/components/shadcn/filters/types.ts +2 -0
  217. package/src/core/components/toast/NotificationPanel.tsx +38 -22
  218. package/src/features/agent/PayloadBuilder.tsx +56 -31
  219. package/src/features/agent/chat/ModernAgentConversation.tsx +645 -639
  220. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +7 -6
  221. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +13 -2
  222. package/src/features/agent/chat/ModernAgentOutput/SlidingMessages.tsx +2 -1
  223. package/src/features/agent/chat/ModernAgentOutput/utils.ts +12 -4
  224. package/src/features/facets/DocumentsFacetsNav.tsx +171 -0
  225. package/src/features/facets/RunsFacetsNav.tsx +166 -0
  226. package/src/features/facets/VFacetsNav.tsx +10 -126
  227. package/src/features/facets/VStringFacet.tsx +10 -4
  228. package/src/features/facets/VTypeFacet.tsx +6 -5
  229. package/src/features/facets/VUserFacet.tsx +5 -3
  230. package/src/features/facets/WorkflowExecutionsFacetsNav.tsx +132 -0
  231. package/src/features/facets/index.ts +5 -2
  232. package/src/features/store/collections/CollectionsTable.tsx +3 -2
  233. package/src/features/store/collections/CreateCollection.tsx +17 -15
  234. package/src/features/store/collections/EditCollectionView.tsx +19 -16
  235. package/src/features/store/collections/SelectCollection.tsx +1 -1
  236. package/src/features/store/objects/DocumentPreviewPanel.tsx +0 -1
  237. package/src/features/store/objects/DocumentSearchResults.tsx +80 -11
  238. package/src/features/store/objects/components/ContentOverview.tsx +7 -7
  239. package/src/features/store/objects/components/SelectDocument.tsx +2 -2
  240. package/src/features/store/objects/components/VectorSearchWidget.tsx +2 -2
  241. package/src/features/store/objects/selection/actions/AddToCollectionAction.tsx +40 -19
  242. package/src/features/store/objects/upload/DocumentUploadModal.tsx +160 -214
  243. package/src/features/store/types/ObjectSchemaEditor.tsx +15 -0
  244. package/src/features/user/UserInfo.tsx +17 -14
  245. package/src/layout/FullHeightLayout.tsx +2 -2
  246. package/src/router/HistoryNavigator.ts +2 -2
  247. package/src/shell/SplashScreen.tsx +41 -0
  248. package/src/shell/VertesiaShell.tsx +27 -0
  249. package/src/shell/index.tsx +6 -0
  250. package/src/shell/login/EnterpriseSigninButton.tsx +106 -0
  251. package/src/shell/login/GitHubSignInButton.tsx +40 -0
  252. package/src/shell/login/GoogleSignInButton.tsx +36 -0
  253. package/src/shell/login/InviteAcceptModal.tsx +78 -0
  254. package/src/shell/login/MicrosoftSigninButton.tsx +30 -0
  255. package/src/shell/login/PreviewIcon.tsx +29 -0
  256. package/src/shell/login/SignInModal.tsx +28 -0
  257. package/src/shell/login/SigninScreen.tsx +162 -0
  258. package/src/shell/login/SignupForm.tsx +178 -0
  259. package/src/shell/login/TerminalLogin.tsx +299 -0
  260. package/src/shell/login/UserInfo.tsx +76 -0
  261. package/src/shell/login/UserSessionMenu.tsx +81 -0
  262. package/src/shell/utils.tsx +7 -0
  263. package/src/widgets/SvgIcon.tsx +44 -0
  264. package/src/widgets/index.ts +7 -6
  265. package/src/widgets/upload/UploadSummary.tsx +3 -4
  266. package/lib/esm/core/components/shadcn/filters/comboBox.js +0 -101
  267. package/lib/esm/core/components/shadcn/filters/comboBox.js.map +0 -1
  268. package/lib/esm/core/components/shadcn/filters/dateFilter.js +0 -36
  269. package/lib/esm/core/components/shadcn/filters/dateFilter.js.map +0 -1
  270. package/lib/esm/core/components/shadcn/filters/selectFilter.js +0 -67
  271. package/lib/esm/core/components/shadcn/filters/selectFilter.js.map +0 -1
  272. package/lib/esm/core/components/shadcn/filters/stringListFilter.js.map +0 -1
  273. package/lib/esm/core/components/shadcn/filters/textFilter.js.map +0 -1
  274. package/lib/esm/features/facets/InteractionFacet.js +0 -39
  275. package/lib/esm/features/facets/InteractionFacet.js.map +0 -1
  276. package/lib/esm/features/facets/TypeOptions.js +0 -19
  277. package/lib/esm/features/facets/TypeOptions.js.map +0 -1
  278. package/lib/esm/features/facets/UserFacet.js +0 -33
  279. package/lib/esm/features/facets/UserFacet.js.map +0 -1
  280. package/lib/types/core/components/shadcn/filters/comboBox.d.ts +0 -22
  281. package/lib/types/features/facets/InteractionFacet.d.ts +0 -9
  282. package/lib/types/features/facets/TypeOptions.d.ts +0 -3
  283. package/lib/types/features/facets/UserFacet.d.ts +0 -11
  284. package/src/core/components/shadcn/filters/dateFilter.tsx +0 -82
  285. package/src/core/components/shadcn/filters/selectFilter.tsx +0 -110
  286. package/src/features/facets/InteractionFacet.tsx +0 -53
  287. package/src/features/facets/TypeOptions.tsx +0 -22
  288. package/src/features/facets/UserFacet.tsx +0 -61
@@ -6,9 +6,11 @@ interface StringFacetProps {
6
6
  buckets: FacetBucket[];
7
7
  name: string;
8
8
  placeholder?: string;
9
+ type?: 'select';
10
+ multiple?: boolean;
9
11
  }
10
12
 
11
- export function createStringFilterGroup({ buckets, name, placeholder }: StringFacetProps): FilterGroup {
13
+ export function createStringFilterGroup({ buckets, name, placeholder, type = 'select', multiple = false }: StringFacetProps): FilterGroup {
12
14
  const options = buckets.map((bucket) => ({
13
15
  label: facetOptionLabel(bucket),
14
16
  value: bucket._id
@@ -17,19 +19,23 @@ export function createStringFilterGroup({ buckets, name, placeholder }: StringFa
17
19
  const filterGroup: FilterGroup = {
18
20
  name: name,
19
21
  options: options,
20
- type: "select",
22
+ type: type,
23
+ multiple: multiple,
21
24
  placeholder: `${placeholder ?? `${name.charAt(0).toUpperCase() + name.slice(1)}`}`,
25
+ ...({ allowCreate: false })
22
26
  };
23
27
 
24
28
  return filterGroup;
25
29
  }
26
30
 
27
- export function VStringFacet({ buckets, name, placeholder}: {
31
+ export function VStringFacet({ buckets, name, placeholder, type, multiple }: {
28
32
  search: any;
29
33
  buckets: FacetBucket[];
30
34
  name: string;
31
35
  placeholder?: string;
32
36
  className?: string;
37
+ type?: 'select';
38
+ multiple?: boolean;
33
39
  }) {
34
- return createStringFilterGroup({ buckets, name, placeholder });
40
+ return createStringFilterGroup({ buckets, name, placeholder, type, multiple });
35
41
  }
@@ -4,9 +4,11 @@ import { FilterGroup } from "@vertesia/ui/core";
4
4
  interface VTypeFacetProps {
5
5
  buckets: FacetBucket[];
6
6
  typeRegistry: any;
7
+ type?: 'select';
8
+ multiple?: boolean;
7
9
  }
8
10
 
9
- export function VTypeFacet({ buckets, typeRegistry }: VTypeFacetProps) {
11
+ export function VTypeFacet({ buckets, typeRegistry, type = 'select', multiple = false }: VTypeFacetProps) {
10
12
  // Create a map for quick lookups of type names and counts
11
13
  const typeDataMap = new Map();
12
14
  buckets.forEach((bucket) => {
@@ -30,19 +32,18 @@ export function VTypeFacet({ buckets, typeRegistry }: VTypeFacetProps) {
30
32
  });
31
33
  });
32
34
 
33
- // Create options with just raw values
34
35
  const options = buckets.map((bucket) => {
35
36
  const typeId = bucket._id || "Document";
36
37
  return {
37
38
  value: typeId,
38
- // Store count as simple fallback label
39
39
  label: `(${bucket.count})`
40
40
  };
41
41
  });
42
42
 
43
43
  const customFilterGroups: FilterGroup = {
44
- name: 'Type',
45
- type: 'select',
44
+ name: 'Types',
45
+ type: type,
46
+ multiple: multiple,
46
47
  options: options,
47
48
  labelRenderer: (typeId: string) => {
48
49
  const typeData = typeDataMap.get(typeId);
@@ -32,9 +32,11 @@ export function createUserFilterGroup({ buckets, name, placeholder }: UserFacetP
32
32
  // For known users, render UserInfo with count
33
33
  const bucket = buckets.find(b => b._id === userRef);
34
34
  return (
35
- <div className="flex items-center justify-between w-full">
36
- <UserInfo userRef={userRef} showTitle={true} size="sm" />
37
- <span className="text-muted-foreground ml-2">({bucket?.count || 0})</span>
35
+ <div className="flex items-center w-full gap-2">
36
+ <div className="flex-1 min-w-0 flex items-center truncate">
37
+ <UserInfo userRef={userRef} showTitle={true} size="sm" />
38
+ </div>
39
+ <span className="text-muted-foreground flex-shrink-0">({bucket?.count || 0})</span>
38
40
  </div>
39
41
  );
40
42
  },
@@ -0,0 +1,132 @@
1
+ import { Filter as BaseFilter, FilterProvider, FilterBtn, FilterBar, FilterClear, FilterGroup } from '@vertesia/ui/core';
2
+ import { useState } from 'react';
3
+ import { VStringFacet } from './VStringFacet';
4
+ import { VUserFacet } from './VUserFacet';
5
+ import { SearchInterface } from './VFacetsNav';
6
+
7
+ interface WorkflowExecutionsFacetsNavProps {
8
+ facets: {
9
+ status?: any[];
10
+ initiated_by?: any[];
11
+ };
12
+ search: SearchInterface;
13
+ }
14
+
15
+ // Hook to create filter groups for workflow executions
16
+ export function useWorkflowExecutionsFilterGroups(facets: WorkflowExecutionsFacetsNavProps['facets']): FilterGroup[] {
17
+ const customFilterGroups: FilterGroup[] = [];
18
+
19
+ customFilterGroups.push({
20
+ placeholder: 'Search by Workflow or Run ID',
21
+ name: 'name',
22
+ type: 'text',
23
+ options: [],
24
+ });
25
+
26
+ if (facets.status) {
27
+ const statusFilterGroup = VStringFacet({
28
+ search: null as any, // This will be provided by the search context
29
+ buckets: facets.status || [],
30
+ name: 'Status'
31
+ });
32
+ customFilterGroups.push(statusFilterGroup);
33
+ }
34
+
35
+ if (facets.initiated_by) {
36
+ const initiatedByFilterGroup = VUserFacet({
37
+ buckets: facets.initiated_by || [],
38
+ name: 'User'
39
+ });
40
+ customFilterGroups.push(initiatedByFilterGroup);
41
+ }
42
+
43
+ const dateAfterFilterGroup = {
44
+ name: 'start',
45
+ placeholder: 'Date After',
46
+ type: 'date' as const,
47
+ multiple: false
48
+ };
49
+ customFilterGroups.push(dateAfterFilterGroup);
50
+
51
+ const dateBeforeFilterGroup = {
52
+ name: 'end',
53
+ placeholder: 'Date Before',
54
+ type: 'date' as const,
55
+ multiple: false
56
+ };
57
+ customFilterGroups.push(dateBeforeFilterGroup);
58
+
59
+ return customFilterGroups;
60
+ }
61
+
62
+ // Hook to create filter change handler for workflow executions
63
+ export function useWorkflowExecutionsFilterHandler(search: SearchInterface) {
64
+ return (newFilters: BaseFilter[]) => {
65
+ if (newFilters.length === 0) {
66
+ search.clearFilters();
67
+ return;
68
+ }
69
+
70
+ search.clearFilters(false);
71
+
72
+ newFilters.forEach(filter => {
73
+ if (filter.value && filter.value.length > 0) {
74
+ const filterName = filter.name;
75
+ let filterValue;
76
+ if (filter.type === 'stringList') {
77
+ filterValue = filter.value.map(v => typeof v === 'string' ? v : v.value);
78
+ } else if (filter.multiple) {
79
+ filterValue = Array.isArray(filter.value)
80
+ ? filter.value.map((v: any) => typeof v === 'object' && v.value ? v.value : v)
81
+ : [typeof filter.value === 'object' && (filter.value as any).value ? (filter.value as any).value : filter.value];
82
+ } else {
83
+ // Single value - don't wrap in array
84
+ filterValue = Array.isArray(filter.value) && filter.value[0] && typeof filter.value[0] === 'object'
85
+ ? (filter.value[0] as any).value
86
+ : Array.isArray(filter.value) && filter.value[0]
87
+ ? filter.value[0]
88
+ : filter.value;
89
+ }
90
+
91
+ if (filterName === 'name') {
92
+ search.query.search_term = filterValue;
93
+ search.query.name = filterValue;
94
+ } else {
95
+ search.query[filterName] = filterValue;
96
+ }
97
+ }
98
+ });
99
+
100
+ search.search();
101
+ };
102
+ }
103
+
104
+ // Legacy component for backward compatibility
105
+ export function WorkflowExecutionsFacetsNav({
106
+ facets,
107
+ search,
108
+ }: WorkflowExecutionsFacetsNavProps) {
109
+ const [filters, setFilters] = useState<BaseFilter[]>([]);
110
+ const filterGroups = useWorkflowExecutionsFilterGroups(facets);
111
+ const handleFilterLogic = useWorkflowExecutionsFilterHandler(search);
112
+
113
+ const handleFilterChange: React.Dispatch<React.SetStateAction<BaseFilter[]>> = (value) => {
114
+ const newFilters = typeof value === 'function' ? value(filters) : value;
115
+ setFilters(newFilters);
116
+ handleFilterLogic(newFilters);
117
+ };
118
+
119
+ return (
120
+ <FilterProvider
121
+ filterGroups={filterGroups}
122
+ filters={filters}
123
+ setFilters={handleFilterChange}
124
+ >
125
+ <div className="flex gap-2 items-center">
126
+ <FilterBtn />
127
+ <FilterBar />
128
+ <FilterClear />
129
+ </div>
130
+ </FilterProvider>
131
+ );
132
+ }
@@ -1,11 +1,14 @@
1
1
  export { EnvironmentFacet } from "./EnvironmentFacet";
2
2
  export * from "./FacetsNav";
3
- export { InteractionFacet } from "./InteractionFacet";
4
3
  export { StringFacet } from "./StringFacet";
5
4
  export { StringListFacet } from "./StringListFacet";
6
5
  export { TypeFacet } from "./TypeFacet";
7
- export { UserFacet } from "./UserFacet";
6
+
8
7
  export * from "./VFacetsNav";
9
8
  export { VStringFacet } from "./VStringFacet";
10
9
  export { VTypeFacet } from "./VTypeFacet";
11
10
  export { VUserFacet } from "./VUserFacet";
11
+
12
+ export { RunsFacetsNav, useRunsFilterGroups, useRunsFilterHandler } from "./RunsFacetsNav";
13
+ export { WorkflowExecutionsFacetsNav, useWorkflowExecutionsFilterGroups, useWorkflowExecutionsFilterHandler } from "./WorkflowExecutionsFacetsNav";
14
+ export { DocumentsFacetsNav, useDocumentFilterGroups, useDocumentFilterHandler } from "./DocumentsFacetsNav";
@@ -18,7 +18,7 @@ export function CollectionsTable({ }: CollectionsTableProps) {
18
18
  const [isLoading, setIsLoading] = useState(true);
19
19
  const [isOpen, setOpen] = useState(false);
20
20
 
21
- const { data: collections, error, refetch } = useFetch(() => client.store.collections.list(), []);
21
+ const { data: collections, error, refetch } = useFetch(() => client.store.collections.search({}), []);
22
22
 
23
23
  // Update loading state when data is fetched
24
24
  useEffect(() => {
@@ -57,7 +57,8 @@ export function CollectionsTable({ }: CollectionsTableProps) {
57
57
 
58
58
  return (
59
59
  <>
60
- {collections &&
60
+ {
61
+ collections &&
61
62
  (collections.length > 0 ?
62
63
  (<Table className="w-full">
63
64
  <thead>
@@ -86,10 +86,25 @@ export function CreateCollectionForm({ onClose, redirect = true, onAddToCollecti
86
86
  onChange={(ev) => setPayloadProp("description", ev.target.value)}
87
87
  />
88
88
  </FormItem>
89
- <FormItem label="Dynamic Collection" className="mt-2" direction="row" description="Dynamic Collection is based on a query vs. users manully adding content.">
89
+ <FormItem label="Dynamic Collection" className="mt-2" direction="row" description="Dynamically fetch content for the collection based on a query. If not enabled, then content must be added by users or agents.">
90
90
  <Switch value={payload.dynamic || false} onChange={(value) => setPayloadProp("dynamic", value)} />
91
91
  </FormItem>
92
- <FormItem label="Type" className="mt-2" description="This is optional and drives what properties are used to describe a collection">
92
+ { !payload.dynamic &&
93
+ <FormItem label="Allowed Content Types" className="mt-4" description="Optionally select which content types can be added to the collection. If not set, then all content types are allowed.">
94
+ <SelectContentType
95
+ defaultValue={payload.allowed_types || null}
96
+ onChange={(v) => {
97
+ if (Array.isArray(v)) {
98
+ setPayloadProp("allowed_types", v.map(type => type.id));
99
+ } else {
100
+ setPayloadProp("allowed_types", v ? [v.id] : []);
101
+ }
102
+ }}
103
+ isClearable multiple
104
+ />
105
+ </FormItem>
106
+ }
107
+ <FormItem label="Type" className="mt-2" description="Optionally select a content type to assign custom properties and data to the collection.">
93
108
  <SelectContentType
94
109
  defaultValue={payload.type || null}
95
110
  onChange={(v) => {
@@ -102,19 +117,6 @@ export function CreateCollectionForm({ onClose, redirect = true, onAddToCollecti
102
117
  isClearable
103
118
  />
104
119
  </FormItem>
105
- <FormItem label="Allowed Content Types" className="mt-4">
106
- <SelectContentType
107
- defaultValue={payload.allowed_types || null}
108
- onChange={(v) => {
109
- if (Array.isArray(v)) {
110
- setPayloadProp("allowed_types", v.map(type => type.id));
111
- } else {
112
- setPayloadProp("allowed_types", v ? [v.id] : []);
113
- }
114
- }}
115
- isClearable multiple
116
- />
117
- </FormItem>
118
120
  </VModalBody>
119
121
  <VModalFooter>
120
122
  <Button isDisabled={isProcessing} onClick={onCreate}>
@@ -128,8 +128,24 @@ export function EditCollectionView({ refetch, collection }: EditCollectionViewPr
128
128
  onChange={(e) => setField("description", e.target.value)}
129
129
  />
130
130
  </FormItem>
131
+ {
132
+ !collection.dynamic &&
133
+ <FormItem label="Allowed Content Types" description="Select which content types can be added to the collection. If not set, then all content types are allowed.">
134
+ <SelectContentType
135
+ defaultValue={metadata.allowed_types || null}
136
+ onChange={(v) => {
137
+ if (Array.isArray(v)) {
138
+ setField("allowed_types", v.map(type => type.id));
139
+ } else {
140
+ setField("allowed_types", v ? [v.id] : []);
141
+ }
142
+ }}
143
+ isClearable multiple
144
+ />
145
+ </FormItem>
146
+ }
131
147
  {collection.dynamic && (
132
- <FormItem label="Query" description="Define the query to fetch dynamic content for this collection.">
148
+ <FormItem label="Query" description="Define the query to dynamically fetch content for the collection.">
133
149
  <textarea
134
150
  className={Styles.INPUT}
135
151
  value={metadata.query}
@@ -137,11 +153,11 @@ export function EditCollectionView({ refetch, collection }: EditCollectionViewPr
137
153
  />
138
154
  </FormItem>
139
155
  )}
140
- <FormItem label="Table Layout" description="Define how the collection should be displayed in tables.">
156
+ <FormItem label="Table Layout" description="Define a custom layout for displaying the collection in tables.">
141
157
  <CodeMirrorEditor className="border-1 rounded-md border-border"
142
158
  value={tableLayoutValue} extensions={extensions} editorRef={tableLayoutRef} />
143
159
  </FormItem>
144
- <FormItem label="Type">
160
+ <FormItem label="Type" description="Select a content type to assign custom properties and data to the collection.">
145
161
  <SelectContentType
146
162
  defaultValue={metadata.type || null}
147
163
  onChange={(v) => {
@@ -154,19 +170,6 @@ export function EditCollectionView({ refetch, collection }: EditCollectionViewPr
154
170
  isClearable
155
171
  />
156
172
  </FormItem>
157
- <FormItem label="Allowed Content Types">
158
- <SelectContentType
159
- defaultValue={metadata.allowed_types || null}
160
- onChange={(v) => {
161
- if (Array.isArray(v)) {
162
- setField("allowed_types", v.map(type => type.id));
163
- } else {
164
- setField("allowed_types", v ? [v.id] : []);
165
- }
166
- }}
167
- isClearable multiple
168
- />
169
- </FormItem>
170
173
  <Button size="lg" className="w-min my-4" isDisabled={isUpdating} onClick={onSubmit}>
171
174
  Save Metadata
172
175
  </Button>
@@ -16,7 +16,7 @@ interface SelectCollectionProps {
16
16
  */
17
17
  export function SelectCollection({ onChange, value, disabled = false, className }: SelectCollectionProps) {
18
18
  const { client } = useUserSession();
19
- const { data: collections, error } = useFetch(() => client.store.collections.list({ dynamic: false }), []);
19
+ const { data: collections, error } = useFetch(() => client.store.collections.search({ dynamic: false }), []);
20
20
 
21
21
  if (error) {
22
22
  return <ErrorBox title='Collection fetch failed'>{error.message}</ErrorBox>
@@ -102,7 +102,6 @@ export function DocumentPreviewPanel({
102
102
  try {
103
103
  // Try to get a rendition first
104
104
  const rendition = await client.objects.getRendition(obj.id, {
105
- max_hw: 1024,
106
105
  format: ImageRenditionFormat.jpeg,
107
106
  generate_if_missing: false,
108
107
  });
@@ -5,7 +5,8 @@ import { Button, Divider, ErrorBox, SidePanel, Spinner, useDebounce, useIntersec
5
5
  import { useNavigate } from "@vertesia/ui/router";
6
6
  import { TypeRegistry, useUserSession } from '@vertesia/ui/session';
7
7
  import { Download, RefreshCw, Eye } from 'lucide-react';
8
- import { VFacetsNav } from "../../facets";
8
+ import { FilterProvider, FilterBtn, FilterBar, FilterClear, Filter as BaseFilter } from '@vertesia/ui/core';
9
+ import { useDocumentFilterGroups, useDocumentFilterHandler } from "../../facets/DocumentsFacetsNav";
9
10
  import { VectorSearchWidget } from './components/VectorSearchWidget';
10
11
 
11
12
  import { ContentDispositionButton } from './components/ContentDispositionButton';
@@ -97,6 +98,7 @@ export function DocumentSearchResults({ layout, onUpload, allowFilter = true, al
97
98
  const [refreshTrigger, _setRefreshTrigger] = useState(0);
98
99
  const [loaded, setLoaded] = useState(0);
99
100
  const [isGridView, setIsGridView] = useState(localStorage.getItem(ContentDispositionButton.LAST_DISPLAYED_VIEW) === "grid");
101
+ const [filters, setFilters] = useState<BaseFilter[]>([]);
100
102
 
101
103
  const loadMoreRef = useRef<HTMLDivElement>(null);
102
104
  useIntersectionObserver(loadMoreRef, () => {
@@ -148,22 +150,89 @@ export function DocumentSearchResults({ layout, onUpload, allowFilter = true, al
148
150
  search.search().then(() => setIsReady(true));
149
151
  };
150
152
 
153
+ // Use DocumentsFacetsNav hooks for cleaner organization
154
+ const filterGroups = useDocumentFilterGroups(facets);
155
+ const handleFilterLogic = useDocumentFilterHandler(facetSearch);
156
+
157
+ const handleFilterChange: React.Dispatch<React.SetStateAction<BaseFilter[]>> = (value) => {
158
+ const newFilters = typeof value === 'function' ? value(filters) : value;
159
+ setFilters(newFilters);
160
+ handleFilterLogic(newFilters);
161
+ };
162
+
163
+ const url = new URL(window.location.href);
164
+ const filtersParam = url.searchParams.get('filters');
165
+
166
+ if (filtersParam) {
167
+ try {
168
+ const filterPairs = filtersParam.split(';');
169
+ const validFilterPairs = filterPairs.filter(pair => {
170
+ const [encodedName] = pair.split(':');
171
+ const name = decodeURIComponent(encodedName);
172
+ return name !== 'start' && name !== 'end';
173
+ });
174
+
175
+ if (validFilterPairs.length !== filterPairs.length) {
176
+ const newFiltersParam = validFilterPairs.length > 0 ? validFilterPairs.join(';') : '';
177
+ if (newFiltersParam) {
178
+ url.searchParams.set('filters', newFiltersParam);
179
+ } else {
180
+ url.searchParams.delete('filters');
181
+ }
182
+ window.history.replaceState({}, '', url.toString());
183
+ }
184
+ } catch (error) {
185
+ console.error("Failed to clean start/end filters from URL:", error);
186
+ }
187
+ }
188
+
151
189
  return (
152
190
  <div className="flex flex-col gap-y-2">
153
191
  <OverviewDrawer object={selectedObject} onClose={() => setSelectedObject(null)} />
154
192
  {
155
193
  error && <ErrorBox title="Error">{error.message}</ErrorBox>
156
194
  }
157
- <div className="flex flex-row gap-4 items-center justify-between w-full">
158
- {
159
- allowSearch && <VectorSearchWidget onChange={setVQuery} isLoading={isLoading} refresh={refreshTrigger} />
160
- }
161
- <div className="flex gap-1 items-center">
162
- <Button variant="outline" onClick={handleRefetch} alt="Refresh"><RefreshCw size={16} /></Button>
163
- <ContentDispositionButton onUpdate={setIsGridView} />
164
- </div>
165
- </div>
166
- {allowFilter && <VFacetsNav facets={facets} search={facetSearch} textSearch={"Name or ID"} />}
195
+ {
196
+ allowFilter && (
197
+ <FilterProvider
198
+ filterGroups={filterGroups}
199
+ filters={filters}
200
+ setFilters={handleFilterChange}
201
+ >
202
+ <div className="flex flex-row gap-4 items-center justify-between w-full">
203
+ <div className="flex gap-2 items-center w-2/3">
204
+ {
205
+ allowSearch && <VectorSearchWidget onChange={setVQuery} isLoading={isLoading} refresh={refreshTrigger} className="w-wull" />
206
+ }
207
+ <FilterBtn />
208
+ </div>
209
+ <div className="flex gap-1 items-center">
210
+ <Button variant="outline" onClick={handleRefetch} alt="Refresh"><RefreshCw size={16} /></Button>
211
+ <ContentDispositionButton onUpdate={setIsGridView} />
212
+ </div>
213
+ </div>
214
+ <div className="flex gap-2 items-center">
215
+ <FilterBar />
216
+ <FilterClear />
217
+ </div>
218
+ </FilterProvider>
219
+ )
220
+ }
221
+ {
222
+ !allowFilter && (
223
+ <div className="flex flex-row gap-4 items-center justify-between w-full">
224
+ <div className="flex gap-2 items-center w-2/3">
225
+ {
226
+ allowSearch && <VectorSearchWidget onChange={setVQuery} isLoading={isLoading} refresh={refreshTrigger} />
227
+ }
228
+ </div>
229
+ <div className="flex gap-1 items-center">
230
+ <Button variant="outline" onClick={handleRefetch} alt="Refresh"><RefreshCw size={16} /></Button>
231
+ <ContentDispositionButton onUpdate={setIsGridView} />
232
+ </div>
233
+ </div>
234
+ )
235
+ }
167
236
  <DocumentTable
168
237
  objects={objects}
169
238
  isLoading={!objects.length && isLoading}
@@ -3,11 +3,12 @@ import Markdown from "react-markdown";
3
3
  import remarkGfm from "remark-gfm";
4
4
 
5
5
  import { useUserSession } from "@vertesia/ui/session";
6
- import { Button, Link, Spinner, useToast } from "@vertesia/ui/core";
6
+ import { Button, Spinner, useToast } from "@vertesia/ui/core";
7
7
  import { JSONDisplay } from "@vertesia/ui/widgets";
8
8
  import { ContentObject, ImageRenditionFormat } from "@vertesia/common";
9
9
  import { Copy, Download, SquarePen } from "lucide-react";
10
10
  import { PropertiesEditorModal } from "./PropertiesEditorModal";
11
+ import { NavLink } from "@vertesia/ui/router";
11
12
 
12
13
  interface ContentOverviewProps {
13
14
  object: ContentObject;
@@ -82,7 +83,6 @@ export function ContentOverview({
82
83
  // Request document rendition from the server
83
84
  const response = await client.objects.getRendition(object.id, {
84
85
  format: format as any, // We're extending the format type
85
- max_hw: 1024, // Not used for document exports but required by API
86
86
  generate_if_missing: true,
87
87
  sign_url: true,
88
88
  });
@@ -171,7 +171,6 @@ export function ContentOverview({
171
171
  if (isImage) {
172
172
  client.objects
173
173
  .getRendition(object.id, {
174
- max_hw: 1024,
175
174
  format: ImageRenditionFormat.jpeg,
176
175
  generate_if_missing: false,
177
176
  sign_url: true,
@@ -320,17 +319,18 @@ export function ContentOverview({
320
319
  components={{
321
320
  a: ({ node, ...props }: { node?: any; href?: string; children?: React.ReactNode }) => {
322
321
  const href = props.href || "";
323
- if (href.startsWith("/store/objects/")) {
322
+ if (href.includes("/store/objects/")) {
324
323
  return (
325
- <Link
324
+ <NavLink
325
+ topLevelNav
326
326
  href={href}
327
327
  className="text-info"
328
328
  >
329
329
  {props.children}
330
- </Link>
330
+ </NavLink>
331
331
  );
332
332
  }
333
- return <a {...props} target="_blank" rel="noopener noreferrer" />;
333
+ return <a {...props} data-debug="test" target="_blank" rel="noopener noreferrer" />;
334
334
  },
335
335
  p: ({ node, ...props }: { node?: any; children?: React.ReactNode }) => (
336
336
  <p {...props} className={`my-0`} />
@@ -1,7 +1,7 @@
1
1
  import { ColumnLayout, ContentObjectItem } from "@vertesia/common";
2
2
  import { Button, ErrorBox, Spinner, useIntersectionObserver } from "@vertesia/ui/core";
3
3
  import { useEffect, useRef, useState } from "react";
4
- import { VFacetsNav } from "../../../facets";
4
+ import { DocumentsFacetsNav } from "../../../facets";
5
5
  import { DocumentTable } from "../DocumentTable";
6
6
  import { useDocumentSearch, useWatchDocumentSearchFacets, useWatchDocumentSearchResult } from "../search/DocumentSearchContext";
7
7
  import { DocumentSearchProvider } from "../search/DocumentSearchProvider";
@@ -66,7 +66,7 @@ function SelectDocumentImpl({ onRowClick }: SelectDocumentImplProps) {
66
66
  return (
67
67
  <div>
68
68
  <div className="flex justify-between items-center mb-4">
69
- <VFacetsNav facets={facets} search={facetSearch} textSearch="Filter content" />
69
+ <DocumentsFacetsNav facets={facets} search={facetSearch} />
70
70
  <div className="flex items-center gap-2">
71
71
  <Button variant="outline" onClick={handleRefetch} alt="Refresh">
72
72
  <RefreshCw size={16} />
@@ -107,8 +107,8 @@ export function VectorSearchWidget({ onChange, isLoading, refresh }: VectorSearc
107
107
  };
108
108
 
109
109
  return (
110
- <div className="flex gap-1 items-center w-full">
111
- <Input placeholder="Type what you are looking for" value={searchText} onChange={setSearchText} onKeyDown={handleKeyPress} />
110
+ <div className="flex gap-1 items-center w-1/2">
111
+ <Input placeholder="Type what you are looking for, or select a filter" value={searchText} onChange={setSearchText} onKeyDown={handleKeyPress} />
112
112
  <Button variant="secondary" isLoading={isLoading} onClick={() => fireSearch("text")} isDisabled={!isReady} alt="semantic search">Search</Button>
113
113
  </div>
114
114
  );