@vertesia/ui 0.79.0 → 0.80.0-dev-20251118

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 (296) hide show
  1. package/lib/esm/core/components/Panel.js +8 -0
  2. package/lib/esm/core/components/Panel.js.map +1 -0
  3. package/lib/esm/core/components/SelectBox.js +1 -1
  4. package/lib/esm/core/components/SelectBox.js.map +1 -1
  5. package/lib/esm/core/components/SidePanel.js +2 -2
  6. package/lib/esm/core/components/SidePanel.js.map +1 -1
  7. package/lib/esm/core/components/index.js +1 -1
  8. package/lib/esm/core/components/index.js.map +1 -1
  9. package/lib/esm/core/components/shadcn/breadcrumb.js +29 -8
  10. package/lib/esm/core/components/shadcn/breadcrumb.js.map +1 -1
  11. package/lib/esm/core/components/shadcn/button.js +3 -2
  12. package/lib/esm/core/components/shadcn/button.js.map +1 -1
  13. package/lib/esm/core/components/shadcn/filters/filterBar.js +2 -2
  14. package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
  15. package/lib/esm/core/components/shadcn/index.js +1 -0
  16. package/lib/esm/core/components/shadcn/index.js.map +1 -1
  17. package/lib/esm/core/components/shadcn/input.js +4 -1
  18. package/lib/esm/core/components/shadcn/input.js.map +1 -1
  19. package/lib/esm/core/components/shadcn/resizeable.js +2 -2
  20. package/lib/esm/core/components/shadcn/resizeable.js.map +1 -1
  21. package/lib/esm/core/components/shadcn/selectBox.js +15 -9
  22. package/lib/esm/core/components/shadcn/selectBox.js.map +1 -1
  23. package/lib/esm/core/components/shadcn/tabs.js +10 -3
  24. package/lib/esm/core/components/shadcn/tabs.js.map +1 -1
  25. package/lib/esm/core/components/shadcn/textarea.js +7 -0
  26. package/lib/esm/core/components/shadcn/textarea.js.map +1 -0
  27. package/lib/esm/core/hooks/CompositeState.js +139 -1
  28. package/lib/esm/core/hooks/CompositeState.js.map +1 -1
  29. package/lib/esm/core/hooks/index.js +1 -0
  30. package/lib/esm/core/hooks/index.js.map +1 -1
  31. package/lib/esm/core/hooks/useScrollableSearch.js +92 -0
  32. package/lib/esm/core/hooks/useScrollableSearch.js.map +1 -0
  33. package/lib/esm/env/index.js +1 -1
  34. package/lib/esm/env/index.js.map +1 -1
  35. package/lib/esm/features/agent/PayloadBuilder.js +80 -55
  36. package/lib/esm/features/agent/PayloadBuilder.js.map +1 -1
  37. package/lib/esm/features/agent/chat/ModernAgentConversation.js +22 -24
  38. package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
  39. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +2 -3
  40. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  41. package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js +2 -2
  42. package/lib/esm/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  43. package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js +15 -20
  44. package/lib/esm/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js.map +1 -1
  45. package/lib/esm/features/agent/chat/ModernAgentOutput/PlanPanel.js +1 -0
  46. package/lib/esm/features/agent/chat/ModernAgentOutput/PlanPanel.js.map +1 -1
  47. package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js +3 -3
  48. package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js.map +1 -1
  49. package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +6 -6
  50. package/lib/esm/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
  51. package/lib/esm/features/facets/CollectionsFacetsNav.js +19 -0
  52. package/lib/esm/features/facets/CollectionsFacetsNav.js.map +1 -1
  53. package/lib/esm/features/facets/InteractionsFacetsNav.js +9 -3
  54. package/lib/esm/features/facets/InteractionsFacetsNav.js.map +1 -1
  55. package/lib/esm/features/facets/utils/VTypeFacet.js +4 -1
  56. package/lib/esm/features/facets/utils/VTypeFacet.js.map +1 -1
  57. package/lib/esm/features/layout/GenericPageNavHeader.js +58 -5
  58. package/lib/esm/features/layout/GenericPageNavHeader.js.map +1 -1
  59. package/lib/esm/features/store/collections/BrowseCollectionView.js +3 -0
  60. package/lib/esm/features/store/collections/BrowseCollectionView.js.map +1 -1
  61. package/lib/esm/features/store/collections/CreateCollection.js +2 -2
  62. package/lib/esm/features/store/collections/CreateCollection.js.map +1 -1
  63. package/lib/esm/features/store/collections/EditCollectionView.js +29 -30
  64. package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
  65. package/lib/esm/features/store/collections/SelectCollection.js +46 -45
  66. package/lib/esm/features/store/collections/SelectCollection.js.map +1 -1
  67. package/lib/esm/features/store/objects/DocumentSearchResults.js +35 -9
  68. package/lib/esm/features/store/objects/DocumentSearchResults.js.map +1 -1
  69. package/lib/esm/features/store/objects/DocumentTable.js +6 -6
  70. package/lib/esm/features/store/objects/DocumentTable.js.map +1 -1
  71. package/lib/esm/features/store/objects/components/ContentOverview.js +158 -114
  72. package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
  73. package/lib/esm/features/store/objects/components/DocumentIcon.js +5 -3
  74. package/lib/esm/features/store/objects/components/DocumentIcon.js.map +1 -1
  75. package/lib/esm/features/store/objects/components/SaveVersionConfirmModal.js +11 -2
  76. package/lib/esm/features/store/objects/components/SaveVersionConfirmModal.js.map +1 -1
  77. package/lib/esm/features/store/objects/components/useDownloadObject.js +2 -2
  78. package/lib/esm/features/store/objects/components/useDownloadObject.js.map +1 -1
  79. package/lib/esm/features/store/objects/layout/DocumentTableColumn.js +13 -1
  80. package/lib/esm/features/store/objects/layout/DocumentTableColumn.js.map +1 -1
  81. package/lib/esm/features/store/objects/layout/documentLayout.js +5 -5
  82. package/lib/esm/features/store/objects/layout/documentLayout.js.map +1 -1
  83. package/lib/esm/features/store/objects/layout/renderers.js +28 -12
  84. package/lib/esm/features/store/objects/layout/renderers.js.map +1 -1
  85. package/lib/esm/features/store/objects/search/DocumentSearchContext.js +5 -1
  86. package/lib/esm/features/store/objects/search/DocumentSearchContext.js.map +1 -1
  87. package/lib/esm/features/store/objects/search/DocumentSearchProvider.js +1 -1
  88. package/lib/esm/features/store/objects/search/DocumentSearchProvider.js.map +1 -1
  89. package/lib/esm/features/store/objects/selection/ObjectsActionContext.js +3 -2
  90. package/lib/esm/features/store/objects/selection/ObjectsActionContext.js.map +1 -1
  91. package/lib/esm/features/store/objects/selection/SelectionActions.js +2 -0
  92. package/lib/esm/features/store/objects/selection/SelectionActions.js.map +1 -1
  93. package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js +10 -2
  94. package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js.map +1 -1
  95. package/lib/esm/features/store/objects/selection/actions/DeleteObjectsAction.js +20 -2
  96. package/lib/esm/features/store/objects/selection/actions/DeleteObjectsAction.js.map +1 -1
  97. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +15 -7
  98. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
  99. package/lib/esm/features/store/types/CreateOrUpdateTypeModal.js +1 -1
  100. package/lib/esm/features/store/types/CreateOrUpdateTypeModal.js.map +1 -1
  101. package/lib/esm/features/user/UserInfo.js +2 -0
  102. package/lib/esm/features/user/UserInfo.js.map +1 -1
  103. package/lib/esm/router/HistoryNavigator.js +25 -2
  104. package/lib/esm/router/HistoryNavigator.js.map +1 -1
  105. package/lib/esm/router/Nav.js +3 -3
  106. package/lib/esm/router/Nav.js.map +1 -1
  107. package/lib/esm/session/UserSession.js +1 -0
  108. package/lib/esm/session/UserSession.js.map +1 -1
  109. package/lib/esm/session/UserSessionProvider.js +9 -2
  110. package/lib/esm/session/UserSessionProvider.js.map +1 -1
  111. package/lib/esm/session/auth/composable.js +66 -67
  112. package/lib/esm/session/auth/composable.js.map +1 -1
  113. package/lib/esm/widgets/form/Form.js +17 -30
  114. package/lib/esm/widgets/form/Form.js.map +1 -1
  115. package/lib/esm/widgets/form/FormContext.js +4 -2
  116. package/lib/esm/widgets/form/FormContext.js.map +1 -1
  117. package/lib/esm/widgets/form/ManagedObject.js +4 -0
  118. package/lib/esm/widgets/form/ManagedObject.js.map +1 -1
  119. package/lib/esm/widgets/form/fields.js +4 -3
  120. package/lib/esm/widgets/form/fields.js.map +1 -1
  121. package/lib/esm/widgets/form/inputs.js +2 -0
  122. package/lib/esm/widgets/form/inputs.js.map +1 -1
  123. package/lib/tsconfig.tsbuildinfo +1 -1
  124. package/lib/types/core/components/Panel.d.ts +11 -0
  125. package/lib/types/core/components/Panel.d.ts.map +1 -0
  126. package/lib/types/core/components/SidePanel.d.ts.map +1 -1
  127. package/lib/types/core/components/index.d.ts +1 -1
  128. package/lib/types/core/components/index.d.ts.map +1 -1
  129. package/lib/types/core/components/shadcn/breadcrumb.d.ts +3 -2
  130. package/lib/types/core/components/shadcn/breadcrumb.d.ts.map +1 -1
  131. package/lib/types/core/components/shadcn/button.d.ts.map +1 -1
  132. package/lib/types/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
  133. package/lib/types/core/components/shadcn/index.d.ts +1 -0
  134. package/lib/types/core/components/shadcn/index.d.ts.map +1 -1
  135. package/lib/types/core/components/shadcn/input.d.ts.map +1 -1
  136. package/lib/types/core/components/shadcn/selectBox.d.ts +3 -2
  137. package/lib/types/core/components/shadcn/selectBox.d.ts.map +1 -1
  138. package/lib/types/core/components/shadcn/tabs.d.ts.map +1 -1
  139. package/lib/types/core/components/shadcn/textarea.d.ts +4 -0
  140. package/lib/types/core/components/shadcn/textarea.d.ts.map +1 -0
  141. package/lib/types/core/hooks/CompositeState.d.ts +115 -6
  142. package/lib/types/core/hooks/CompositeState.d.ts.map +1 -1
  143. package/lib/types/core/hooks/index.d.ts +1 -0
  144. package/lib/types/core/hooks/index.d.ts.map +1 -1
  145. package/lib/types/core/hooks/useScrollableSearch.d.ts +82 -0
  146. package/lib/types/core/hooks/useScrollableSearch.d.ts.map +1 -0
  147. package/lib/types/env/index.d.ts +3 -1
  148. package/lib/types/env/index.d.ts.map +1 -1
  149. package/lib/types/features/agent/PayloadBuilder.d.ts +11 -19
  150. package/lib/types/features/agent/PayloadBuilder.d.ts.map +1 -1
  151. package/lib/types/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
  152. package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +1 -1
  153. package/lib/types/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  154. package/lib/types/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
  155. package/lib/types/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.d.ts.map +1 -1
  156. package/lib/types/features/agent/chat/ModernAgentOutput/PlanPanel.d.ts.map +1 -1
  157. package/lib/types/features/facets/CollectionsFacetsNav.d.ts.map +1 -1
  158. package/lib/types/features/facets/InteractionsFacetsNav.d.ts +1 -0
  159. package/lib/types/features/facets/InteractionsFacetsNav.d.ts.map +1 -1
  160. package/lib/types/features/facets/utils/SearchInterface.d.ts +6 -1
  161. package/lib/types/features/facets/utils/SearchInterface.d.ts.map +1 -1
  162. package/lib/types/features/facets/utils/VTypeFacet.d.ts +2 -1
  163. package/lib/types/features/facets/utils/VTypeFacet.d.ts.map +1 -1
  164. package/lib/types/features/layout/GenericPageNavHeader.d.ts +2 -1
  165. package/lib/types/features/layout/GenericPageNavHeader.d.ts.map +1 -1
  166. package/lib/types/features/store/collections/BrowseCollectionView.d.ts.map +1 -1
  167. package/lib/types/features/store/collections/CreateCollection.d.ts.map +1 -1
  168. package/lib/types/features/store/collections/EditCollectionView.d.ts.map +1 -1
  169. package/lib/types/features/store/collections/SelectCollection.d.ts +6 -4
  170. package/lib/types/features/store/collections/SelectCollection.d.ts.map +1 -1
  171. package/lib/types/features/store/objects/DocumentSearchResults.d.ts.map +1 -1
  172. package/lib/types/features/store/objects/DocumentTable.d.ts +4 -0
  173. package/lib/types/features/store/objects/DocumentTable.d.ts.map +1 -1
  174. package/lib/types/features/store/objects/components/ContentOverview.d.ts.map +1 -1
  175. package/lib/types/features/store/objects/components/DocumentIcon.d.ts +3 -1
  176. package/lib/types/features/store/objects/components/DocumentIcon.d.ts.map +1 -1
  177. package/lib/types/features/store/objects/components/SaveVersionConfirmModal.d.ts.map +1 -1
  178. package/lib/types/features/store/objects/components/useDownloadObject.d.ts +1 -1
  179. package/lib/types/features/store/objects/components/useDownloadObject.d.ts.map +1 -1
  180. package/lib/types/features/store/objects/layout/DocumentTableColumn.d.ts +2 -1
  181. package/lib/types/features/store/objects/layout/DocumentTableColumn.d.ts.map +1 -1
  182. package/lib/types/features/store/objects/layout/documentLayout.d.ts +4 -2
  183. package/lib/types/features/store/objects/layout/documentLayout.d.ts.map +1 -1
  184. package/lib/types/features/store/objects/layout/renderers.d.ts +1 -1
  185. package/lib/types/features/store/objects/layout/renderers.d.ts.map +1 -1
  186. package/lib/types/features/store/objects/search/DocumentSearchContext.d.ts +1 -0
  187. package/lib/types/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
  188. package/lib/types/features/store/objects/selection/ObjectsActionContext.d.ts.map +1 -1
  189. package/lib/types/features/store/objects/selection/SelectionActions.d.ts.map +1 -1
  190. package/lib/types/features/store/objects/selection/actions/DeleteObjectsAction.d.ts +1 -0
  191. package/lib/types/features/store/objects/selection/actions/DeleteObjectsAction.d.ts.map +1 -1
  192. package/lib/types/features/store/objects/upload/DocumentUploadModal.d.ts.map +1 -1
  193. package/lib/types/features/user/UserInfo.d.ts.map +1 -1
  194. package/lib/types/router/HistoryNavigator.d.ts.map +1 -1
  195. package/lib/types/router/Nav.d.ts +2 -1
  196. package/lib/types/router/Nav.d.ts.map +1 -1
  197. package/lib/types/session/UserSession.d.ts.map +1 -1
  198. package/lib/types/session/UserSessionProvider.d.ts.map +1 -1
  199. package/lib/types/session/auth/composable.d.ts.map +1 -1
  200. package/lib/types/widgets/form/Form.d.ts +2 -1
  201. package/lib/types/widgets/form/Form.d.ts.map +1 -1
  202. package/lib/types/widgets/form/FormContext.d.ts +5 -2
  203. package/lib/types/widgets/form/FormContext.d.ts.map +1 -1
  204. package/lib/types/widgets/form/ManagedObject.d.ts.map +1 -1
  205. package/lib/types/widgets/form/fields.d.ts +2 -2
  206. package/lib/types/widgets/form/fields.d.ts.map +1 -1
  207. package/lib/types/widgets/form/inputs.d.ts.map +1 -1
  208. package/lib/vertesia-ui-core.js +1 -1
  209. package/lib/vertesia-ui-core.js.map +1 -1
  210. package/lib/vertesia-ui-env.js +1 -1
  211. package/lib/vertesia-ui-env.js.map +1 -1
  212. package/lib/vertesia-ui-features.js +1 -1
  213. package/lib/vertesia-ui-features.js.map +1 -1
  214. package/lib/vertesia-ui-router.js +1 -1
  215. package/lib/vertesia-ui-router.js.map +1 -1
  216. package/lib/vertesia-ui-session.js +1 -1
  217. package/lib/vertesia-ui-session.js.map +1 -1
  218. package/lib/vertesia-ui-shell.js.map +1 -1
  219. package/lib/vertesia-ui-widgets.js +1 -1
  220. package/lib/vertesia-ui-widgets.js.map +1 -1
  221. package/package.json +170 -165
  222. package/src/core/components/Panel.tsx +34 -0
  223. package/src/core/components/SelectBox.tsx +1 -1
  224. package/src/core/components/SidePanel.tsx +5 -3
  225. package/src/core/components/TagsInput.tsx +388 -0
  226. package/src/core/components/index.ts +2 -1
  227. package/src/core/components/shadcn/breadcrumb.tsx +49 -30
  228. package/src/core/components/shadcn/button.tsx +3 -2
  229. package/src/core/components/shadcn/filters/filterBar.tsx +3 -3
  230. package/src/core/components/shadcn/index.ts +2 -1
  231. package/src/core/components/shadcn/input.tsx +10 -7
  232. package/src/core/components/shadcn/popover.tsx +2 -2
  233. package/src/core/components/shadcn/resizeable.tsx +4 -4
  234. package/src/core/components/shadcn/selectBox.tsx +87 -67
  235. package/src/core/components/shadcn/tabs.tsx +10 -3
  236. package/src/core/components/shadcn/textarea.tsx +21 -0
  237. package/src/core/hooks/CompositeState.tsx +156 -6
  238. package/src/core/hooks/index.ts +1 -0
  239. package/src/core/hooks/useScrollableSearch.tsx +193 -0
  240. package/src/env/index.ts +4 -3
  241. package/src/features/agent/PayloadBuilder.tsx +92 -65
  242. package/src/features/agent/chat/ModernAgentConversation.tsx +109 -118
  243. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +3 -23
  244. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +3 -11
  245. package/src/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.tsx +39 -55
  246. package/src/features/agent/chat/ModernAgentOutput/PlanPanel.tsx +1 -0
  247. package/src/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.tsx +8 -8
  248. package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +9 -9
  249. package/src/features/facets/CollectionsFacetsNav.tsx +21 -0
  250. package/src/features/facets/InteractionsFacetsNav.tsx +13 -3
  251. package/src/features/facets/utils/SearchInterface.tsx +5 -1
  252. package/src/features/facets/utils/VTypeFacet.tsx +6 -2
  253. package/src/features/layout/GenericPageNavHeader.tsx +73 -10
  254. package/src/features/store/collections/BrowseCollectionView.tsx +4 -0
  255. package/src/features/store/collections/CreateCollection.tsx +3 -4
  256. package/src/features/store/collections/EditCollectionView.tsx +112 -85
  257. package/src/features/store/collections/SelectCollection.tsx +105 -49
  258. package/src/features/store/collections/SharedPropsEditor.tsx +61 -0
  259. package/src/features/store/collections/SyncMemberHeadsToggle.tsx +48 -0
  260. package/src/features/store/collections/index.ts +3 -1
  261. package/src/features/store/objects/DocumentSearchResults.tsx +128 -53
  262. package/src/features/store/objects/DocumentTable.tsx +14 -4
  263. package/src/features/store/objects/components/ContentOverview.tsx +208 -110
  264. package/src/features/store/objects/components/DocumentIcon.tsx +11 -12
  265. package/src/features/store/objects/components/SaveVersionConfirmModal.tsx +12 -2
  266. package/src/features/store/objects/components/useDownloadObject.ts +7 -2
  267. package/src/features/store/objects/layout/DocumentTableColumn.tsx +16 -1
  268. package/src/features/store/objects/layout/documentLayout.tsx +7 -5
  269. package/src/features/store/objects/layout/knowledge.md +10 -10
  270. package/src/features/store/objects/layout/renderers.tsx +39 -18
  271. package/src/features/store/objects/search/DocumentSearchContext.ts +6 -1
  272. package/src/features/store/objects/search/DocumentSearchProvider.tsx +1 -1
  273. package/src/features/store/objects/selection/ObjectsActionContext.tsx +3 -2
  274. package/src/features/store/objects/selection/SelectionActions.tsx +2 -0
  275. package/src/features/store/objects/selection/actions/AddToCollectionAction.tsx +8 -2
  276. package/src/features/store/objects/selection/actions/DeleteObjectsAction.tsx +22 -2
  277. package/src/features/store/objects/upload/DocumentUploadModal.tsx +18 -9
  278. package/src/features/store/objects/upload/useSmartFileUploadProcessing.ts +10 -7
  279. package/src/features/store/types/CreateOrUpdateTypeModal.tsx +1 -1
  280. package/src/features/user/UserInfo.tsx +2 -0
  281. package/src/router/HistoryNavigator.ts +33 -2
  282. package/src/router/Nav.tsx +4 -3
  283. package/src/session/UserSession.ts +1 -0
  284. package/src/session/UserSessionProvider.tsx +10 -2
  285. package/src/session/auth/composable.ts +71 -70
  286. package/src/shell/apps/AppProjectSelector.tsx +2 -2
  287. package/src/widgets/form/Form.tsx +19 -43
  288. package/src/widgets/form/FormContext.ts +5 -2
  289. package/src/widgets/form/ManagedObject.ts +4 -0
  290. package/src/widgets/form/fields.tsx +8 -6
  291. package/src/widgets/form/inputs.tsx +1 -0
  292. package/lib/esm/core/components/Textarea.js +0 -15
  293. package/lib/esm/core/components/Textarea.js.map +0 -1
  294. package/lib/types/core/components/Textarea.d.ts +0 -8
  295. package/lib/types/core/components/Textarea.d.ts.map +0 -1
  296. package/src/core/components/Textarea.tsx +0 -25
