@vertesia/ui 1.5.0-dev.20260901.052906Z → 1.5.0-dev.20260910.051115Z

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 (563) hide show
  1. package/lib/core/components/Avatar.d.ts.map +1 -1
  2. package/lib/core/components/Avatar.js +3 -3
  3. package/lib/core/components/Avatar.js.map +1 -1
  4. package/lib/core/components/ComboBox.js +1 -1
  5. package/lib/core/components/ComboBox.js.map +1 -1
  6. package/lib/core/components/FileUpload.js +1 -1
  7. package/lib/core/components/FileUpload.js.map +1 -1
  8. package/lib/core/components/Link.js +1 -1
  9. package/lib/core/components/Link.js.map +1 -1
  10. package/lib/core/components/SelectList.js +1 -1
  11. package/lib/core/components/SelectList.js.map +1 -1
  12. package/lib/core/components/SidePanel.js +1 -1
  13. package/lib/core/components/SidePanel.js.map +1 -1
  14. package/lib/core/components/Spinner.js +1 -1
  15. package/lib/core/components/Spinner.js.map +1 -1
  16. package/lib/core/components/TagsInput.js +8 -8
  17. package/lib/core/components/TagsInput.js.map +1 -1
  18. package/lib/core/components/shadcn/MessageBox.js +1 -1
  19. package/lib/core/components/shadcn/MessageBox.js.map +1 -1
  20. package/lib/core/components/shadcn/button.js +1 -1
  21. package/lib/core/components/shadcn/button.js.map +1 -1
  22. package/lib/core/components/shadcn/card.d.ts.map +1 -1
  23. package/lib/core/components/shadcn/card.js +1 -1
  24. package/lib/core/components/shadcn/card.js.map +1 -1
  25. package/lib/core/components/shadcn/command.js +5 -5
  26. package/lib/core/components/shadcn/command.js.map +1 -1
  27. package/lib/core/components/shadcn/filters/DynamicLabel.js +1 -1
  28. package/lib/core/components/shadcn/filters/DynamicLabel.js.map +1 -1
  29. package/lib/core/components/shadcn/filters/comboBox/DateCombobox.js +3 -3
  30. package/lib/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -1
  31. package/lib/core/components/shadcn/input.js +3 -3
  32. package/lib/core/components/shadcn/input.js.map +1 -1
  33. package/lib/core/components/shadcn/modal/ConfirmModal.js +1 -1
  34. package/lib/core/components/shadcn/modal/ConfirmModal.js.map +1 -1
  35. package/lib/core/components/shadcn/modal/dialog.d.ts.map +1 -1
  36. package/lib/core/components/shadcn/modal/dialog.js +2 -2
  37. package/lib/core/components/shadcn/modal/dialog.js.map +1 -1
  38. package/lib/core/components/shadcn/overflowTabs.js +2 -2
  39. package/lib/core/components/shadcn/overflowTabs.js.map +1 -1
  40. package/lib/core/components/shadcn/popover.js +1 -1
  41. package/lib/core/components/shadcn/popover.js.map +1 -1
  42. package/lib/core/components/shadcn/radioGroup.d.ts.map +1 -1
  43. package/lib/core/components/shadcn/radioGroup.js +3 -3
  44. package/lib/core/components/shadcn/radioGroup.js.map +1 -1
  45. package/lib/core/components/shadcn/selectBox.js +1 -1
  46. package/lib/core/components/shadcn/selectBox.js.map +1 -1
  47. package/lib/core/components/shadcn/tabs.d.ts.map +1 -1
  48. package/lib/core/components/shadcn/tabs.js +5 -2
  49. package/lib/core/components/shadcn/tabs.js.map +1 -1
  50. package/lib/core/components/styles.js +1 -1
  51. package/lib/core/components/styles.js.map +1 -1
  52. package/lib/core/components/table/index.js +1 -1
  53. package/lib/core/hooks/useFetch.d.ts.map +1 -1
  54. package/lib/core/hooks/useFetch.js +2 -0
  55. package/lib/core/hooks/useFetch.js.map +1 -1
  56. package/lib/features/activity-doc/ActivityDoc.js +8 -8
  57. package/lib/features/activity-doc/ActivityDoc.js.map +1 -1
  58. package/lib/features/agent/chat/AgentChart.js +1 -1
  59. package/lib/features/agent/chat/AgentChart.js.map +1 -1
  60. package/lib/features/agent/chat/AgentRightPanel.d.ts +2 -3
  61. package/lib/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
  62. package/lib/features/agent/chat/AgentRightPanel.js +3 -3
  63. package/lib/features/agent/chat/AgentRightPanel.js.map +1 -1
  64. package/lib/features/agent/chat/AskUserWidget.d.ts.map +1 -1
  65. package/lib/features/agent/chat/AskUserWidget.js +13 -13
  66. package/lib/features/agent/chat/AskUserWidget.js.map +1 -1
  67. package/lib/features/agent/chat/DocumentPanel.d.ts +7 -7
  68. package/lib/features/agent/chat/DocumentPanel.d.ts.map +1 -1
  69. package/lib/features/agent/chat/DocumentPanel.js +6 -12
  70. package/lib/features/agent/chat/DocumentPanel.js.map +1 -1
  71. package/lib/features/agent/chat/DocumentsTab.d.ts +15 -0
  72. package/lib/features/agent/chat/DocumentsTab.d.ts.map +1 -0
  73. package/lib/features/agent/chat/DocumentsTab.js +33 -0
  74. package/lib/features/agent/chat/DocumentsTab.js.map +1 -0
  75. package/lib/features/agent/chat/JumpingDots.js +1 -1
  76. package/lib/features/agent/chat/JumpingDots.js.map +1 -1
  77. package/lib/features/agent/chat/ModernAgentConversation.js +3 -3
  78. package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
  79. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  80. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +22 -9
  81. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  82. package/lib/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js +5 -5
  83. package/lib/features/agent/chat/ModernAgentOutput/BatchProgressPanel.js.map +1 -1
  84. package/lib/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
  85. package/lib/features/agent/chat/ModernAgentOutput/Header.js +16 -11
  86. package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  87. package/lib/features/agent/chat/ModernAgentOutput/InlineSlideInPanel.js +1 -1
  88. package/lib/features/agent/chat/ModernAgentOutput/InlineSlideInPanel.js.map +1 -1
  89. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js +1 -1
  90. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
  91. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
  92. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +7 -7
  93. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  94. package/lib/features/agent/chat/ModernAgentOutput/MessagesContainer.js +1 -1
  95. package/lib/features/agent/chat/ModernAgentOutput/MessagesContainer.js.map +1 -1
  96. package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.d.ts.map +1 -1
  97. package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.js +10 -10
  98. package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.js.map +1 -1
  99. package/lib/features/agent/chat/ModernAgentOutput/SlideInPanel.js +1 -1
  100. package/lib/features/agent/chat/ModernAgentOutput/SlideInPanel.js.map +1 -1
  101. package/lib/features/agent/chat/ModernAgentOutput/SlidingMessages.d.ts.map +1 -1
  102. package/lib/features/agent/chat/ModernAgentOutput/SlidingMessages.js +1 -1
  103. package/lib/features/agent/chat/ModernAgentOutput/SlidingMessages.js.map +1 -1
  104. package/lib/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js +17 -17
  105. package/lib/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js.map +1 -1
  106. package/lib/features/agent/chat/ModernAgentOutput/StreamingMessage.js +1 -1
  107. package/lib/features/agent/chat/ModernAgentOutput/StreamingMessage.js.map +1 -1
  108. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.d.ts.map +1 -1
  109. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js +14 -2
  110. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js.map +1 -1
  111. package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
  112. package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +15 -15
  113. package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
  114. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.d.ts.map +1 -1
  115. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js +18 -0
  116. package/lib/features/agent/chat/ModernAgentOutput/requestInputMessages.js.map +1 -1
  117. package/lib/features/agent/chat/SlidingThinkingIndicator.d.ts.map +1 -1
  118. package/lib/features/agent/chat/SlidingThinkingIndicator.js +5 -2
  119. package/lib/features/agent/chat/SlidingThinkingIndicator.js.map +1 -1
  120. package/lib/features/agent/chat/VegaLiteChart.d.ts.map +1 -1
  121. package/lib/features/agent/chat/VegaLiteChart.js +6 -2
  122. package/lib/features/agent/chat/VegaLiteChart.js.map +1 -1
  123. package/lib/features/agent/chat/hooks/useDocumentPanel.d.ts +2 -2
  124. package/lib/features/agent/chat/hooks/useDocumentPanel.d.ts.map +1 -1
  125. package/lib/features/agent/chat/hooks/useDocumentPanel.js +0 -18
  126. package/lib/features/agent/chat/hooks/useDocumentPanel.js.map +1 -1
  127. package/lib/features/errors/RowErrorBoundary.js +1 -1
  128. package/lib/features/errors/RowErrorBoundary.js.map +1 -1
  129. package/lib/features/facets/AgentRunnerFacetsNav.js +1 -1
  130. package/lib/features/facets/AgentRunnerFacetsNav.js.map +1 -1
  131. package/lib/features/facets/utils/VInteractionFacet.d.ts +3 -5
  132. package/lib/features/facets/utils/VInteractionFacet.d.ts.map +1 -1
  133. package/lib/features/facets/utils/VInteractionFacet.js +10 -23
  134. package/lib/features/facets/utils/VInteractionFacet.js.map +1 -1
  135. package/lib/features/facets/utils/VUserFacet.js +1 -1
  136. package/lib/features/facets/utils/VUserFacet.js.map +1 -1
  137. package/lib/features/layout/GenericPageNavHeader.d.ts.map +1 -1
  138. package/lib/features/layout/GenericPageNavHeader.js +4 -1
  139. package/lib/features/layout/GenericPageNavHeader.js.map +1 -1
  140. package/lib/features/layout/NotFoundView.js +1 -1
  141. package/lib/features/layout/NotFoundView.js.map +1 -1
  142. package/lib/features/magic-pdf/AnnotatedImageSlider.js +4 -12
  143. package/lib/features/magic-pdf/AnnotatedImageSlider.js.map +1 -1
  144. package/lib/features/magic-pdf/ExtractedContentView.js +4 -4
  145. package/lib/features/magic-pdf/ExtractedContentView.js.map +1 -1
  146. package/lib/features/magic-pdf/MagicPdfView.js +1 -1
  147. package/lib/features/magic-pdf/MagicPdfView.js.map +1 -1
  148. package/lib/features/oauth/McpConnectionsButton.d.ts.map +1 -1
  149. package/lib/features/oauth/McpConnectionsButton.js +4 -1
  150. package/lib/features/oauth/McpConnectionsButton.js.map +1 -1
  151. package/lib/features/oauth/McpConnectionsDialog.d.ts.map +1 -1
  152. package/lib/features/oauth/McpConnectionsDialog.js +3 -2
  153. package/lib/features/oauth/McpConnectionsDialog.js.map +1 -1
  154. package/lib/features/oauth/useMcpConnections.d.ts +6 -7
  155. package/lib/features/oauth/useMcpConnections.d.ts.map +1 -1
  156. package/lib/features/oauth/useMcpConnections.js +27 -20
  157. package/lib/features/oauth/useMcpConnections.js.map +1 -1
  158. package/lib/features/pdf-viewer/PdfPageRenderer.js +2 -2
  159. package/lib/features/pdf-viewer/PdfPageRenderer.js.map +1 -1
  160. package/lib/features/pdf-viewer/PdfPageSlider.js +3 -3
  161. package/lib/features/pdf-viewer/PdfPageSlider.js.map +1 -1
  162. package/lib/features/pdf-viewer/SimplePdfViewer.js +1 -1
  163. package/lib/features/pdf-viewer/SimplePdfViewer.js.map +1 -1
  164. package/lib/features/permissions/UserPermissionsProvider.d.ts +2 -1
  165. package/lib/features/permissions/UserPermissionsProvider.d.ts.map +1 -1
  166. package/lib/features/permissions/UserPermissionsProvider.js +35 -22
  167. package/lib/features/permissions/UserPermissionsProvider.js.map +1 -1
  168. package/lib/features/permissions/useRoleMappings.d.ts +19 -0
  169. package/lib/features/permissions/useRoleMappings.d.ts.map +1 -0
  170. package/lib/features/permissions/useRoleMappings.js +87 -0
  171. package/lib/features/permissions/useRoleMappings.js.map +1 -0
  172. package/lib/features/store/collections/SelectCollection.js +1 -1
  173. package/lib/features/store/collections/SelectCollection.js.map +1 -1
  174. package/lib/features/store/objects/DocumentPreviewPanel.d.ts.map +1 -1
  175. package/lib/features/store/objects/DocumentPreviewPanel.js +9 -9
  176. package/lib/features/store/objects/DocumentPreviewPanel.js.map +1 -1
  177. package/lib/features/store/objects/DocumentTable.js +1 -1
  178. package/lib/features/store/objects/DocumentTable.js.map +1 -1
  179. package/lib/features/store/objects/components/DocumentIcon.js +2 -2
  180. package/lib/features/store/objects/components/DocumentIcon.js.map +1 -1
  181. package/lib/features/store/objects/components/DocumentInput.js +1 -1
  182. package/lib/features/store/objects/components/DocumentInput.js.map +1 -1
  183. package/lib/features/store/objects/components/PropertiesEditorModal.js +1 -1
  184. package/lib/features/store/objects/components/PropertiesEditorModal.js.map +1 -1
  185. package/lib/features/store/objects/components/SaveVersionConfirmModal.js +1 -1
  186. package/lib/features/store/objects/components/SaveVersionConfirmModal.js.map +1 -1
  187. package/lib/features/store/objects/layout/documentLayout.d.ts.map +1 -1
  188. package/lib/features/store/objects/layout/documentLayout.js +2 -2
  189. package/lib/features/store/objects/layout/documentLayout.js.map +1 -1
  190. package/lib/features/store/objects/selection/SelectionActions.js +1 -1
  191. package/lib/features/store/objects/selection/SelectionActions.js.map +1 -1
  192. package/lib/features/store/types/IntakePolicyEditor.d.ts +10 -1
  193. package/lib/features/store/types/IntakePolicyEditor.d.ts.map +1 -1
  194. package/lib/features/store/types/IntakePolicyEditor.js +29 -19
  195. package/lib/features/store/types/IntakePolicyEditor.js.map +1 -1
  196. package/lib/features/store/types/IntakePolicyForm.d.ts +1 -1
  197. package/lib/features/store/types/IntakePolicyForm.d.ts.map +1 -1
  198. package/lib/features/store/types/IntakePolicyForm.js +5 -3
  199. package/lib/features/store/types/IntakePolicyForm.js.map +1 -1
  200. package/lib/features/store/types/SelectContentTypeModal.js +1 -1
  201. package/lib/features/store/types/SelectContentTypeModal.js.map +1 -1
  202. package/lib/features/store/types/TypeRegistry.d.ts +10 -5
  203. package/lib/features/store/types/TypeRegistry.d.ts.map +1 -1
  204. package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts +10 -5
  205. package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts.map +1 -1
  206. package/lib/features/user/UserAvatar.js +2 -2
  207. package/lib/features/user/UserAvatar.js.map +1 -1
  208. package/lib/features/user/UserInfo.d.ts.map +1 -1
  209. package/lib/features/user/UserInfo.js +7 -7
  210. package/lib/features/user/UserInfo.js.map +1 -1
  211. package/lib/features/utils/index.d.ts +1 -0
  212. package/lib/features/utils/index.d.ts.map +1 -1
  213. package/lib/features/utils/index.js +1 -0
  214. package/lib/features/utils/index.js.map +1 -1
  215. package/lib/features/utils/interaction.d.ts +55 -0
  216. package/lib/features/utils/interaction.d.ts.map +1 -0
  217. package/lib/features/utils/interaction.js +77 -0
  218. package/lib/features/utils/interaction.js.map +1 -0
  219. package/lib/features/views/ViewResults.js +2 -2
  220. package/lib/features/views/ViewResults.js.map +1 -1
  221. package/lib/i18n/locales/ar.json +17 -1
  222. package/lib/i18n/locales/de.json +13 -1
  223. package/lib/i18n/locales/en.json +13 -1
  224. package/lib/i18n/locales/es.json +13 -1
  225. package/lib/i18n/locales/fr.json +13 -1
  226. package/lib/i18n/locales/it.json +13 -1
  227. package/lib/i18n/locales/ja.json +13 -1
  228. package/lib/i18n/locales/ko.json +13 -1
  229. package/lib/i18n/locales/pt.json +13 -1
  230. package/lib/i18n/locales/ru.json +15 -1
  231. package/lib/i18n/locales/tr.json +13 -1
  232. package/lib/i18n/locales/zh-TW.json +13 -1
  233. package/lib/i18n/locales/zh.json +13 -1
  234. package/lib/layout/FullHeightLayout.js +2 -2
  235. package/lib/layout/FullHeightLayout.js.map +1 -1
  236. package/lib/layout/Navbar.js +4 -4
  237. package/lib/layout/Navbar.js.map +1 -1
  238. package/lib/layout/Sidebar.js +1 -1
  239. package/lib/layout/Sidebar.js.map +1 -1
  240. package/lib/router/NestedNavigationContext.d.ts +3 -1
  241. package/lib/router/NestedNavigationContext.d.ts.map +1 -1
  242. package/lib/router/NestedNavigationContext.js +2 -2
  243. package/lib/router/NestedNavigationContext.js.map +1 -1
  244. package/lib/session/UserSessionProvider.d.ts.map +1 -1
  245. package/lib/session/UserSessionProvider.js +2 -13
  246. package/lib/session/UserSessionProvider.js.map +1 -1
  247. package/lib/session/auth/authState.d.ts +13 -0
  248. package/lib/session/auth/authState.d.ts.map +1 -0
  249. package/lib/session/auth/authState.js +37 -0
  250. package/lib/session/auth/authState.js.map +1 -0
  251. package/lib/session/auth/domainRouting.d.ts +39 -0
  252. package/lib/session/auth/domainRouting.d.ts.map +1 -1
  253. package/lib/session/auth/domainRouting.js +85 -0
  254. package/lib/session/auth/domainRouting.js.map +1 -1
  255. package/lib/session/auth/useAuthState.d.ts +4 -7
  256. package/lib/session/auth/useAuthState.d.ts.map +1 -1
  257. package/lib/session/auth/useAuthState.js +5 -41
  258. package/lib/session/auth/useAuthState.js.map +1 -1
  259. package/lib/session/index.d.ts +1 -0
  260. package/lib/session/index.d.ts.map +1 -1
  261. package/lib/session/index.js +2 -0
  262. package/lib/session/index.js.map +1 -1
  263. package/lib/shell/SplashScreen.d.ts +1 -1
  264. package/lib/shell/SplashScreen.d.ts.map +1 -1
  265. package/lib/shell/SplashScreen.js +6 -2
  266. package/lib/shell/SplashScreen.js.map +1 -1
  267. package/lib/shell/VertesiaShell.js +1 -1
  268. package/lib/shell/VertesiaShell.js.map +1 -1
  269. package/lib/shell/apps/AppProjectSelector.js +1 -1
  270. package/lib/shell/apps/AppProjectSelector.js.map +1 -1
  271. package/lib/shell/apps/StandaloneApp.js +2 -2
  272. package/lib/shell/apps/StandaloneApp.js.map +1 -1
  273. package/lib/shell/login/SignInPrimitives.js +2 -2
  274. package/lib/shell/login/SignInPrimitives.js.map +1 -1
  275. package/lib/shell/login/SigninScreen.js +1 -1
  276. package/lib/shell/login/SigninScreen.js.map +1 -1
  277. package/lib/shell/login/SignupForm.js +1 -1
  278. package/lib/shell/login/SignupForm.js.map +1 -1
  279. package/lib/shell/login/TerminalLogin.js +2 -2
  280. package/lib/shell/login/TerminalLogin.js.map +1 -1
  281. package/lib/shell/login/UserInfo.d.ts.map +1 -1
  282. package/lib/shell/login/UserInfo.js +1 -1
  283. package/lib/shell/login/UserInfo.js.map +1 -1
  284. package/lib/shell/login/UserSessionMenu.js +1 -1
  285. package/lib/shell/login/UserSessionMenu.js.map +1 -1
  286. package/lib/vertesia-ui-core.js +7 -7
  287. package/lib/vertesia-ui-core.js.map +1 -1
  288. package/lib/vertesia-ui-features.js +179 -182
  289. package/lib/vertesia-ui-features.js.map +1 -1
  290. package/lib/vertesia-ui-i18n.BfN7iOHb.chunk.js +5 -0
  291. package/lib/vertesia-ui-i18n.BfN7iOHb.chunk.js.map +1 -0
  292. package/lib/vertesia-ui-i18n.BjH2zEZw.chunk.js +5 -0
  293. package/lib/vertesia-ui-i18n.BjH2zEZw.chunk.js.map +1 -0
  294. package/lib/vertesia-ui-i18n.BjSwAZXl.chunk.js +5 -0
  295. package/lib/vertesia-ui-i18n.BjSwAZXl.chunk.js.map +1 -0
  296. package/lib/vertesia-ui-i18n.C7PUm5Au.chunk.js +5 -0
  297. package/lib/vertesia-ui-i18n.C7PUm5Au.chunk.js.map +1 -0
  298. package/lib/vertesia-ui-i18n.CF_1mUS5.chunk.js +5 -0
  299. package/lib/vertesia-ui-i18n.CF_1mUS5.chunk.js.map +1 -0
  300. package/lib/vertesia-ui-i18n.ChfUl3_-.chunk.js +5 -0
  301. package/lib/vertesia-ui-i18n.ChfUl3_-.chunk.js.map +1 -0
  302. package/lib/vertesia-ui-i18n.D-Sk-5d1.chunk.js +5 -0
  303. package/lib/vertesia-ui-i18n.D-Sk-5d1.chunk.js.map +1 -0
  304. package/lib/vertesia-ui-i18n.D4rnu1_S.chunk.js +5 -0
  305. package/lib/vertesia-ui-i18n.D4rnu1_S.chunk.js.map +1 -0
  306. package/lib/vertesia-ui-i18n.DDf0-laK.chunk.js +5 -0
  307. package/lib/vertesia-ui-i18n.DDf0-laK.chunk.js.map +1 -0
  308. package/lib/vertesia-ui-i18n.DN79y06J.chunk.js +5 -0
  309. package/lib/vertesia-ui-i18n.DN79y06J.chunk.js.map +1 -0
  310. package/lib/vertesia-ui-i18n.DWLIciYQ.chunk.js +5 -0
  311. package/lib/vertesia-ui-i18n.DWLIciYQ.chunk.js.map +1 -0
  312. package/lib/vertesia-ui-i18n.DvF_YaAJ.chunk.js +5 -0
  313. package/lib/vertesia-ui-i18n.DvF_YaAJ.chunk.js.map +1 -0
  314. package/lib/vertesia-ui-i18n.js +2 -2
  315. package/lib/vertesia-ui-layout.js +1 -1
  316. package/lib/vertesia-ui-layout.js.map +1 -1
  317. package/lib/vertesia-ui-rich-text.js +24 -24
  318. package/lib/vertesia-ui-rich-text.js.map +1 -1
  319. package/lib/vertesia-ui-router.js +1 -1
  320. package/lib/vertesia-ui-router.js.map +1 -1
  321. package/lib/vertesia-ui-session.js +1 -1
  322. package/lib/vertesia-ui-session.js.map +1 -1
  323. package/lib/vertesia-ui-shell.js +3 -3
  324. package/lib/vertesia-ui-shell.js.map +1 -1
  325. package/lib/vertesia-ui-widgets.js +54 -54
  326. package/lib/vertesia-ui-widgets.js.map +1 -1
  327. package/lib/widgets/Progress.js +1 -1
  328. package/lib/widgets/Progress.js.map +1 -1
  329. package/lib/widgets/form/Form.js +2 -2
  330. package/lib/widgets/form/Form.js.map +1 -1
  331. package/lib/widgets/form/fields.js +2 -2
  332. package/lib/widgets/form/fields.js.map +1 -1
  333. package/lib/widgets/json-view/JSONView.js +1 -1
  334. package/lib/widgets/json-view/JSONView.js.map +1 -1
  335. package/lib/widgets/markdown/MermaidDiagram.js +1 -1
  336. package/lib/widgets/markdown/MermaidDiagram.js.map +1 -1
  337. package/lib/widgets/markdown/remarkDirectiveHandler.d.ts +7 -2
  338. package/lib/widgets/markdown/remarkDirectiveHandler.d.ts.map +1 -1
  339. package/lib/widgets/markdown/remarkDirectiveHandler.js +19 -4
  340. package/lib/widgets/markdown/remarkDirectiveHandler.js.map +1 -1
  341. package/lib/widgets/monacoEditor/MonacoEditor.d.ts.map +1 -1
  342. package/lib/widgets/monacoEditor/MonacoEditor.js +4 -2
  343. package/lib/widgets/monacoEditor/MonacoEditor.js.map +1 -1
  344. package/lib/widgets/monacoEditor/index.d.ts +1 -0
  345. package/lib/widgets/monacoEditor/index.d.ts.map +1 -1
  346. package/lib/widgets/monacoEditor/index.js +1 -0
  347. package/lib/widgets/monacoEditor/index.js.map +1 -1
  348. package/lib/widgets/monacoEditor/loadMonaco.d.ts +45 -0
  349. package/lib/widgets/monacoEditor/loadMonaco.d.ts.map +1 -0
  350. package/lib/widgets/monacoEditor/loadMonaco.js +62 -0
  351. package/lib/widgets/monacoEditor/loadMonaco.js.map +1 -0
  352. package/lib/widgets/properties/PropertiesView.js +1 -1
  353. package/lib/widgets/properties/PropertiesView.js.map +1 -1
  354. package/lib/widgets/schema-editor/editor/Editable.js +2 -2
  355. package/lib/widgets/schema-editor/editor/Editable.js.map +1 -1
  356. package/lib/widgets/schema-editor/editor/PropertyEditor.js +1 -1
  357. package/lib/widgets/schema-editor/editor/PropertyEditor.js.map +1 -1
  358. package/lib/widgets/schema-editor/editor/SchemaEditor.js +2 -2
  359. package/lib/widgets/schema-editor/editor/SchemaEditor.js.map +1 -1
  360. package/lib/widgets/upload/DropZone.js +1 -1
  361. package/lib/widgets/upload/DropZone.js.map +1 -1
  362. package/lib/widgets/upload/UploadResultCategory.d.ts +1 -1
  363. package/lib/widgets/upload/UploadResultCategory.d.ts.map +1 -1
  364. package/lib/widgets/upload/UploadResultCategory.js +3 -3
  365. package/lib/widgets/upload/UploadResultCategory.js.map +1 -1
  366. package/lib/widgets/upload/UploadSummary.js +1 -1
  367. package/lib/widgets/upload/UploadSummary.js.map +1 -1
  368. package/lib/widgets/xml-viewer/components/XMLViewer.d.ts.map +1 -1
  369. package/lib/widgets/xml-viewer/components/XMLViewer.js +7 -3
  370. package/lib/widgets/xml-viewer/components/XMLViewer.js.map +1 -1
  371. package/lib/widgets/xml-viewer/hooks/useCollapsible.d.ts +1 -1
  372. package/lib/widgets/xml-viewer/hooks/useXMLViewer.d.ts +11 -13
  373. package/lib/widgets/xml-viewer/hooks/useXMLViewer.d.ts.map +1 -1
  374. package/lib/widgets/xml-viewer/hooks/useXMLViewer.js +41 -14
  375. package/lib/widgets/xml-viewer/hooks/useXMLViewer.js.map +1 -1
  376. package/package.json +7 -7
  377. package/src/__tests__/contrast.test.ts +1 -0
  378. package/src/core/components/Avatar.tsx +3 -3
  379. package/src/core/components/ComboBox.tsx +1 -1
  380. package/src/core/components/FileUpload.tsx +4 -4
  381. package/src/core/components/Link.tsx +1 -1
  382. package/src/core/components/SelectList.tsx +1 -1
  383. package/src/core/components/SidePanel.tsx +1 -1
  384. package/src/core/components/Spinner.tsx +1 -1
  385. package/src/core/components/TagsInput.tsx +8 -8
  386. package/src/core/components/shadcn/MessageBox.tsx +1 -1
  387. package/src/core/components/shadcn/button.tsx +1 -1
  388. package/src/core/components/shadcn/card.tsx +1 -3
  389. package/src/core/components/shadcn/command.tsx +5 -5
  390. package/src/core/components/shadcn/filters/DynamicLabel.tsx +1 -1
  391. package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +3 -3
  392. package/src/core/components/shadcn/input.tsx +3 -3
  393. package/src/core/components/shadcn/modal/ConfirmModal.tsx +3 -3
  394. package/src/core/components/shadcn/modal/dialog.tsx +2 -4
  395. package/src/core/components/shadcn/overflowTabs.tsx +2 -2
  396. package/src/core/components/shadcn/popover.tsx +1 -1
  397. package/src/core/components/shadcn/radioGroup.tsx +5 -7
  398. package/src/core/components/shadcn/selectBox.tsx +1 -1
  399. package/src/core/components/shadcn/tabs.tsx +4 -2
  400. package/src/core/components/styles.ts +1 -1
  401. package/src/core/components/table/index.tsx +1 -1
  402. package/src/core/hooks/useFetch.test.ts +20 -0
  403. package/src/core/hooks/useFetch.ts +2 -0
  404. package/src/css/base.css +1 -1
  405. package/src/css/color.css +4 -0
  406. package/src/css/theme.css +1 -0
  407. package/src/css/typography.css +2 -2
  408. package/src/features/activity-doc/ActivityDoc.tsx +11 -11
  409. package/src/features/agent/chat/AgentChart.tsx +1 -1
  410. package/src/features/agent/chat/AgentRightPanel.tsx +4 -8
  411. package/src/features/agent/chat/AskUserWidget.tsx +19 -23
  412. package/src/features/agent/chat/DocumentPanel.tsx +39 -48
  413. package/src/features/agent/chat/DocumentsTab.test.tsx +87 -0
  414. package/src/features/agent/chat/DocumentsTab.tsx +124 -0
  415. package/src/features/agent/chat/JumpingDots.tsx +3 -3
  416. package/src/features/agent/chat/ModernAgentConversation.test.tsx +0 -1
  417. package/src/features/agent/chat/ModernAgentConversation.tsx +3 -5
  418. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +60 -1
  419. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +44 -24
  420. package/src/features/agent/chat/ModernAgentOutput/BatchProgressPanel.tsx +12 -12
  421. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +28 -15
  422. package/src/features/agent/chat/ModernAgentOutput/InlineSlideInPanel.tsx +4 -4
  423. package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +2 -2
  424. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +7 -12
  425. package/src/features/agent/chat/ModernAgentOutput/MessagesContainer.tsx +1 -1
  426. package/src/features/agent/chat/ModernAgentOutput/PlanPanel.tsx +16 -22
  427. package/src/features/agent/chat/ModernAgentOutput/SlideInPanel.tsx +4 -4
  428. package/src/features/agent/chat/ModernAgentOutput/SlidingMessages.tsx +2 -4
  429. package/src/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.tsx +21 -21
  430. package/src/features/agent/chat/ModernAgentOutput/StreamingMessage.tsx +4 -4
  431. package/src/features/agent/chat/ModernAgentOutput/SummaryConversation.ts +16 -1
  432. package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +19 -40
  433. package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.test.ts +41 -0
  434. package/src/features/agent/chat/ModernAgentOutput/requestInputMessages.ts +19 -0
  435. package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +93 -0
  436. package/src/features/agent/chat/SlidingThinkingIndicator.tsx +5 -2
  437. package/src/features/agent/chat/VegaLiteChart.tsx +6 -2
  438. package/src/features/agent/chat/hooks/useDocumentPanel.test.tsx +33 -0
  439. package/src/features/agent/chat/hooks/useDocumentPanel.ts +3 -20
  440. package/src/features/errors/RowErrorBoundary.tsx +1 -1
  441. package/src/features/facets/AgentRunnerFacetsNav.tsx +1 -1
  442. package/src/features/facets/utils/VInteractionFacet.tsx +22 -34
  443. package/src/features/facets/utils/VUserFacet.tsx +1 -1
  444. package/src/features/layout/GenericPageNavHeader.tsx +9 -1
  445. package/src/features/layout/NotFoundView.tsx +1 -1
  446. package/src/features/magic-pdf/AnnotatedImageSlider.tsx +8 -16
  447. package/src/features/magic-pdf/ExtractedContentView.tsx +4 -4
  448. package/src/features/magic-pdf/MagicPdfView.tsx +1 -1
  449. package/src/features/oauth/McpConnectionsButton.test.tsx +79 -8
  450. package/src/features/oauth/McpConnectionsButton.tsx +6 -3
  451. package/src/features/oauth/McpConnectionsDialog.tsx +9 -3
  452. package/src/features/oauth/useMcpConnections.ts +33 -27
  453. package/src/features/pdf-viewer/PdfPageRenderer.tsx +2 -2
  454. package/src/features/pdf-viewer/PdfPageSlider.tsx +4 -4
  455. package/src/features/pdf-viewer/SimplePdfViewer.tsx +1 -1
  456. package/src/features/permissions/UserPermissionsProvider.test.tsx +172 -0
  457. package/src/features/permissions/UserPermissionsProvider.tsx +68 -21
  458. package/src/features/permissions/useRoleMappings.ts +105 -0
  459. package/src/features/store/collections/SelectCollection.tsx +1 -1
  460. package/src/features/store/objects/DocumentPreviewPanel.tsx +43 -53
  461. package/src/features/store/objects/DocumentTable.tsx +2 -2
  462. package/src/features/store/objects/components/DocumentIcon.tsx +4 -4
  463. package/src/features/store/objects/components/DocumentInput.tsx +3 -3
  464. package/src/features/store/objects/components/PropertiesEditorModal.tsx +2 -2
  465. package/src/features/store/objects/components/SaveVersionConfirmModal.tsx +2 -2
  466. package/src/features/store/objects/layout/documentLayout.tsx +2 -4
  467. package/src/features/store/objects/selection/SelectionActions.tsx +1 -1
  468. package/src/features/store/types/IntakePolicyEditor.tsx +70 -36
  469. package/src/features/store/types/IntakePolicyForm.tsx +11 -3
  470. package/src/features/store/types/SelectContentTypeModal.tsx +1 -1
  471. package/src/features/user/UserAvatar.tsx +3 -3
  472. package/src/features/user/UserInfo.tsx +11 -16
  473. package/src/features/utils/index.ts +1 -0
  474. package/src/features/utils/interaction.test.tsx +93 -0
  475. package/src/features/utils/interaction.tsx +125 -0
  476. package/src/features/views/ViewResults.tsx +3 -3
  477. package/src/i18n/locales/ar.json +17 -1
  478. package/src/i18n/locales/de.json +13 -1
  479. package/src/i18n/locales/en.json +13 -1
  480. package/src/i18n/locales/es.json +13 -1
  481. package/src/i18n/locales/fr.json +13 -1
  482. package/src/i18n/locales/it.json +13 -1
  483. package/src/i18n/locales/ja.json +13 -1
  484. package/src/i18n/locales/ko.json +13 -1
  485. package/src/i18n/locales/pt.json +13 -1
  486. package/src/i18n/locales/ru.json +15 -1
  487. package/src/i18n/locales/tr.json +13 -1
  488. package/src/i18n/locales/zh-TW.json +13 -1
  489. package/src/i18n/locales/zh.json +13 -1
  490. package/src/layout/FullHeightLayout.tsx +2 -2
  491. package/src/layout/Navbar.tsx +5 -5
  492. package/src/layout/Sidebar.tsx +1 -1
  493. package/src/router/NestedNavigationContext.test.tsx +54 -0
  494. package/src/router/NestedNavigationContext.tsx +9 -2
  495. package/src/session/UserSessionProvider.tsx +2 -15
  496. package/src/session/auth/authState.test.ts +35 -0
  497. package/src/session/auth/authState.ts +42 -0
  498. package/src/session/auth/domainRouting.test.ts +169 -1
  499. package/src/session/auth/domainRouting.ts +89 -0
  500. package/src/session/auth/useAuthState.ts +5 -49
  501. package/src/session/index.ts +6 -0
  502. package/src/shell/SplashScreen.test.tsx +22 -0
  503. package/src/shell/SplashScreen.tsx +6 -2
  504. package/src/shell/VertesiaShell.tsx +1 -1
  505. package/src/shell/apps/AppProjectSelector.tsx +1 -1
  506. package/src/shell/apps/StandaloneApp.tsx +9 -9
  507. package/src/shell/login/SignInPrimitives.tsx +2 -2
  508. package/src/shell/login/SigninScreen.tsx +1 -1
  509. package/src/shell/login/SignupForm.tsx +2 -2
  510. package/src/shell/login/TerminalLogin.tsx +5 -5
  511. package/src/shell/login/UserInfo.tsx +2 -5
  512. package/src/shell/login/UserSessionMenu.tsx +2 -2
  513. package/src/widgets/Progress.tsx +2 -2
  514. package/src/widgets/form/Form.tsx +4 -4
  515. package/src/widgets/form/fields.tsx +2 -2
  516. package/src/widgets/json-view/JSONView.tsx +1 -6
  517. package/src/widgets/markdown/ArtifactEditingSurface.test.tsx +33 -29
  518. package/src/widgets/markdown/MarkdownRenderer.test.tsx +52 -0
  519. package/src/widgets/markdown/MermaidDiagram.tsx +2 -2
  520. package/src/widgets/markdown/remarkDirectiveHandler.ts +21 -5
  521. package/src/widgets/monacoEditor/MonacoEditor.tsx +4 -2
  522. package/src/widgets/monacoEditor/index.ts +1 -0
  523. package/src/widgets/monacoEditor/loadMonaco.test.ts +63 -0
  524. package/src/widgets/monacoEditor/loadMonaco.ts +70 -0
  525. package/src/widgets/properties/PropertiesView.tsx +1 -1
  526. package/src/widgets/schema-editor/editor/Editable.tsx +2 -2
  527. package/src/widgets/schema-editor/editor/PropertyEditor.tsx +1 -1
  528. package/src/widgets/schema-editor/editor/SchemaEditor.tsx +2 -2
  529. package/src/widgets/upload/DropZone.tsx +1 -1
  530. package/src/widgets/upload/UploadResultCategory.tsx +7 -7
  531. package/src/widgets/upload/UploadSummary.tsx +4 -4
  532. package/src/widgets/xml-viewer/components/XMLViewer.tsx +7 -3
  533. package/src/widgets/xml-viewer/hooks/useXMLViewer.test.ts +60 -7
  534. package/src/widgets/xml-viewer/hooks/useXMLViewer.ts +70 -16
  535. package/lib/features/agent/chat/DocumentTabBar.d.ts +0 -9
  536. package/lib/features/agent/chat/DocumentTabBar.d.ts.map +0 -1
  537. package/lib/features/agent/chat/DocumentTabBar.js +0 -9
  538. package/lib/features/agent/chat/DocumentTabBar.js.map +0 -1
  539. package/lib/vertesia-ui-i18n.BJBGsq-8.chunk.js +0 -5
  540. package/lib/vertesia-ui-i18n.BJBGsq-8.chunk.js.map +0 -1
  541. package/lib/vertesia-ui-i18n.BY5YG5cX.chunk.js +0 -5
  542. package/lib/vertesia-ui-i18n.BY5YG5cX.chunk.js.map +0 -1
  543. package/lib/vertesia-ui-i18n.Bd5_1BXO.chunk.js +0 -5
  544. package/lib/vertesia-ui-i18n.Bd5_1BXO.chunk.js.map +0 -1
  545. package/lib/vertesia-ui-i18n.Bvwej2HH.chunk.js +0 -5
  546. package/lib/vertesia-ui-i18n.Bvwej2HH.chunk.js.map +0 -1
  547. package/lib/vertesia-ui-i18n.CMT3f4gf.chunk.js +0 -5
  548. package/lib/vertesia-ui-i18n.CMT3f4gf.chunk.js.map +0 -1
  549. package/lib/vertesia-ui-i18n.D56DNPJW.chunk.js +0 -5
  550. package/lib/vertesia-ui-i18n.D56DNPJW.chunk.js.map +0 -1
  551. package/lib/vertesia-ui-i18n.DDzKLNx6.chunk.js +0 -5
  552. package/lib/vertesia-ui-i18n.DDzKLNx6.chunk.js.map +0 -1
  553. package/lib/vertesia-ui-i18n.D_Am1LpF.chunk.js +0 -5
  554. package/lib/vertesia-ui-i18n.D_Am1LpF.chunk.js.map +0 -1
  555. package/lib/vertesia-ui-i18n.DrZizgGV.chunk.js +0 -5
  556. package/lib/vertesia-ui-i18n.DrZizgGV.chunk.js.map +0 -1
  557. package/lib/vertesia-ui-i18n.DwHsq86z.chunk.js +0 -5
  558. package/lib/vertesia-ui-i18n.DwHsq86z.chunk.js.map +0 -1
  559. package/lib/vertesia-ui-i18n.PLpo0Bbz.chunk.js +0 -5
  560. package/lib/vertesia-ui-i18n.PLpo0Bbz.chunk.js.map +0 -1
  561. package/lib/vertesia-ui-i18n.xVbXALqz.chunk.js +0 -5
  562. package/lib/vertesia-ui-i18n.xVbXALqz.chunk.js.map +0 -1
  563. package/src/features/agent/chat/DocumentTabBar.tsx +0 -41
