@vertesia/ui 0.79.0 → 0.79.2

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