@@ -6,7 +6,7 @@ import {
6
6
  } from '@vertesia/ui/core';
7
7
  import { useNavigate } from "@vertesia/ui/router";
8
8
  import { TypeRegistry, useUserSession } from '@vertesia/ui/session';
9
- import { Download, RefreshCw, Eye } from 'lucide-react';
9
+ import { Download, RefreshCw, ExternalLink } from 'lucide-react';
10
10
  import { useDocumentFilterGroups, useDocumentFilterHandler } from "../../facets/DocumentsFacetsNav";
11
11
  import { VectorSearchWidget } from './components/VectorSearchWidget';
12
12
  import { ContentDispositionButton } from './components/ContentDispositionButton';
@@ -18,8 +18,8 @@ import { ContentOverview } from './components/ContentOverview';
18
18
  import { useDownloadDocument } from './components/useDownloadObject';
19
19
 
20
20
  const defaultLayout: ColumnLayout[] = [
21
- { name: "ID", field: "id", type: "string?slice=-7" },
22
- { name: "Name", field: ".", type: "objectLink" },
21
+ { name: "ID", field: "id", type: "objectId?slice=-7" },
22
+ { name: "Name", field: ".", type: "objectName" },
23
23
  { name: "Type", field: "type.name", type: "string" },
24
24
  { name: "Status", field: "status", type: "string" },
25
25
  { name: "Updated At", field: "updated_at", type: "date" },
@@ -27,7 +27,13 @@ const defaultLayout: ColumnLayout[] = [
27
27
 
28
28
  function getTableLayout(registry: TypeRegistry, type: string | undefined): ColumnLayout[] {
29
29
  const layout = type ? registry.getTypeLayout(type) : defaultLayout;
30
- return layout ?? defaultLayout;
30
+ console.log('[DEBUG] getTableLayout called with type:', type);
31
+ console.log('[DEBUG] Layout from registry:', layout);
32
+ console.log('[DEBUG] Using defaultLayout?', layout === defaultLayout);
33
+ const result = layout ?? defaultLayout;
34
+ console.log('[DEBUG] Final layout:', result);
35
+ console.log('[DEBUG] Has Status field?', result.some(col => col.field === 'status'));
36
+ return result;
31
37
  }
32
38
 
33
39
  interface DocumentSearchResultsWithDropZoneProps {
@@ -90,10 +96,13 @@ export function DocumentSearchResults({ layout, onUpload, allowFilter = true, al
90
96
  const [isReady, setIsReady] = useState(false);
91
97
  const [selectedObject, setSelectedObject] = useState<ContentObjectItem | null>(null);
92
98
  const { typeRegistry } = useUserSession();
93
- const { search, isLoading, error, objects } = useWatchDocumentSearchResult();
99
+ const { search, isLoading, error, objects, hasMore } = useWatchDocumentSearchResult();
94
100
  const [actualLayout, setActualLayout] = useState<ColumnLayout[]>(
95
101
  typeRegistry ? layout || getTableLayout(typeRegistry, search.query.type) : defaultLayout,
96
102
  );
103
+
104
+ console.log('[DEBUG] DocumentSearchResults - actualLayout:', actualLayout);
105
+ console.log('[DEBUG] DocumentSearchResults - actualLayout has Status?', actualLayout.some(col => col.field === 'status'));
97
106
  //TODO _setRefreshTrigger state not used
98
107
  const [refreshTrigger, _setRefreshTrigger] = useState(0);
99
108
  const [loaded, setLoaded] = useState(0);
@@ -105,6 +114,7 @@ export function DocumentSearchResults({ layout, onUpload, allowFilter = true, al
105
114
  // Trigger initial search when component mounts
106
115
  useEffect(() => {
107
116
  if (!isReady && objects.length === 0) {
117
+ setLoaded(0);
108
118
  // Manually set loading state to show spinner during initial load
109
119
  search._updateRunningState(true);
110
120
  search.search().then(() => {
@@ -116,6 +126,12 @@ export function DocumentSearchResults({ layout, onUpload, allowFilter = true, al
116
126
  }
117
127
  }, []);
118
128
 
129
+ useEffect(() => {
130
+ if (objects.length < loaded) {
131
+ setLoaded(objects.length);
132
+ }
133
+ }, [objects.length, loaded]);
134
+
119
135
  useIntersectionObserver(loadMoreRef, () => {
120
136
  if (isReady && objects.length > 0 && objects.length != loaded) {
121
137
  setIsReady(false);
@@ -197,75 +213,134 @@ export function DocumentSearchResults({ layout, onUpload, allowFilter = true, al
197
213
  } else {
198
214
  url.searchParams.delete('filters');
199
215
  }
200
- window.history.replaceState({}, '', url.toString());
216
+ window.history.replaceState(window.history.state || {}, '', url.toString());
201
217
  }
202
218
  } catch (error) {
203
219
  console.error("Failed to clean start/end filters from URL:", error);
204
220
  }
205
221
  }
206
222
 
223
+ const navigate = useNavigate();
224
+ const onRowClick = (object: ContentObjectItem) => {
225
+ navigate(`/objects/${object.id}`);
226
+ }
227
+
228
+ const previewObject = (objectId: string) => {
229
+ const obj = objects.find(o => o.id === objectId) || null;
230
+ setSelectedObject(obj);
231
+ }
232
+
207
233
  return (
208
234
  <div className="flex flex-col gap-y-2">
209
235
  <OverviewDrawer object={selectedObject} onClose={() => setSelectedObject(null)} />
210
236
  {
211
237
  error && <ErrorBox title="Error">{error.message}</ErrorBox>
212
238
  }
213
- <div className="sticky top-0 z-10 bg-background pb-2">
214
- {
215
- allowFilter && (
216
- <FilterProvider
217
- filterGroups={filterGroups}
218
- filters={filters}
219
- setFilters={handleFilterChange}
220
- >
221
- <div className="flex flex-row gap-4 items-center justify-between w-full">
222
- <div className="flex gap-2 items-center w-2/3">
223
- {
224
- allowSearch && <VectorSearchWidget onChange={handleVectorSearch} isLoading={isLoading} refresh={refreshTrigger} className="w-full" />
225
- }
226
- <FilterBtn />
227
- </div>
228
- <div className="flex gap-1 items-center">
229
- <Button variant="outline" onClick={handleRefetch} alt="Refresh"><RefreshCw size={16} /></Button>
230
- <ContentDispositionButton onUpdate={setIsGridView} />
231
- </div>
232
- </div>
233
- <div className="flex gap-2 items-center">
234
- <FilterBar />
235
- <FilterClear />
236
- </div>
237
- </FilterProvider>
238
- )
239
- }
240
- {
241
- !allowFilter && (
239
+ <Toolsbar
240
+ isLoading={isLoading}
241
+ refreshTrigger={refreshTrigger}
242
+ allowFilter={allowFilter}
243
+ allowSearch={allowSearch}
244
+ filterGroups={filterGroups}
245
+ filters={filters}
246
+ handleFilterChange={handleFilterChange}
247
+ handleVectorSearch={handleVectorSearch}
248
+ handleRefetch={handleRefetch}
249
+ setIsGridView={setIsGridView}
250
+ />
251
+ <DocumentTable
252
+ objects={objects}
253
+ isLoading={!objects.length && isLoading}
254
+ layout={actualLayout}
255
+ onRowClick={onRowClick}
256
+ previewObject={previewObject}
257
+ selectedObject={selectedObject}
258
+ onUpload={onUpload}
259
+ isGridView={isGridView}
260
+ collectionId={searchContext.collectionId} // Pass the collection ID from context
261
+ />
262
+ {hasMore ? (
263
+ <div ref={loadMoreRef} className="w-full flex justify-center" >
264
+ <Spinner size='xl' />
265
+ </div>
266
+ ) : (
267
+ <div className="text-muted text-center text-sm py-1">
268
+ {`All ${objects.length} objects loaded.`}
269
+ </div>
270
+ )}
271
+ </div>
272
+ );
273
+ }
274
+
275
+ interface ToolsbarProps {
276
+ isLoading: boolean;
277
+ refreshTrigger: number;
278
+ allowFilter: boolean;
279
+ allowSearch: boolean;
280
+ filterGroups: ReturnType<typeof useDocumentFilterGroups>;
281
+ filters: BaseFilter[];
282
+ handleFilterChange: React.Dispatch<React.SetStateAction<BaseFilter[]>>;
283
+ handleVectorSearch: (query?: ComplexSearchQuery) => void;
284
+ handleRefetch: () => void;
285
+ setIsGridView: React.Dispatch<React.SetStateAction<boolean>>;
286
+ }
287
+ function Toolsbar(props: ToolsbarProps) {
288
+ const {
289
+ isLoading,
290
+ refreshTrigger,
291
+ allowFilter,
292
+ allowSearch,
293
+ filterGroups,
294
+ filters,
295
+ handleFilterChange,
296
+ handleVectorSearch,
297
+ handleRefetch,
298
+ setIsGridView
299
+ } = props;
300
+
301
+ return (
302
+ <div className="sticky top-0 z-10 bg-background py-2">
303
+ {
304
+ allowFilter && (
305
+ <FilterProvider
306
+ filterGroups={filterGroups}
307
+ filters={filters}
308
+ setFilters={handleFilterChange}
309
+ >
242
310
  <div className="flex flex-row gap-4 items-center justify-between w-full">
243
311
  <div className="flex gap-2 items-center w-2/3">
244
312
  {
245
- allowSearch && <VectorSearchWidget onChange={handleVectorSearch} isLoading={isLoading} refresh={refreshTrigger} />
313
+ allowSearch && <VectorSearchWidget onChange={handleVectorSearch} isLoading={isLoading} refresh={refreshTrigger} className="w-full" />
246
314
  }
315
+ <FilterBtn />
247
316
  </div>
248
317
  <div className="flex gap-1 items-center">
249
318
  <Button variant="outline" onClick={handleRefetch} alt="Refresh"><RefreshCw size={16} /></Button>
250
319
  <ContentDispositionButton onUpdate={setIsGridView} />
251
320
  </div>
252
321
  </div>
253
- )
254
- }
255
- </div>
256
- <DocumentTable
257
- objects={objects}
258
- isLoading={!objects.length && isLoading}
259
- layout={actualLayout}
260
- onRowClick={setSelectedObject}
261
- onUpload={onUpload}
262
- isGridView={isGridView}
263
- collectionId={searchContext.collectionId} // Pass the collection ID from context
264
- />
322
+ <div className="flex gap-2 items-center pt-2">
323
+ <FilterBar />
324
+ <FilterClear />
325
+ </div>
326
+ </FilterProvider>
327
+ )
328
+ }
265
329
  {
266
- isLoading && <div className='flex justify-center'><Spinner size='xl' /></div>
330
+ !allowFilter && (
331
+ <div className="flex flex-row gap-4 items-center justify-between w-full">
332
+ <div className="flex gap-2 items-center w-2/3">
333
+ {
334
+ allowSearch && <VectorSearchWidget onChange={handleVectorSearch} isLoading={isLoading} refresh={refreshTrigger} />
335
+ }
336
+ </div>
337
+ <div className="flex gap-1 items-center">
338
+ <Button variant="outline" onClick={handleRefetch} alt="Refresh"><RefreshCw size={16} /></Button>
339
+ <ContentDispositionButton onUpdate={setIsGridView} />
340
+ </div>
341
+ </div>
342
+ )
267
343
  }
268
- <div ref={loadMoreRef} />
269
344
  </div>
270
345
  );
271
346
  }
@@ -278,13 +353,13 @@ function OverviewDrawer({ object, onClose }: OverviewDrawerProps) {
278
353
  const { store } = useUserSession();
279
354
  const toast = useToast();
280
355
  const navigate = useNavigate();
281
- const onDownload = useDownloadDocument(store, toast, object?.content?.source);
356
+ const onDownload = useDownloadDocument(store, toast, object?.content?.source, object?.name || object?.content?.name);
282
357
 
283
358
  return object ? (
284
359
  <SidePanel title={object.properties?.title || object.name} isOpen={true} onClose={onClose}>
285
360
  <div className="flex items-center gap-x-2">
286
361
  <Button variant="ghost" size="sm" title="Open Object" onClick={() => navigate(`/objects/${object.id}`)}>
287
- <Eye className="size-4" />
362
+ <ExternalLink className="size-4" />
288
363
  </Button>
289
364
  {object.content?.source && (
290
365
  <Button variant="ghost" size="sm" title="Download" onClick={onDownload}>
@@ -294,7 +369,7 @@ function OverviewDrawer({ object, onClose }: OverviewDrawerProps) {
294
369
  </div>
295
370
  <Divider className="my-2" />
296
371
  <div className="pt-2">
297
- <ContentOverview object={object as unknown as ContentObject} loadText />
372
+ <ContentOverview key={object.id} object={object as ContentObject} loadText />
298
373
  </div>
299
374
  </SidePanel>
300
375
  ) : null;
@@ -10,8 +10,8 @@ import { useDocumentSearch } from "./search/DocumentSearchContext";
10
10
  import { FileWithMetadata, DocumentUploadModal, useSmartFileUploadProcessing } from "./upload";
11
11
 
12
12
  const defaultLayout: ExtendedColumnLayout[] = [
13
- { name: "ID", field: "id", type: "string?slice=-7" },
14
- { name: "Name", field: ".", type: "objectLink" },
13
+ { name: "ID", field: "id", type: "objectId?slice=-7" },
14
+ { name: "Name", field: ".", type: "objectName" },
15
15
  { name: "Type", field: "type.name", type: "string" },
16
16
  { name: "Status", field: "status", type: "string" },
17
17
  { name: "Updated At", field: "updated_at", type: "date" },
@@ -19,6 +19,8 @@ const defaultLayout: ExtendedColumnLayout[] = [
19
19
 
20
20
  interface DocumentTableProps extends DocumentTableImplProps {
21
21
  isGridView?: boolean;
22
+ previewObject?: (objectId: string) => void;
23
+ selectedObject?: ContentObjectItem | null;
22
24
  onUpload?: (files: File[], type: string | null, collectionId?: string) => Promise<unknown>; // if defined, accept drag drop to upload
23
25
  collectionId?: string; // Important: Add collection ID to ensure uploads go to the right collection
24
26
  }
@@ -303,6 +305,8 @@ interface DocumentTableImplProps {
303
305
  onSelectionChange?: (selection: DocumentSelection) => void;
304
306
  highlightRow?: (item: ContentObjectItem) => boolean;
305
307
  rowActions?: (item: ContentObjectItem) => React.ReactNode[];
308
+ previewObject?: (objectId: string) => void;
309
+ selectedObject?: ContentObjectItem | null;
306
310
  isGridView?: boolean;
307
311
  }
308
312
  function DocumentTableImpl({
@@ -311,6 +315,8 @@ function DocumentTableImpl({
311
315
  isLoading,
312
316
  onRowClick,
313
317
  onSelectionChange,
318
+ previewObject,
319
+ selectedObject,
314
320
  isGridView,
315
321
  }: DocumentTableImplProps) {
316
322
  const selection = useOptionalDocumentSelection();
@@ -363,8 +369,8 @@ function DocumentTableImpl({
363
369
  const columns = useMemo(() => {
364
370
  // avoid rendering empty layouts
365
371
  const actualLayout = layout.length > 0 ? layout : defaultLayout;
366
- return actualLayout.map((col) => new DocumentTableColumn(col));
367
- }, [layout]);
372
+ return actualLayout.map((col) => new DocumentTableColumn(col, previewObject));
373
+ }, [layout, previewObject]);
368
374
 
369
375
  return isGridView ? (
370
376
  <DocumentGridView
@@ -372,6 +378,8 @@ function DocumentTableImpl({
372
378
  isLoading={isLoading}
373
379
  columns={columns}
374
380
  onRowClick={onRowClick}
381
+ previewObject={previewObject}
382
+ selectedObject={selectedObject}
375
383
  selection={selection}
376
384
  toggleAll={toggleAll}
377
385
  onSelectionChange={_onSelectionChange}
@@ -382,6 +390,8 @@ function DocumentTableImpl({
382
390
  isLoading={isLoading}
383
391
  columns={columns}
384
392
  onRowClick={onRowClick}
393
+ previewObject={previewObject}
394
+ selectedObject={selectedObject}
385
395
  selection={selection}
386
396
  toggleAll={toggleAll}
387
397
  onSelectionChange={_onSelectionChange}