@@ -326,9 +326,7 @@ function ImageTypeButton({ type, currentType, onClick, icon, tooltip }: ImageTyp
326
326
  aria-pressed={isSelected}
327
327
  className={clsx(
328
328
  'p-1 rounded cursor-pointer transition-colors',
329
- isSelected
330
- ? 'text-primary bg-primary/10'
331
- : 'text-muted-foreground hover:text-foreground hover:bg-muted',
329
+ isSelected ? 'text-primary bg-primary/10' : 'text-muted hover:text-foreground hover:bg-muted',
332
330
  )}
333
331
  onClick={onClick}
334
332
  >
@@ -355,25 +353,21 @@ function ZoomControls({ zoom, onZoomIn, onZoomOut, onFitToView, canZoomIn, canZo
355
353
  variant="unstyled"
356
354
  className={clsx(
357
355
  'p-1 rounded cursor-pointer transition-colors',
358
- canZoomOut
359
- ? 'text-muted-foreground hover:text-foreground hover:bg-muted'
360
- : 'text-muted-foreground/40 cursor-not-allowed',
356
+ canZoomOut ? 'text-muted hover:text-foreground hover:bg-muted' : 'text-muted/40 cursor-not-allowed',
361
357
  )}
362
358
  onClick={onZoomOut}
363
359
  disabled={!canZoomOut}
364
360
  >
365
361
  <Minus className="size-4" />
366
362
  </Button>
367
- <span className="text-xs text-muted-foreground min-w-[32px] text-center">{zoom}%</span>
363
+ <span className="text-xs text-muted min-w-[32px] text-center">{zoom}%</span>
368
364
  <Button
369
365
  title={t('pdf.zoomIn')}
370
366
  tooltipPlacement="bottom"
371
367
  variant="unstyled"
372
368
  className={clsx(
373
369
  'p-1 rounded cursor-pointer transition-colors',
374
- canZoomIn
375
- ? 'text-muted-foreground hover:text-foreground hover:bg-muted'
376
- : 'text-muted-foreground/40 cursor-not-allowed',
370
+ canZoomIn ? 'text-muted hover:text-foreground hover:bg-muted' : 'text-muted/40 cursor-not-allowed',
377
371
  )}
378
372
  onClick={onZoomIn}
379
373
  disabled={!canZoomIn}
@@ -386,9 +380,7 @@ function ZoomControls({ zoom, onZoomIn, onZoomOut, onFitToView, canZoomIn, canZo
386
380
  variant="unstyled"
387
381
  className={clsx(
388
382
  'p-1 rounded cursor-pointer transition-colors',
389
- zoom !== DEFAULT_ZOOM
390
- ? 'text-muted-foreground hover:text-foreground hover:bg-muted'
391
- : 'text-muted-foreground/40',
383
+ zoom !== DEFAULT_ZOOM ? 'text-muted hover:text-foreground hover:bg-muted' : 'text-muted/40',
392
384
  )}
393
385
  onClick={onFitToView}
394
386
  >
@@ -431,10 +423,10 @@ function PageThumbnail({ pageNumber, currentPage, aspectRatio, zoom, url, onSele
431
423
  {url ? (
432
424
  <img src={url} alt={`Page ${pageNumber}`} className="w-full" />
433
425
  ) : (
434
- <Loader2 className="w-6 h-6 animate-spin text-muted-foreground" />
426
+ <Loader2 className="w-6 h-6 animate-spin text-muted" />
435
427
  )}
436
428
  </Button>
437
- <Center className="text-sm text-muted-foreground pt-1 font-semibold">{pageNumber}</Center>
429
+ <Center className="text-sm text-muted pt-1 font-semibold">{pageNumber}</Center>
438
430
  </div>
439
431
  );
440
432
  }
@@ -479,7 +471,7 @@ function PageNavigator({ currentPage, totalPages, onChange }: PageNavigatorProps
479
471
  };
480
472
 
481
473
  return (
482
- <div className="flex items-center gap-1 text-xs text-muted-foreground">
474
+ <div className="flex items-center gap-1 text-xs text-muted">
483
475
  <span>{t('pdf.page')}</span>
484
476
  <input
485
477
  ref={inputRef}
@@ -7,7 +7,7 @@ import type { ViewType } from './types';
7
7
  function LoadingSpinner({ className }: { className?: string }) {
8
8
  return (
9
9
  <div className={`flex items-center justify-center ${className || ''}`}>
10
- <Loader2 className="w-6 h-6 animate-spin text-gray-400" />
10
+ <Loader2 className="w-6 h-6 animate-spin text-muted" />
11
11
  </div>
12
12
  );
13
13
  }
@@ -61,7 +61,7 @@ function JsonPageLayoutView({ pageNumber }: JsonPageLayoutViewProps) {
61
61
  }
62
62
 
63
63
  if (error) {
64
- return <div className="px-4 py-2 text-red-500 text-sm">{error}</div>;
64
+ return <div className="px-4 py-2 text-destructive text-sm">{error}</div>;
65
65
  }
66
66
 
67
67
  return content ? <JSONCode className="w-full" data={content} /> : null;
@@ -96,13 +96,13 @@ function MarkdownPageView({ pageNumber }: MarkdownPageViewProps) {
96
96
  return (
97
97
  <div className="h-full flex flex-col items-center justify-center gap-2">
98
98
  <LoadingSpinner />
99
- <span className="text-sm text-muted-foreground">Loading...</span>
99
+ <span className="text-sm text-muted">Loading...</span>
100
100
  </div>
101
101
  );
102
102
  }
103
103
 
104
104
  if (error) {
105
- return <div className="px-4 py-2 text-red-500 text-sm">{error}</div>;
105
+ return <div className="px-4 py-2 text-destructive text-sm">{error}</div>;
106
106
  }
107
107
 
108
108
  return (
@@ -144,7 +144,7 @@ function MagicPdfViewImpl({ object, onClose }: _MagicPdfViewProps) {
144
144
  <div className="flex items-center gap-x-2">
145
145
  <DownloadPopover object={object} />
146
146
  </div>
147
- <span className="text-xs text-muted-foreground">{t('pdf.pageOf', { pageNumber, totalPages })}</span>
147
+ <span className="text-xs text-muted">{t('pdf.pageOf', { pageNumber, totalPages })}</span>
148
148
  <div className="flex items-center gap-x-2">
149
149
  {!!onClose && (
150
150
  <Button variant="ghost" size="xs" onClick={onClose} title={t('pdf.close')}>
@@ -47,8 +47,23 @@ describe('MCP connection controls', () => {
47
47
  manifest: {
48
48
  name: 'mcp-app',
49
49
  title: 'MCP App',
50
- oauth_providers: {},
51
50
  tool_collections: [
51
+ {
52
+ type: 'mcp',
53
+ id: 'service-account',
54
+ name: 'Service Account',
55
+ namespace: 'service_account',
56
+ url: 'https://service-account-mcp.example.com',
57
+ oauth_provider: 'service-account',
58
+ },
59
+ {
60
+ type: 'mcp',
61
+ id: 'service-calendar',
62
+ name: 'Service Calendar',
63
+ namespace: 'service_calendar',
64
+ url: 'https://service-calendar-mcp.example.com',
65
+ oauth_provider: 'service-account',
66
+ },
52
67
  {
53
68
  type: 'mcp',
54
69
  id: 'jira',
@@ -86,11 +101,23 @@ describe('MCP connection controls', () => {
86
101
  auth: 'api_key',
87
102
  },
88
103
  ],
104
+ oauth_providers: {
105
+ 'service-account': {
106
+ display_name: 'Service Account OAuth',
107
+ grant_type: 'client_credentials',
108
+ },
109
+ },
89
110
  },
90
- oauth_collection_ids: ['jira', 'miro', 'linear', 'github'],
111
+ oauth_collection_ids: ['jira', 'miro', 'linear', 'github', 'service-account', 'service-calendar'],
91
112
  },
92
113
  ]);
93
114
  mocks.getStatus.mockResolvedValue([
115
+ {
116
+ authenticated: true,
117
+ collection_id: 'service-account',
118
+ collection_name: 'Service Account',
119
+ mcp_server_url: 'https://service-account-mcp.example.com',
120
+ },
94
121
  {
95
122
  authenticated: true,
96
123
  collection_id: 'jira',
@@ -124,7 +151,9 @@ describe('MCP connection controls', () => {
124
151
  ]);
125
152
  const onChange = vi.fn();
126
153
 
127
- renderWithProviders(<McpConnectionsInlineList disabledCollections={['linear']} onChange={onChange} />);
154
+ renderWithProviders(
155
+ <McpConnectionsInlineList disabledCollections={['linear', 'service-calendar']} onChange={onChange} />,
156
+ );
128
157
 
129
158
  await screen.findByText('Jira');
130
159
  await waitFor(() => expect(mocks.getStatus).toHaveBeenCalledTimes(1));
@@ -133,16 +162,25 @@ describe('MCP connection controls', () => {
133
162
  expect(screen.getByText('Linear')).not.toBeNull();
134
163
  expect(screen.getByText('GitHub')).not.toBeNull();
135
164
  expect(screen.getByText('API Key Tools')).not.toBeNull();
165
+ expect(screen.getByText('Service Account')).not.toBeNull();
166
+ expect(screen.getByText('Service Calendar')).not.toBeNull();
167
+ expect(screen.queryByText('Service Account OAuth')).toBeNull();
136
168
  const apiKeyBadge = screen.getByText('API key');
137
169
  expect(apiKeyBadge.className).toContain('w-32');
170
+ const managedByAppBadges = screen.getAllByText('Managed by app');
171
+ expect(managedByAppBadges).toHaveLength(2);
172
+ expect(managedByAppBadges[0].className).toContain('w-32');
138
173
  expect(screen.queryByText('Connected')).toBeNull();
139
174
  expect(screen.getAllByRole('button', { name: 'Disconnect' })).toHaveLength(3);
140
175
  const connectButton = screen.getByRole('button', { name: 'Connect' });
141
176
  const disconnectButton = screen.getAllByRole('button', { name: 'Disconnect' })[0];
142
177
  expect(connectButton.className).toContain('w-32');
143
178
  expect(disconnectButton.className).toContain('w-32');
144
- expect(screen.getAllByText('Enabled')).toHaveLength(4);
145
- expect(screen.getByText('Disabled')).not.toBeNull();
179
+ expect(screen.getAllByText('Enabled')).toHaveLength(5);
180
+ expect(screen.getAllByText('Disabled')).toHaveLength(2);
181
+
182
+ fireEvent.click(screen.getByRole('switch', { name: 'Activate Service Calendar for this conversation' }));
183
+ expect(onChange).toHaveBeenCalledWith(['linear']);
146
184
  });
147
185
 
148
186
  it('renders MCP rows before connection statuses finish loading', async () => {
@@ -207,8 +245,29 @@ describe('MCP connection controls', () => {
207
245
  manifest: {
208
246
  name: 'jira-app',
209
247
  title: 'Jira',
210
- oauth_providers: {},
248
+ oauth_providers: {
249
+ 'service-account': {
250
+ display_name: 'Service Account OAuth',
251
+ grant_type: 'client_credentials',
252
+ },
253
+ },
211
254
  tool_collections: [
255
+ {
256
+ type: 'mcp',
257
+ id: 'service-account',
258
+ name: 'Service Account',
259
+ namespace: 'service_account',
260
+ url: 'https://service-account-mcp.example.com',
261
+ oauth_provider: 'service-account',
262
+ },
263
+ {
264
+ type: 'mcp',
265
+ id: 'service-calendar',
266
+ name: 'Service Calendar',
267
+ namespace: 'service_calendar',
268
+ url: 'https://service-calendar-mcp.example.com',
269
+ oauth_provider: 'service-account',
270
+ },
212
271
  {
213
272
  type: 'mcp',
214
273
  id: 'jira',
@@ -225,10 +284,16 @@ describe('MCP connection controls', () => {
225
284
  },
226
285
  ],
227
286
  },
228
- oauth_collection_ids: ['jira', 'github'],
287
+ oauth_collection_ids: ['jira', 'github', 'service-account', 'service-calendar'],
229
288
  },
230
289
  ]);
231
290
  mocks.getStatus.mockResolvedValue([
291
+ {
292
+ authenticated: true,
293
+ collection_id: 'service-account',
294
+ collection_name: 'Service Account',
295
+ mcp_server_url: 'https://service-account-mcp.example.com',
296
+ },
232
297
  {
233
298
  authenticated: true,
234
299
  collection_id: 'jira',
@@ -254,12 +319,18 @@ describe('MCP connection controls', () => {
254
319
 
255
320
  const menuItem = await screen.findByText('MCP');
256
321
  expect(menuItem).not.toBeNull();
257
- expect(screen.getByText('1')).not.toBeNull();
322
+ expect(screen.getByText('3')).not.toBeNull();
258
323
 
259
324
  fireEvent.click(menuItem);
260
325
 
261
326
  await waitFor(() => {
262
327
  expect(screen.getByText('Manage the MCP servers available to this conversation.')).not.toBeNull();
263
328
  });
329
+ expect(screen.getByText('Service Account')).not.toBeNull();
330
+ expect(screen.getByText('Service Calendar')).not.toBeNull();
331
+ expect(screen.queryByText('Service Account OAuth')).toBeNull();
332
+ expect(screen.getAllByText('Managed by app')).toHaveLength(2);
333
+ expect(screen.getAllByRole('button', { name: 'Disconnect' })).toHaveLength(1);
334
+ expect(screen.getAllByRole('button', { name: 'Connect' })).toHaveLength(1);
264
335
  });
265
336
  });
@@ -128,6 +128,7 @@ export function McpConnectionsInlineList({
128
128
  {groups.map((group) => {
129
129
  const active = !isGroupDisabled(group, disabledCollections);
130
130
  const connected = group.authStatus?.authenticated === true;
131
+ const interactiveOAuth = group.authType === 'oauth' && group.oauthGrantType !== 'client_credentials';
131
132
  const StatusIcon = connected ? Link2 : Link2Off;
132
133
  return (
133
134
  <div key={group.key} className="flex flex-wrap items-center gap-x-3 gap-y-2 py-2 text-sm">
@@ -155,7 +156,7 @@ export function McpConnectionsInlineList({
155
156
  </span>
156
157
  </VTooltip>
157
158
  </div>
158
- {statusLoading && !group.authStatus ? (
159
+ {interactiveOAuth && statusLoading && !group.authStatus ? (
159
160
  <Button
160
161
  variant="outline"
161
162
  size="sm"
@@ -165,7 +166,7 @@ export function McpConnectionsInlineList({
165
166
  >
166
167
  <Spinner className="size-3" />
167
168
  </Button>
168
- ) : group.authType === 'oauth' ? (
169
+ ) : interactiveOAuth ? (
169
170
  <RemoteMcpConnectionButton
170
171
  appId={group.appId}
171
172
  collectionId={group.representativeId}
@@ -178,7 +179,9 @@ export function McpConnectionsInlineList({
178
179
  />
179
180
  ) : (
180
181
  <Badge variant="outline" className="h-6 w-32 justify-center px-2 text-xs">
181
- {t('mcpConnections.apiKey')}
182
+ {group.authType === 'api_key'
183
+ ? t('mcpConnections.apiKey')
184
+ : t('mcpConnections.managedByApp')}
182
185
  </Badge>
183
186
  )}
184
187
  {onChange && (
@@ -1,6 +1,6 @@
1
1
  import { useUITranslation } from '@vertesia/ui/i18n';
2
2
  import { Link2, Link2Off } from 'lucide-react';
3
- import { Button, Modal, ModalBody, ModalTitle, Spinner, Switch, VTooltip } from '../../core/index.js';
3
+ import { Badge, Button, Modal, ModalBody, ModalTitle, Spinner, Switch, VTooltip } from '../../core/index.js';
4
4
  import { RemoteMcpConnectionButton } from './RemoteMcpConnectionButton.js';
5
5
  import { isGroupDisabled, type McpConnectionGroup, toggleGroupDisabled } from './useMcpConnections.js';
6
6
 
@@ -62,6 +62,8 @@ export function McpConnectionsDialog({
62
62
  {groups.map((group) => {
63
63
  const active = !isGroupDisabled(group, disabledCollections);
64
64
  const connected = group.authStatus?.authenticated === true;
65
+ const interactiveOAuth =
66
+ group.authType === 'oauth' && group.oauthGrantType !== 'client_credentials';
65
67
  const StatusIcon = connected ? Link2 : Link2Off;
66
68
  return (
67
69
  <div key={group.key} className="flex items-center justify-between gap-3 py-3">
@@ -92,7 +94,7 @@ export function McpConnectionsDialog({
92
94
  </VTooltip>
93
95
  </div>
94
96
  <div className="flex shrink-0 items-center gap-3">
95
- {statusLoading && !group.authStatus ? (
97
+ {interactiveOAuth && statusLoading && !group.authStatus ? (
96
98
  <Button
97
99
  variant="outline"
98
100
  size="sm"
@@ -102,7 +104,7 @@ export function McpConnectionsDialog({
102
104
  >
103
105
  <Spinner className="size-3" />
104
106
  </Button>
105
- ) : group.authType === 'oauth' ? (
107
+ ) : interactiveOAuth ? (
106
108
  <RemoteMcpConnectionButton
107
109
  appId={group.appId}
108
110
  collectionId={group.representativeId}
@@ -113,6 +115,10 @@ export function McpConnectionsDialog({
113
115
  showDisconnect
114
116
  readOnly={readOnly}
115
117
  />
118
+ ) : group.authType === 'oauth' ? (
119
+ <Badge variant="outline" className="h-6 w-32 justify-center px-2 text-xs">
120
+ {t('mcpConnections.managedByApp')}
121
+ </Badge>
116
122
  ) : null}
117
123
  {onChange && (
118
124
  <Switch
@@ -7,22 +7,21 @@ import {
7
7
  import { useUserSession } from '@vertesia/ui/session';
8
8
  import { useCallback, useEffect, useRef, useState } from 'react';
9
9
 
10
- /**
11
- * A group of MCP tool collections that share authentication and activation state.
12
- */
10
+ /** A visible MCP collection row. OAuth authentication may be shared with sibling rows. */
13
11
  export interface McpConnectionGroup {
14
12
  key: string;
15
13
  appId: string;
16
14
  appName: string;
17
- /** Display label: provider display_name, oauth_app name, or individual collection name */
15
+ /** Display label for the MCP collection. */
18
16
  label: string;
19
- /** Representative collection ID used for status and, for OAuth groups, connection operations. */
17
+ /** Collection ID used for status and OAuth operations; shared when collections use the same provider. */
20
18
  representativeId: string;
21
- /** All collection IDs in this group (used for per-conversation activation toggles) */
19
+ /** Collection IDs controlled by this row's per-conversation activation toggle. */
22
20
  memberIds: string[];
23
- /** Names of all collections in this group (for tooltip when > 1) */
21
+ /** Collection names represented by this row. */
24
22
  memberNames: string[];
25
23
  authType: 'oauth' | 'api_key';
24
+ oauthGrantType?: 'authorization_code' | 'client_credentials';
26
25
  authStatus?: OAuthAuthStatus;
27
26
  }
28
27
 
@@ -80,29 +79,36 @@ export function useMcpConnections() {
80
79
  }
81
80
 
82
81
  for (const [providerKey, cols] of providerMap) {
83
- allGroups.push({
84
- key: `${inst.id}:provider:${providerKey}`,
85
- appId: inst.id,
86
- appName: inst.manifest.title || inst.manifest.name,
87
- label: manifestProviders[providerKey]?.display_name || providerKey,
88
- representativeId: cols[0].id,
89
- memberIds: cols.map((c) => c.id),
90
- memberNames: cols.map((c) => c.name),
91
- authType: 'oauth',
92
- });
82
+ const representativeId = cols[0].id;
83
+ for (const col of cols) {
84
+ allGroups.push({
85
+ key: `${inst.id}:provider:${providerKey}:${col.id}`,
86
+ appId: inst.id,
87
+ appName: inst.manifest.title || inst.manifest.name,
88
+ label: col.name,
89
+ representativeId,
90
+ memberIds: [col.id],
91
+ memberNames: [col.name],
92
+ authType: 'oauth',
93
+ oauthGrantType: manifestProviders[providerKey]?.grant_type,
94
+ });
95
+ }
93
96
  }
94
97
 
95
98
  for (const [oauthApp, cols] of oauthAppMap) {
96
- allGroups.push({
97
- key: `${inst.id}:oauthapp:${oauthApp}`,
98
- appId: inst.id,
99
- appName: inst.manifest.title || inst.manifest.name,
100
- label: oauthApp,
101
- representativeId: cols[0].id,
102
- memberIds: cols.map((c) => c.id),
103
- memberNames: cols.map((c) => c.name),
104
- authType: 'oauth',
105
- });
99
+ const representativeId = cols[0].id;
100
+ for (const col of cols) {
101
+ allGroups.push({
102
+ key: `${inst.id}:oauthapp:${oauthApp}:${col.id}`,
103
+ appId: inst.id,
104
+ appName: inst.manifest.title || inst.manifest.name,
105
+ label: col.name,
106
+ representativeId,
107
+ memberIds: [col.id],
108
+ memberNames: [col.name],
109
+ authType: 'oauth',
110
+ });
111
+ }
106
112
  }
107
113
 
108
114
  for (const col of individualCols) {
@@ -11,7 +11,7 @@ function LoadingSpinner({ className, size = 'md' }: { className?: string; size?:
11
11
  };
12
12
  return (
13
13
  <div className={`flex items-center justify-center ${className || ''}`}>
14
- <Loader2 className={`${sizeClasses[size]} animate-spin text-muted-foreground`} />
14
+ <Loader2 className={`${sizeClasses[size]} animate-spin text-muted`} />
15
15
  </div>
16
16
  );
17
17
  }
@@ -327,7 +327,7 @@ function VirtualizedThumbnail({
327
327
  className="flex items-center justify-center bg-muted"
328
328
  style={{ height: placeholderHeight, width: width || '100%' }}
329
329
  >
330
- <span className="text-muted-foreground text-xs">{pageNumber}</span>
330
+ <span className="text-muted text-xs">{pageNumber}</span>
331
331
  </div>
332
332
  );
333
333
 
@@ -367,7 +367,7 @@ export function PdfPageSlider({
367
367
  </Button>
368
368
  <Center
369
369
  className={clsx(
370
- 'text-muted-foreground font-semibold',
370
+ 'text-muted font-semibold',
371
371
  compact ? 'text-xs pt-0.5' : 'text-sm pt-1',
372
372
  )}
373
373
  >
@@ -426,7 +426,7 @@ function PageNavigator({ currentPage, totalPages, onChange }: PageNavigatorProps
426
426
  };
427
427
 
428
428
  return (
429
- <div className="flex items-center gap-1 text-xs text-muted-foreground">
429
+ <div className="flex items-center gap-1 text-xs text-muted">
430
430
  <span>{t('pdf.page')}</span>
431
431
  <input
432
432
  ref={inputRef}
@@ -457,7 +457,7 @@ function ZoomControls({ zoom, onZoomIn, onZoomOut, onFitToView, canZoomIn, canZo
457
457
  <Button variant="ghost" size="xs" onClick={onZoomOut} isDisabled={!canZoomOut} title={t('pdf.zoomOut')}>
458
458
  <Minus />
459
459
  </Button>
460
- <span className="text-xs text-muted-foreground min-w-[32px] text-center">{zoom}%</span>
460
+ <span className="text-xs text-muted min-w-[32px] text-center">{zoom}%</span>
461
461
  <Button variant="ghost" size="xs" onClick={onZoomIn} isDisabled={!canZoomIn} title={t('pdf.zoomIn')}>
462
462
  <Plus />
463
463
  </Button>
@@ -466,7 +466,7 @@ function ZoomControls({ zoom, onZoomIn, onZoomOut, onFitToView, canZoomIn, canZo
466
466
  size="xs"
467
467
  onClick={onFitToView}
468
468
  title={t('pdf.fitToWidth')}
469
- className={zoom === DEFAULT_ZOOM ? 'text-muted-foreground/40' : undefined}
469
+ className={zoom === DEFAULT_ZOOM ? 'text-muted/40' : undefined}
470
470
  >
471
471
  <Maximize />
472
472
  </Button>
@@ -135,7 +135,7 @@ export function SimplePdfViewer({ object, url, source, className }: SimplePdfVie
135
135
  title={t('pdf.fullscreen')}
136
136
  tooltipPlacement="bottom"
137
137
  variant="unstyled"
138
- className="p-1 rounded cursor-pointer transition-colors text-muted-foreground hover:text-foreground hover:bg-muted"
138
+ className="p-1 rounded cursor-pointer transition-colors text-muted hover:text-foreground hover:bg-muted"
139
139
  onClick={() => setIsFullscreen(true)}
140
140
  >
141
141
  <Maximize2 className="size-4" />