@vertesia/ui 1.4.0 → 1.5.0-dev.20260713.151751Z

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 (344) hide show
  1. package/lib/core/components/InputList.d.ts.map +1 -1
  2. package/lib/core/components/InputList.js +3 -2
  3. package/lib/core/components/InputList.js.map +1 -1
  4. package/lib/core/components/SelectList.d.ts.map +1 -1
  5. package/lib/core/components/SelectList.js +1 -1
  6. package/lib/core/components/SelectList.js.map +1 -1
  7. package/lib/core/components/TagsInput.d.ts.map +1 -1
  8. package/lib/core/components/TagsInput.js +36 -4
  9. package/lib/core/components/TagsInput.js.map +1 -1
  10. package/lib/core/components/popup/Popup.js +2 -1
  11. package/lib/core/components/popup/Popup.js.map +1 -1
  12. package/lib/core/components/popup/position.d.ts.map +1 -1
  13. package/lib/core/components/popup/position.js +3 -6
  14. package/lib/core/components/popup/position.js.map +1 -1
  15. package/lib/core/components/shadcn/badge.d.ts +2 -2
  16. package/lib/core/components/shadcn/badge.d.ts.map +1 -1
  17. package/lib/core/components/shadcn/badge.js +3 -0
  18. package/lib/core/components/shadcn/badge.js.map +1 -1
  19. package/lib/core/components/shadcn/breadcrumb.d.ts.map +1 -1
  20. package/lib/core/components/shadcn/breadcrumb.js +2 -2
  21. package/lib/core/components/shadcn/breadcrumb.js.map +1 -1
  22. package/lib/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
  23. package/lib/core/components/shadcn/filters/filterBar.js +1 -3
  24. package/lib/core/components/shadcn/filters/filterBar.js.map +1 -1
  25. package/lib/core/components/shadcn/resizeable.d.ts +1 -1
  26. package/lib/core/components/shadcn/resizeable.d.ts.map +1 -1
  27. package/lib/core/components/shadcn/resizeable.js +12 -2
  28. package/lib/core/components/shadcn/resizeable.js.map +1 -1
  29. package/lib/core/components/shadcn/selectBox.d.ts +7 -1
  30. package/lib/core/components/shadcn/selectBox.d.ts.map +1 -1
  31. package/lib/core/components/shadcn/selectBox.js +29 -12
  32. package/lib/core/components/shadcn/selectBox.js.map +1 -1
  33. package/lib/core/components/table/index.d.ts.map +1 -1
  34. package/lib/core/components/table/index.js +1 -1
  35. package/lib/core/components/table/index.js.map +1 -1
  36. package/lib/core/hooks/useIntersectionObserver.d.ts.map +1 -1
  37. package/lib/core/hooks/useIntersectionObserver.js +3 -1
  38. package/lib/core/hooks/useIntersectionObserver.js.map +1 -1
  39. package/lib/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
  40. package/lib/features/agent/chat/AgentRightPanel.js +3 -6
  41. package/lib/features/agent/chat/AgentRightPanel.js.map +1 -1
  42. package/lib/features/agent/chat/AnimatedThinkingDots.d.ts.map +1 -1
  43. package/lib/features/agent/chat/AnimatedThinkingDots.js +1 -1
  44. package/lib/features/agent/chat/AnimatedThinkingDots.js.map +1 -1
  45. package/lib/features/agent/chat/AskUserWidget.d.ts.map +1 -1
  46. package/lib/features/agent/chat/AskUserWidget.js +4 -3
  47. package/lib/features/agent/chat/AskUserWidget.js.map +1 -1
  48. package/lib/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
  49. package/lib/features/agent/chat/ModernAgentConversation.js +56 -11
  50. package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
  51. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +8 -1
  52. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  53. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +40 -31
  54. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  55. package/lib/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js +3 -3
  56. package/lib/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js.map +1 -1
  57. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
  58. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js +5 -1
  59. package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
  60. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +3 -7
  61. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  62. package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.d.ts.map +1 -1
  63. package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.js +5 -5
  64. package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.js.map +1 -1
  65. package/lib/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.d.ts.map +1 -1
  66. package/lib/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js +4 -4
  67. package/lib/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js.map +1 -1
  68. package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
  69. package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +3 -3
  70. package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
  71. package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.d.ts.map +1 -1
  72. package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +156 -8
  73. package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
  74. package/lib/features/agent/chat/hooks/useFileProcessing.d.ts +1 -0
  75. package/lib/features/agent/chat/hooks/useFileProcessing.d.ts.map +1 -1
  76. package/lib/features/agent/chat/hooks/useFileProcessing.js +37 -3
  77. package/lib/features/agent/chat/hooks/useFileProcessing.js.map +1 -1
  78. package/lib/features/facets/AgentRunnerFacetsNav.d.ts.map +1 -1
  79. package/lib/features/facets/AgentRunnerFacetsNav.js +1 -1
  80. package/lib/features/facets/AgentRunnerFacetsNav.js.map +1 -1
  81. package/lib/features/facets/InteractionsFacetsNav.d.ts +10 -1
  82. package/lib/features/facets/InteractionsFacetsNav.d.ts.map +1 -1
  83. package/lib/features/facets/InteractionsFacetsNav.js +14 -5
  84. package/lib/features/facets/InteractionsFacetsNav.js.map +1 -1
  85. package/lib/features/facets/PromptsFacetsNav.d.ts.map +1 -1
  86. package/lib/features/facets/PromptsFacetsNav.js +12 -1
  87. package/lib/features/facets/PromptsFacetsNav.js.map +1 -1
  88. package/lib/features/facets/RunsFacetsNav.d.ts.map +1 -1
  89. package/lib/features/facets/RunsFacetsNav.js +1 -1
  90. package/lib/features/facets/RunsFacetsNav.js.map +1 -1
  91. package/lib/features/magic-pdf/AnnotatedImageSlider.d.ts.map +1 -1
  92. package/lib/features/magic-pdf/AnnotatedImageSlider.js +1 -3
  93. package/lib/features/magic-pdf/AnnotatedImageSlider.js.map +1 -1
  94. package/lib/features/magic-pdf/MagicPdfProvider.js +2 -3
  95. package/lib/features/magic-pdf/MagicPdfProvider.js.map +1 -1
  96. package/lib/features/store/objects/DocumentSearchResults.d.ts +6 -2
  97. package/lib/features/store/objects/DocumentSearchResults.d.ts.map +1 -1
  98. package/lib/features/store/objects/DocumentSearchResults.js +6 -6
  99. package/lib/features/store/objects/DocumentSearchResults.js.map +1 -1
  100. package/lib/features/store/objects/components/ContentOverview.js +1 -1
  101. package/lib/features/store/objects/components/ContentOverview.js.map +1 -1
  102. package/lib/features/store/objects/components/DocumentIcon.d.ts.map +1 -1
  103. package/lib/features/store/objects/components/DocumentIcon.js +1 -1
  104. package/lib/features/store/objects/components/DocumentIcon.js.map +1 -1
  105. package/lib/features/store/objects/components/DocumentInput.js.map +1 -1
  106. package/lib/features/store/objects/search/DocumentSearchContext.d.ts +4 -4
  107. package/lib/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
  108. package/lib/features/store/objects/search/DocumentSearchContext.js +1 -1
  109. package/lib/features/store/objects/search/DocumentSearchContext.js.map +1 -1
  110. package/lib/features/store/objects/selection/ObjectsActionContext.d.ts.map +1 -1
  111. package/lib/features/store/objects/selection/ObjectsActionContext.js +2 -25
  112. package/lib/features/store/objects/selection/ObjectsActionContext.js.map +1 -1
  113. package/lib/features/store/objects/selection/ObjectsActionContextClass.d.ts +0 -2
  114. package/lib/features/store/objects/selection/ObjectsActionContextClass.d.ts.map +1 -1
  115. package/lib/features/store/objects/selection/ObjectsActionContextClass.js +1 -7
  116. package/lib/features/store/objects/selection/ObjectsActionContextClass.js.map +1 -1
  117. package/lib/features/store/objects/selection/ObjectsActionHooks.d.ts +0 -1
  118. package/lib/features/store/objects/selection/ObjectsActionHooks.d.ts.map +1 -1
  119. package/lib/features/store/objects/selection/ObjectsActionHooks.js +0 -10
  120. package/lib/features/store/objects/selection/ObjectsActionHooks.js.map +1 -1
  121. package/lib/features/store/objects/selection/SelectionActions.d.ts +4 -0
  122. package/lib/features/store/objects/selection/SelectionActions.d.ts.map +1 -1
  123. package/lib/features/store/objects/selection/SelectionActions.js +4 -18
  124. package/lib/features/store/objects/selection/SelectionActions.js.map +1 -1
  125. package/lib/features/store/objects/selection/actions/DeleteObjectsAction.d.ts.map +1 -1
  126. package/lib/features/store/objects/selection/actions/DeleteObjectsAction.js +16 -7
  127. package/lib/features/store/objects/selection/actions/DeleteObjectsAction.js.map +1 -1
  128. package/lib/features/store/objects/selection/actions/StartWorkflowButton.d.ts +7 -0
  129. package/lib/features/store/objects/selection/actions/StartWorkflowButton.d.ts.map +1 -0
  130. package/lib/features/store/objects/selection/actions/StartWorkflowButton.js +51 -0
  131. package/lib/features/store/objects/selection/actions/StartWorkflowButton.js.map +1 -0
  132. package/lib/features/store/objects/selection/actions/index.d.ts +0 -1
  133. package/lib/features/store/objects/selection/actions/index.d.ts.map +1 -1
  134. package/lib/features/store/objects/selection/actions/index.js +0 -1
  135. package/lib/features/store/objects/selection/actions/index.js.map +1 -1
  136. package/lib/features/store/types/ContentObjectTypesSearch.d.ts.map +1 -1
  137. package/lib/features/store/types/ContentObjectTypesSearch.js +55 -3
  138. package/lib/features/store/types/ContentObjectTypesSearch.js.map +1 -1
  139. package/lib/features/store/types/ContentObjectTypesTable.d.ts +5 -1
  140. package/lib/features/store/types/ContentObjectTypesTable.d.ts.map +1 -1
  141. package/lib/features/store/types/ContentObjectTypesTable.js +4 -2
  142. package/lib/features/store/types/ContentObjectTypesTable.js.map +1 -1
  143. package/lib/features/store/types/search/ObjectTypeSearchContext.js +1 -1
  144. package/lib/features/store/types/search/ObjectTypeSearchContext.js.map +1 -1
  145. package/lib/i18n/locales/ar.json +17 -0
  146. package/lib/i18n/locales/de.json +17 -0
  147. package/lib/i18n/locales/en.json +33 -0
  148. package/lib/i18n/locales/es.json +17 -0
  149. package/lib/i18n/locales/fr.json +17 -0
  150. package/lib/i18n/locales/it.json +17 -0
  151. package/lib/i18n/locales/ja.json +17 -0
  152. package/lib/i18n/locales/ko.json +17 -0
  153. package/lib/i18n/locales/pt.json +17 -0
  154. package/lib/i18n/locales/ru.json +17 -0
  155. package/lib/i18n/locales/tr.json +17 -0
  156. package/lib/i18n/locales/zh-TW.json +17 -0
  157. package/lib/i18n/locales/zh.json +17 -0
  158. package/lib/layout/Sidebar.d.ts +5 -1
  159. package/lib/layout/Sidebar.d.ts.map +1 -1
  160. package/lib/layout/Sidebar.js.map +1 -1
  161. package/lib/router/NestedRouterProvider.d.ts +1 -1
  162. package/lib/router/NestedRouterProvider.d.ts.map +1 -1
  163. package/lib/router/NestedRouterProvider.js +2 -2
  164. package/lib/router/NestedRouterProvider.js.map +1 -1
  165. package/lib/router/Redirect.d.ts +13 -0
  166. package/lib/router/Redirect.d.ts.map +1 -0
  167. package/lib/router/Redirect.js +20 -0
  168. package/lib/router/Redirect.js.map +1 -0
  169. package/lib/router/Router.d.ts.map +1 -1
  170. package/lib/router/Router.js +1 -2
  171. package/lib/router/Router.js.map +1 -1
  172. package/lib/router/index.d.ts +1 -0
  173. package/lib/router/index.d.ts.map +1 -1
  174. package/lib/router/index.js +1 -0
  175. package/lib/router/index.js.map +1 -1
  176. package/lib/session/DevSessionProvider.d.ts +8 -0
  177. package/lib/session/DevSessionProvider.d.ts.map +1 -0
  178. package/lib/session/DevSessionProvider.js +33 -0
  179. package/lib/session/DevSessionProvider.js.map +1 -0
  180. package/lib/session/UserSessionProvider.d.ts.map +1 -1
  181. package/lib/session/UserSessionProvider.js +16 -2
  182. package/lib/session/UserSessionProvider.js.map +1 -1
  183. package/lib/session/auth/composable.d.ts +10 -1
  184. package/lib/session/auth/composable.d.ts.map +1 -1
  185. package/lib/session/auth/composable.js +38 -2
  186. package/lib/session/auth/composable.js.map +1 -1
  187. package/lib/session/index.d.ts +1 -0
  188. package/lib/session/index.d.ts.map +1 -1
  189. package/lib/session/index.js +1 -0
  190. package/lib/session/index.js.map +1 -1
  191. package/lib/shell/VertesiaShell.d.ts +3 -1
  192. package/lib/shell/VertesiaShell.d.ts.map +1 -1
  193. package/lib/shell/VertesiaShell.js +5 -4
  194. package/lib/shell/VertesiaShell.js.map +1 -1
  195. package/lib/shell/login/SignInRestrictedEnvStep.d.ts +14 -0
  196. package/lib/shell/login/SignInRestrictedEnvStep.d.ts.map +1 -0
  197. package/lib/shell/login/SignInRestrictedEnvStep.js +50 -0
  198. package/lib/shell/login/SignInRestrictedEnvStep.js.map +1 -0
  199. package/lib/shell/login/SigninScreen.d.ts.map +1 -1
  200. package/lib/shell/login/SigninScreen.js +16 -3
  201. package/lib/shell/login/SigninScreen.js.map +1 -1
  202. package/lib/shell/login/productionUrl.d.ts +16 -0
  203. package/lib/shell/login/productionUrl.d.ts.map +1 -0
  204. package/lib/shell/login/productionUrl.js +19 -0
  205. package/lib/shell/login/productionUrl.js.map +1 -0
  206. package/lib/shell/login/signInUtils.d.ts.map +1 -1
  207. package/lib/shell/login/signInUtils.js +14 -1
  208. package/lib/shell/login/signInUtils.js.map +1 -1
  209. package/lib/vertesia-ui-core.js +95 -2
  210. package/lib/vertesia-ui-core.js.map +1 -1
  211. package/lib/vertesia-ui-env.js +2 -2
  212. package/lib/vertesia-ui-env.js.map +1 -1
  213. package/lib/vertesia-ui-features.js +454 -2
  214. package/lib/vertesia-ui-features.js.map +1 -1
  215. package/lib/vertesia-ui-i18n.js +41 -2
  216. package/lib/vertesia-ui-i18n.js.map +1 -1
  217. package/lib/vertesia-ui-layout.js +2 -2
  218. package/lib/vertesia-ui-layout.js.map +1 -1
  219. package/lib/vertesia-ui-router.js +2 -2
  220. package/lib/vertesia-ui-router.js.map +1 -1
  221. package/lib/vertesia-ui-session.js +2 -2
  222. package/lib/vertesia-ui-session.js.map +1 -1
  223. package/lib/vertesia-ui-shell.js +2 -2
  224. package/lib/vertesia-ui-shell.js.map +1 -1
  225. package/lib/vertesia-ui-widgets.js +9 -2
  226. package/lib/vertesia-ui-widgets.js.map +1 -1
  227. package/lib/widgets/json-view/JSONCode.d.ts.map +1 -1
  228. package/lib/widgets/json-view/JSONCode.js +1 -1
  229. package/lib/widgets/json-view/JSONCode.js.map +1 -1
  230. package/lib/widgets/json-view/JSONTable.d.ts.map +1 -1
  231. package/lib/widgets/json-view/JSONTable.js +1 -1
  232. package/lib/widgets/json-view/JSONTable.js.map +1 -1
  233. package/lib/widgets/markdown/ArtifactContentRenderer.d.ts.map +1 -1
  234. package/lib/widgets/markdown/ArtifactContentRenderer.js +1 -1
  235. package/lib/widgets/markdown/ArtifactContentRenderer.js.map +1 -1
  236. package/lib/widgets/markdown/CodeBlockPlaceholder.d.ts.map +1 -1
  237. package/lib/widgets/markdown/CodeBlockPlaceholder.js +1 -1
  238. package/lib/widgets/markdown/CodeBlockPlaceholder.js.map +1 -1
  239. package/lib/widgets/monacoEditor/foldingProviders.d.ts.map +1 -1
  240. package/lib/widgets/monacoEditor/foldingProviders.js +5 -10
  241. package/lib/widgets/monacoEditor/foldingProviders.js.map +1 -1
  242. package/lib/widgets/schema-editor/ManagedSchema.d.ts.map +1 -1
  243. package/lib/widgets/schema-editor/ManagedSchema.js +1 -2
  244. package/lib/widgets/schema-editor/ManagedSchema.js.map +1 -1
  245. package/lib/widgets/upload/UploadResultCategory.d.ts.map +1 -1
  246. package/lib/widgets/upload/UploadResultCategory.js +1 -1
  247. package/lib/widgets/upload/UploadResultCategory.js.map +1 -1
  248. package/lib/widgets/xml-viewer/components/TextElement/index.d.ts.map +1 -1
  249. package/lib/widgets/xml-viewer/components/TextElement/index.js +1 -1
  250. package/lib/widgets/xml-viewer/components/TextElement/index.js.map +1 -1
  251. package/package.json +38 -43
  252. package/src/core/components/InputList.tsx +5 -10
  253. package/src/core/components/SelectList.tsx +7 -2
  254. package/src/core/components/TagsInput.tsx +41 -4
  255. package/src/core/components/popup/Popup.tsx +3 -3
  256. package/src/core/components/popup/position.ts +3 -6
  257. package/src/core/components/shadcn/badge.tsx +3 -0
  258. package/src/core/components/shadcn/breadcrumb.tsx +2 -4
  259. package/src/core/components/shadcn/filters/filterBar.tsx +2 -3
  260. package/src/core/components/shadcn/resizeable.test.tsx +77 -0
  261. package/src/core/components/shadcn/resizeable.tsx +28 -2
  262. package/src/core/components/shadcn/selectBox.tsx +70 -36
  263. package/src/core/components/table/index.tsx +1 -2
  264. package/src/core/hooks/useIntersectionObserver.tsx +3 -1
  265. package/src/features/agent/chat/AgentRightPanel.tsx +5 -6
  266. package/src/features/agent/chat/AnimatedThinkingDots.tsx +1 -2
  267. package/src/features/agent/chat/AskUserWidget.test.tsx +49 -0
  268. package/src/features/agent/chat/AskUserWidget.tsx +32 -22
  269. package/src/features/agent/chat/ModernAgentConversation.test.tsx +198 -1
  270. package/src/features/agent/chat/ModernAgentConversation.tsx +62 -15
  271. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +60 -34
  272. package/src/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.tsx +3 -3
  273. package/src/features/agent/chat/ModernAgentOutput/MessageInput.test.tsx +25 -0
  274. package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +5 -1
  275. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +30 -30
  276. package/src/features/agent/chat/ModernAgentOutput/PlanPanel.tsx +5 -6
  277. package/src/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.tsx +4 -5
  278. package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +3 -5
  279. package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +326 -42
  280. package/src/features/agent/chat/hooks/useFileProcessing.test.tsx +70 -0
  281. package/src/features/agent/chat/hooks/useFileProcessing.ts +37 -6
  282. package/src/features/facets/AgentRunnerFacetsNav.tsx +1 -2
  283. package/src/features/facets/InteractionsFacetsNav.tsx +30 -5
  284. package/src/features/facets/PromptsFacetsNav.tsx +13 -1
  285. package/src/features/facets/RunsFacetsNav.tsx +1 -2
  286. package/src/features/magic-pdf/AnnotatedImageSlider.tsx +1 -2
  287. package/src/features/magic-pdf/MagicPdfProvider.tsx +4 -4
  288. package/src/features/store/objects/DocumentSearchResults.tsx +11 -1
  289. package/src/features/store/objects/components/ContentOverview.tsx +1 -2
  290. package/src/features/store/objects/components/DocumentIcon.tsx +1 -2
  291. package/src/features/store/objects/components/DocumentInput.tsx +2 -2
  292. package/src/features/store/objects/search/DocumentSearchContext.test.ts +2 -2
  293. package/src/features/store/objects/search/DocumentSearchContext.ts +3 -3
  294. package/src/features/store/objects/selection/ObjectsActionContext.tsx +2 -27
  295. package/src/features/store/objects/selection/ObjectsActionContextClass.ts +1 -7
  296. package/src/features/store/objects/selection/ObjectsActionHooks.ts +0 -11
  297. package/src/features/store/objects/selection/SelectionActions.tsx +9 -34
  298. package/src/features/store/objects/selection/actions/DeleteObjectsAction.tsx +40 -7
  299. package/src/features/store/objects/selection/actions/StartWorkflowButton.tsx +104 -0
  300. package/src/features/store/objects/selection/actions/index.ts +0 -1
  301. package/src/features/store/types/ContentObjectTypesSearch.tsx +110 -1
  302. package/src/features/store/types/ContentObjectTypesTable.tsx +42 -3
  303. package/src/features/store/types/search/ObjectTypeSearchContext.tsx +1 -1
  304. package/src/i18n/locales/ar.json +17 -0
  305. package/src/i18n/locales/de.json +17 -0
  306. package/src/i18n/locales/en.json +33 -0
  307. package/src/i18n/locales/es.json +17 -0
  308. package/src/i18n/locales/fr.json +17 -0
  309. package/src/i18n/locales/it.json +17 -0
  310. package/src/i18n/locales/ja.json +17 -0
  311. package/src/i18n/locales/ko.json +17 -0
  312. package/src/i18n/locales/pt.json +17 -0
  313. package/src/i18n/locales/ru.json +17 -0
  314. package/src/i18n/locales/tr.json +17 -0
  315. package/src/i18n/locales/zh-TW.json +17 -0
  316. package/src/i18n/locales/zh.json +17 -0
  317. package/src/layout/Sidebar.tsx +6 -1
  318. package/src/router/NestedRouterProvider.tsx +2 -2
  319. package/src/router/Redirect.tsx +29 -0
  320. package/src/router/Router.tsx +1 -2
  321. package/src/router/index.ts +1 -0
  322. package/src/session/DevSessionProvider.tsx +46 -0
  323. package/src/session/UserSessionProvider.tsx +18 -2
  324. package/src/session/auth/composable.ts +41 -3
  325. package/src/session/index.ts +1 -0
  326. package/src/shell/VertesiaShell.tsx +27 -14
  327. package/src/shell/login/SignInRestrictedEnvStep.tsx +87 -0
  328. package/src/shell/login/SigninScreen.tsx +29 -16
  329. package/src/shell/login/productionUrl.test.ts +19 -0
  330. package/src/shell/login/productionUrl.ts +18 -0
  331. package/src/shell/login/signInUtils.ts +14 -1
  332. package/src/widgets/json-view/JSONCode.tsx +1 -2
  333. package/src/widgets/json-view/JSONTable.tsx +1 -2
  334. package/src/widgets/markdown/ArtifactContentRenderer.tsx +4 -7
  335. package/src/widgets/markdown/CodeBlockPlaceholder.tsx +1 -2
  336. package/src/widgets/monacoEditor/foldingProviders.ts +10 -15
  337. package/src/widgets/schema-editor/ManagedSchema.ts +1 -2
  338. package/src/widgets/upload/UploadResultCategory.tsx +2 -3
  339. package/src/widgets/xml-viewer/components/TextElement/index.tsx +1 -2
  340. package/lib/features/store/objects/selection/actions/StartWorkflowComponent.d.ts +0 -4
  341. package/lib/features/store/objects/selection/actions/StartWorkflowComponent.d.ts.map +0 -1
  342. package/lib/features/store/objects/selection/actions/StartWorkflowComponent.js +0 -77
  343. package/lib/features/store/objects/selection/actions/StartWorkflowComponent.js.map +0 -1
  344. package/src/features/store/objects/selection/actions/StartWorkflowComponent.tsx +0 -127
@@ -1,12 +1,11 @@
1
- import { useToast } from '@vertesia/ui/core';
1
+ import { ConfirmModal, useToast } from '@vertesia/ui/core';
2
2
  import { i18nInstance, NAMESPACE, useUITranslation } from '@vertesia/ui/i18n';
3
3
  import { useNavigate } from '@vertesia/ui/router';
4
4
  import { useUserSession } from '@vertesia/ui/session';
5
- import { useCallback } from 'react';
5
+ import { useCallback, useState } from 'react';
6
6
  import { useDocumentSearch } from '../../search/DocumentSearchContext';
7
- import { useObjectsActionContext } from '../ObjectsActionHooks';
7
+ import { useObjectsActionCallback, useObjectsActionContext } from '../ObjectsActionHooks';
8
8
  import type { ActionComponentTypeProps, ObjectsActionSpec } from '../ObjectsActionSpec';
9
- import ConfirmAction from './ConfirmAction';
10
9
 
11
10
  export function DeleteObjectsActionComponent({ action, objectIds, children }: ActionComponentTypeProps) {
12
11
  const { t } = useUITranslation();
@@ -17,7 +16,20 @@ export function DeleteObjectsActionComponent({ action, objectIds, children }: Ac
17
16
  const search = useDocumentSearch();
18
17
  const navigate = useNavigate();
19
18
 
20
- const callback = useCallback(() => {
19
+ const [showConfirm, setShowConfirm] = useState(false);
20
+
21
+ const count = objectIds?.length ?? 0;
22
+ const type = ctx.params?.type?.name ?? 'object';
23
+
24
+ // Register the action trigger; opening the confirm modal is the action "callback".
25
+ const openConfirm = useCallback(() => {
26
+ setShowConfirm(true);
27
+ return Promise.resolve(true);
28
+ }, []);
29
+ useObjectsActionCallback(action.id, openConfirm);
30
+
31
+ const handleDelete = useCallback(() => {
32
+ setShowConfirm(false);
21
33
  if (!objectIds?.length) {
22
34
  toast({
23
35
  status: 'error',
@@ -81,9 +93,30 @@ export function DeleteObjectsActionComponent({ action, objectIds, children }: Ac
81
93
  ]);
82
94
 
83
95
  return (
84
- <ConfirmAction action={action} callback={callback}>
96
+ <>
85
97
  {children}
86
- </ConfirmAction>
98
+ <ConfirmModal
99
+ isOpen={showConfirm}
100
+ title={count === 1 ? `Delete ${type}` : `Delete ${type}s`}
101
+ content={
102
+ <div>
103
+ <p>
104
+ Delete {count} selected {type}
105
+ {count === 1 ? '' : 's'}? {count === 1 ? `This ${type}` : `These ${type}s`} will be
106
+ permanently removed.
107
+ </p>
108
+ <p>
109
+ <span className="text-destructive">This action cannot be undone.</span>
110
+ </p>
111
+ </div>
112
+ }
113
+ onConfirm={handleDelete}
114
+ onCancel={() => setShowConfirm(false)}
115
+ confirmationValue="delete"
116
+ confirmationLabel='Type "delete" to confirm'
117
+ confirmationPlaceholder="delete"
118
+ />
119
+ </>
87
120
  );
88
121
  }
89
122
 
@@ -0,0 +1,104 @@
1
+ import type { WorkflowRuleItem } from '@vertesia/common';
2
+ import {
3
+ Button,
4
+ Modal,
5
+ ModalBody,
6
+ ModalFooter,
7
+ ModalTitle,
8
+ SelectList,
9
+ Spinner,
10
+ useFetch,
11
+ useToast,
12
+ } from '@vertesia/ui/core';
13
+ import { useUITranslation } from '@vertesia/ui/i18n';
14
+ import { useUserSession } from '@vertesia/ui/session';
15
+ import { useState } from 'react';
16
+ import { useDocumentSelection } from '../../DocumentSelectionProvider.js';
17
+
18
+ /**
19
+ * Standalone "Start Workflow" button for the content objects toolbar. Renders only when objects are
20
+ * selected; opens a modal to pick a workflow rule and runs it on the selected object ids. Gated by
21
+ * the caller via the `allowWorkflowRun` prop on {@link SelectionActions}.
22
+ */
23
+ export function StartWorkflowButton() {
24
+ const { t } = useUITranslation();
25
+ const selection = useDocumentSelection();
26
+ const [isOpen, setOpen] = useState(false);
27
+
28
+ if (!selection?.hasSelection()) {
29
+ return null;
30
+ }
31
+
32
+ return (
33
+ <>
34
+ <Button onClick={() => setOpen(true)}>{t('store.actions.startWorkflow')}</Button>
35
+ {isOpen && <StartWorkflowModal objectIds={selection.getObjectIds()} onClose={() => setOpen(false)} />}
36
+ </>
37
+ );
38
+ }
39
+
40
+ interface StartWorkflowModalProps {
41
+ objectIds: string[];
42
+ onClose: () => void;
43
+ }
44
+
45
+ function StartWorkflowModal({ objectIds, onClose }: StartWorkflowModalProps) {
46
+ const { t } = useUITranslation();
47
+ const { client } = useUserSession();
48
+ const toast = useToast();
49
+ const [selected, setSelected] = useState<WorkflowRuleItem | undefined>(undefined);
50
+ const [isStarting, setIsStarting] = useState(false);
51
+
52
+ const { data: rules, isLoading } = useFetch(() => client.store.workflows.rules.list(), []);
53
+
54
+ const onStart = async () => {
55
+ if (!selected || isStarting) return;
56
+ setIsStarting(true);
57
+ try {
58
+ await client.store.workflows.rules.execute(selected.id, objectIds);
59
+ toast({ title: t('store.actions.workflowStarted'), status: 'success', duration: 3000 });
60
+ onClose();
61
+ } catch (err: unknown) {
62
+ toast({
63
+ title: t('store.actions.errorStartingWorkflow'),
64
+ description: err instanceof Error ? err.message : undefined,
65
+ status: 'error',
66
+ duration: 9000,
67
+ });
68
+ } finally {
69
+ setIsStarting(false);
70
+ }
71
+ };
72
+
73
+ return (
74
+ <Modal isOpen onClose={onClose}>
75
+ <ModalTitle>{t('store.actions.startWorkflowByRule')}</ModalTitle>
76
+ <ModalBody>
77
+ <div className="pb-2">{t('store.actions.chooseWorkflowRule')}</div>
78
+ {isLoading ? (
79
+ <div className="flex justify-center py-4">
80
+ <Spinner />
81
+ </div>
82
+ ) : (
83
+ <div className="max-h-[420px] overflow-y-auto border-border border rounded-md">
84
+ <SelectList
85
+ className="text-start"
86
+ options={rules ?? []}
87
+ value={selected}
88
+ onChange={setSelected}
89
+ optionLayout={(rule) => ({ label: rule.name })}
90
+ />
91
+ </div>
92
+ )}
93
+ </ModalBody>
94
+ <ModalFooter align="right">
95
+ <Button variant="outline" onClick={onClose} disabled={isStarting}>
96
+ Cancel
97
+ </Button>
98
+ <Button onClick={onStart} isDisabled={!selected || isStarting} isLoading={isStarting}>
99
+ Start
100
+ </Button>
101
+ </ModalFooter>
102
+ </Modal>
103
+ );
104
+ }
@@ -4,4 +4,3 @@ export * from './ConfirmAction';
4
4
  export * from './DeleteObjectsAction';
5
5
  export * from './ExportPropertiesAction';
6
6
  export * from './RemoveFromCollectionAction';
7
- export * from './StartWorkflowComponent';
@@ -1,4 +1,6 @@
1
1
  import {
2
+ Button,
3
+ ConfirmModal,
2
4
  EmptyCollection,
3
5
  ErrorBox,
4
6
  Input,
@@ -6,9 +8,11 @@ import {
6
8
  useDebounce,
7
9
  useIntersectionObserver,
8
10
  useToast,
11
+ VTooltip,
9
12
  } from '@vertesia/ui/core';
10
13
  import { useUITranslation } from '@vertesia/ui/i18n';
11
14
  import { useUserSession } from '@vertesia/ui/session';
15
+ import { X } from 'lucide-react';
12
16
  import { useEffect, useRef, useState } from 'react';
13
17
  import { ContentObjectTypesTable } from './ContentObjectTypesTable';
14
18
  import { CreateOrUpdateTypeModal, type CreateOrUpdateTypePayload } from './CreateOrUpdateTypeModal';
@@ -33,6 +37,58 @@ export function ContentObjectTypesSearch({ isDirty = false }: ContentObjectTypes
33
37
  const [isReady, setIsReady] = useState(false);
34
38
  const { search, isLoading, error, objects } = useWatchSearchResult();
35
39
 
40
+ const [selectedIds, setSelectedIds] = useState<string[]>([]);
41
+ const [showBulkDelete, setShowBulkDelete] = useState(false);
42
+ const [isBulkDeleting, setIsBulkDeleting] = useState(false);
43
+
44
+ const selectedCount = selectedIds.length;
45
+ const allVisibleSelected = !!objects && objects.length > 0 && objects.every((o) => selectedIds.includes(o.id));
46
+ const selectedTypes = objects?.filter((o) => selectedIds.includes(o.id)) ?? [];
47
+
48
+ const toggleOne = (id: string, checked: boolean) => {
49
+ setSelectedIds((cur) => (checked ? (cur.includes(id) ? cur : [...cur, id]) : cur.filter((v) => v !== id)));
50
+ };
51
+
52
+ const toggleAll = (checked: boolean) => {
53
+ setSelectedIds(checked && objects ? objects.map((o) => o.id) : []);
54
+ };
55
+
56
+ const handleBulkDelete = async () => {
57
+ if (isBulkDeleting) return;
58
+ setIsBulkDeleting(true);
59
+ try {
60
+ const results = await Promise.allSettled(selectedIds.map((id) => store.types.delete(id)));
61
+ const failed = results.filter((r) => r.status === 'rejected').length;
62
+ const succeeded = results.length - failed;
63
+ setShowBulkDelete(false);
64
+ setSelectedIds([]);
65
+ reloadTypes();
66
+ await search.search();
67
+ if (failed === 0) {
68
+ toast({
69
+ status: 'success',
70
+ title: t('store.actions.typeDeleted', { count: succeeded }),
71
+ duration: 3000,
72
+ });
73
+ } else {
74
+ toast({
75
+ status: 'error',
76
+ title: t('store.actions.typeDeletePartial', { succeeded, failed }),
77
+ duration: 5000,
78
+ });
79
+ }
80
+ } catch (err: unknown) {
81
+ toast({
82
+ status: 'error',
83
+ title: t('store.actions.failedToDeleteTypes'),
84
+ description: err instanceof Error ? err.message : undefined,
85
+ duration: 5000,
86
+ });
87
+ } finally {
88
+ setIsBulkDeleting(false);
89
+ }
90
+ };
91
+
36
92
  const [searchTerm, setSearchTerm] = useState<string>('');
37
93
  const debounceValue = useDebounce(searchTerm, 500);
38
94
 
@@ -107,7 +163,7 @@ export function ContentObjectTypesSearch({ isDirty = false }: ContentObjectTypes
107
163
 
108
164
  return (
109
165
  <div className="flex flex-col flex-1 min-h-0">
110
- <div className="flex flex-shrink-0 gap-4">
166
+ <div className="flex flex-shrink-0 gap-4 items-center">
111
167
  <Input placeholder={t('store.filterByName')} value={searchTerm} onChange={setSearchTerm} />
112
168
  <SelectBox
113
169
  className="w-60"
@@ -117,6 +173,29 @@ export function ContentObjectTypesSearch({ isDirty = false }: ContentObjectTypes
117
173
  onChange={onChunkableChange}
118
174
  placeholder={t('store.isChunkable')}
119
175
  />
176
+ {selectedCount > 0 && (
177
+ <div className="flex items-center gap-2 ms-auto">
178
+ <span className="text-sm font-medium whitespace-nowrap">
179
+ {t('store.actions.selectedCount', { n: selectedCount })}
180
+ </span>
181
+ <VTooltip description={t('store.actions.clearSelection')} asChild>
182
+ <Button
183
+ variant="ghost"
184
+ aria-label={t('store.actions.clearSelection')}
185
+ onClick={() => setSelectedIds([])}
186
+ >
187
+ <X className="size-4" />
188
+ </Button>
189
+ </VTooltip>
190
+ <Button
191
+ variant="destructive"
192
+ isDisabled={isBulkDeleting}
193
+ onClick={() => setShowBulkDelete(true)}
194
+ >
195
+ {isBulkDeleting ? t('store.actions.deleting') : t('store.actions.deleteSelected')}
196
+ </Button>
197
+ </div>
198
+ )}
120
199
  </div>
121
200
  <div className="flex flex-col w-full flex-1 min-h-0 border rounded-md my-2">
122
201
  <div className="flex-1 min-h-0 overflow-y-auto">
@@ -136,6 +215,10 @@ export function ContentObjectTypesSearch({ isDirty = false }: ContentObjectTypes
136
215
  onFilter={(field, value) => {
137
216
  if (field === 'name') setSearchTerm(value);
138
217
  }}
218
+ selectedIds={selectedIds}
219
+ onToggleOne={toggleOne}
220
+ allSelected={allVisibleSelected}
221
+ onToggleAll={toggleAll}
139
222
  />
140
223
  <div ref={loadMoreRef} className="h-4 w-full" />
141
224
  </>
@@ -146,6 +229,32 @@ export function ContentObjectTypesSearch({ isDirty = false }: ContentObjectTypes
146
229
  isOpen={showCreateModal}
147
230
  onClose={onCloseCreateModal}
148
231
  />
232
+ <ConfirmModal
233
+ isOpen={showBulkDelete}
234
+ title={t('store.actions.deleteType', { count: selectedCount })}
235
+ content={
236
+ <div>
237
+ <p>{t('store.actions.deleteTypeConfirm', { count: selectedCount })}</p>
238
+ {selectedTypes.length > 0 && (
239
+ <>
240
+ <div className="mt-2">{t('store.actions.affectedItems')}</div>
241
+ <ul className="mt-1 max-h-40 overflow-y-auto rounded-md border p-2 text-sm">
242
+ {selectedTypes.map((o) => (
243
+ <li key={o.id} className="truncate py-0.5">
244
+ {o.name || o.id}
245
+ </li>
246
+ ))}
247
+ </ul>
248
+ </>
249
+ )}
250
+ </div>
251
+ }
252
+ onConfirm={handleBulkDelete}
253
+ onCancel={() => setShowBulkDelete(false)}
254
+ confirmationValue="delete"
255
+ confirmationLabel={t('store.actions.typeToConfirmDelete')}
256
+ confirmationPlaceholder="delete"
257
+ />
149
258
  </div>
150
259
  </div>
151
260
  </div>
@@ -2,6 +2,7 @@ import type { ContentObjectTypeItem } from '@vertesia/common';
2
2
  import { Button, CopyButton, Table, TBody, THead, VTooltip } from '@vertesia/ui/core';
3
3
  import { useUITranslation } from '@vertesia/ui/i18n';
4
4
  import { useNavigate } from '@vertesia/ui/router';
5
+ import clsx from 'clsx';
5
6
  import dayjs from 'dayjs';
6
7
  import relativeTime from 'dayjs/plugin/relativeTime';
7
8
  import { Filter } from 'lucide-react';
@@ -15,28 +16,66 @@ interface ContentObjectTypesTableProps {
15
16
  objects?: ContentObjectTypeItem[];
16
17
  isLoading: boolean;
17
18
  onFilter?: (field: string, value: string) => void;
19
+ selectedIds?: string[];
20
+ onToggleOne?: (id: string, checked: boolean) => void;
21
+ allSelected?: boolean;
22
+ onToggleAll?: (checked: boolean) => void;
18
23
  }
19
- export function ContentObjectTypesTable({ objects, isLoading, onFilter }: ContentObjectTypesTableProps) {
24
+ export function ContentObjectTypesTable({
25
+ objects,
26
+ isLoading,
27
+ onFilter,
28
+ selectedIds,
29
+ onToggleOne,
30
+ allSelected,
31
+ onToggleAll,
32
+ }: ContentObjectTypesTableProps) {
20
33
  const { t } = useUITranslation();
21
34
  const navigate = useNavigate();
35
+ const selectable = !!onToggleOne;
22
36
 
23
37
  return (
24
38
  <Table className="w-full">
25
39
  <THead>
26
40
  <tr>
41
+ {selectable && (
42
+ <th className="w-[5%]">
43
+ <input
44
+ type="checkbox"
45
+ checked={!!allSelected}
46
+ aria-label={t('store.actions.selectAllTypes')}
47
+ onChange={(e) => onToggleAll?.(e.target.checked)}
48
+ />
49
+ </th>
50
+ )}
27
51
  <th>{t('store.name')}</th>
28
52
  <th>{t('store.strictMode')}</th>
29
53
  <th>{t('store.semanticChunking')}</th>
30
54
  <th>{t('store.updatedAt')}</th>
31
55
  </tr>
32
56
  </THead>
33
- <TBody isLoading={isLoading && (!objects || objects.length === 0)} columns={4}>
57
+ <TBody isLoading={isLoading && (!objects || objects.length === 0)} columns={selectable ? 5 : 4}>
34
58
  {objects?.map((obj) => (
35
59
  <tr
36
60
  key={obj.id}
37
61
  onClick={() => navigate(`/types/${obj.id}`)}
38
- className="cursor-pointer hover:bg-muted"
62
+ className="group cursor-pointer hover:bg-muted"
39
63
  >
64
+ {selectable && (
65
+ <td className="w-[5%]">
66
+ <input
67
+ type="checkbox"
68
+ className={clsx(
69
+ 'checkbox group-hover:inline-block',
70
+ selectedIds?.includes(obj.id) ? 'inline-block' : 'hidden',
71
+ )}
72
+ checked={selectedIds?.includes(obj.id) ?? false}
73
+ aria-label={t('store.actions.selectType', { name: obj.name })}
74
+ onClick={(e) => e.stopPropagation()}
75
+ onChange={(e) => onToggleOne?.(obj.id, e.target.checked)}
76
+ />
77
+ </td>
78
+ )}
40
79
  <td className="group/field">
41
80
  <div className="flex items-center gap-2 min-w-0">
42
81
  <span className="truncate">{obj.name}</span>
@@ -107,7 +107,7 @@ export class ObjectTypeSearch {
107
107
  const ObjectTypeSearchContext = createContext<ObjectTypeSearch | undefined>(undefined);
108
108
 
109
109
  export function useSearch() {
110
- // biome-ignore lint/style/noNonNullAssertion: intentional non-null assertion; TS can't prove narrowing here
110
+ // biome-ignore lint/style/noNonNullAssertion: intentionally tolerant — called outside its Provider by shared toolbars/action menus where the context is undefined and callers handle it; throwing here crashes those pages (regressed the object-detail page in PR #6024)
111
111
  return useContext(ObjectTypeSearchContext)!;
112
112
  }
113
113
 
@@ -1,4 +1,13 @@
1
1
  {
2
+ "abac_perms.collection.content_manager": "مدير المجموعات",
3
+ "abac_perms.collection.content_reader": "قارئ المجموعات",
4
+ "abac_perms.collection.content_writer": "محرر المجموعات",
5
+ "abac_perms.document.content_manager": "مدير المحتوى",
6
+ "abac_perms.document.content_reader": "قارئ المحتوى",
7
+ "abac_perms.document.content_writer": "محرر المحتوى",
8
+ "abac_perms.scope.collection": "مجموعة",
9
+ "abac_perms.scope.document": "مستند",
10
+ "abac_perms.scope.task": "مهمة",
2
11
  "agent.activeWorkstreams_zero": "لا يوجد لدى الوكيل مسارات عمل نشطة",
3
12
  "agent.activeWorkstreams_one": "لدى الوكيل مسار عمل نشط واحد قيد التشغيل",
4
13
  "agent.activeWorkstreams_two": "لدى الوكيل مساران نشطان قيد التشغيل",
@@ -234,6 +243,14 @@
234
243
  "auth.providers.bodyConsumer": "اختر أحد المزوّدين أدناه للمتابعة.",
235
244
  "auth.providers.eyebrow": "اختر كيفية تسجيل الدخول",
236
245
  "auth.providers.title": "خطوة أخرى",
246
+ "auth.restricted.autoRedirect": "إعادة التوجيه إلى الموقع الرئيسي خلال {{seconds}} ثانية…",
247
+ "auth.restricted.body": "هذا الموقع مقتصر على المستخدمين الذين لديهم وصول مبكر إلى الميزات والإصلاحات الجديدة. يُرجى المتابعة إلى الموقع الرئيسي، أو التواصل مع Vertesia بشأن الوصول المبكر إلى هذا الموقع.",
248
+ "auth.restricted.calloutMeta": "تواصل مع Vertesia للحصول على وصول مبكر",
249
+ "auth.restricted.calloutTitle": "الوصول المبكر مطلوب",
250
+ "auth.restricted.eyebrow": "موقع مقيّد",
251
+ "auth.restricted.redirect": "الانتقال إلى الموقع الرئيسي",
252
+ "auth.restricted.title": "الوصول مقيّد",
253
+ "auth.restricted.useDifferent": "استخدم بريدًا إلكترونيًا آخر",
237
254
  "auth.returning.body": "مشروع فريقك جاهز عندما تكون مستعدًا. تابع بالطريقة الأخيرة التي استخدمتها، أو غيّرها.",
238
255
  "auth.returning.eyebrow": "العودة إلى Vertesia",
239
256
  "auth.returning.notYou": "ليس أنت؟",
@@ -1,4 +1,13 @@
1
1
  {
2
+ "abac_perms.collection.content_manager": "Sammlungsverwalter",
3
+ "abac_perms.collection.content_reader": "Sammlungsleser",
4
+ "abac_perms.collection.content_writer": "Sammlungsbearbeiter",
5
+ "abac_perms.document.content_manager": "Inhaltsverwalter",
6
+ "abac_perms.document.content_reader": "Inhaltsleser",
7
+ "abac_perms.document.content_writer": "Inhaltsbearbeiter",
8
+ "abac_perms.scope.collection": "Sammlung",
9
+ "abac_perms.scope.document": "Dokument",
10
+ "abac_perms.scope.task": "Aufgabe",
2
11
  "agent.activeWorkstreams_one": "Agent hat {{count}} aktiven Arbeitsablauf",
3
12
  "agent.activeWorkstreams_other": "Agent hat {{count}} aktive Arbeitsabläufe",
4
13
  "agent.addAttachment": "Anhang hinzufügen",
@@ -226,6 +235,14 @@
226
235
  "auth.providers.bodyConsumer": "Wähle einen der folgenden Anbieter aus, um fortzufahren.",
227
236
  "auth.providers.eyebrow": "Anmeldeart wählen",
228
237
  "auth.providers.title": "Noch ein Schritt",
238
+ "auth.restricted.autoRedirect": "Weiterleitung zur Hauptwebsite in {{seconds}} s…",
239
+ "auth.restricted.body": "Diese Website ist auf Nutzer mit Early Access zu neuen Funktionen und Fixes beschränkt. Bitte fahre zur Hauptwebsite fort oder kontaktiere Vertesia bezüglich Early Access zu dieser Website.",
240
+ "auth.restricted.calloutMeta": "Kontaktiere Vertesia für Early Access",
241
+ "auth.restricted.calloutTitle": "Early Access erforderlich",
242
+ "auth.restricted.eyebrow": "Eingeschränkte Website",
243
+ "auth.restricted.redirect": "Zur Hauptwebsite",
244
+ "auth.restricted.title": "Zugriff eingeschränkt",
245
+ "auth.restricted.useDifferent": "Andere E-Mail verwenden",
229
246
  "auth.returning.body": "Das Projekt deines Teams wartet auf dich. Fahre mit der zuletzt verwendeten Methode fort oder wechsle.",
230
247
  "auth.returning.eyebrow": "Zurück bei Vertesia",
231
248
  "auth.returning.notYou": "Nicht du?",
@@ -1,4 +1,13 @@
1
1
  {
2
+ "abac_perms.scope.collection": "Collection",
3
+ "abac_perms.scope.document": "Document",
4
+ "abac_perms.scope.task": "Task",
5
+ "abac_perms.collection.content_manager": "Collection Manager",
6
+ "abac_perms.collection.content_reader": "Collection Reader",
7
+ "abac_perms.collection.content_writer": "Collection Writer",
8
+ "abac_perms.document.content_manager": "Content Manager",
9
+ "abac_perms.document.content_reader": "Content Reader",
10
+ "abac_perms.document.content_writer": "Content Writer",
2
11
  "agent.activeWorkstreams_one": "Agent has {{count}} active workstream running",
3
12
  "agent.activeWorkstreams_other": "Agent has {{count}} active workstreams running",
4
13
  "agent.addAttachment": "Add attachment",
@@ -226,6 +235,14 @@
226
235
  "auth.providers.bodyConsumer": "Pick from one of the providers below to continue.",
227
236
  "auth.providers.eyebrow": "Choose How to Sign In",
228
237
  "auth.providers.title": "One more step",
238
+ "auth.restricted.autoRedirect": "Redirecting to the main site in {{seconds}}s…",
239
+ "auth.restricted.body": "This site is restricted to users with early access to new features and fixes. Please continue to the main site, or contact Vertesia about early access to this site.",
240
+ "auth.restricted.calloutMeta": "Contact Vertesia for early access",
241
+ "auth.restricted.calloutTitle": "Early access required",
242
+ "auth.restricted.eyebrow": "Restricted Site",
243
+ "auth.restricted.redirect": "Go to the main site",
244
+ "auth.restricted.title": "Access restricted",
245
+ "auth.restricted.useDifferent": "Use a different email",
229
246
  "auth.returning.body": "Your team's project is ready when you are. Continue with the last method you used, or switch things up.",
230
247
  "auth.returning.eyebrow": "Returning to Vertesia",
231
248
  "auth.returning.notYou": "Not you?",
@@ -412,6 +429,22 @@
412
429
  "store.actions.delete": "Delete",
413
430
  "store.actions.deleteObjects": "Delete Objects",
414
431
  "store.actions.deleteTheSelectedObjects": "Delete the selected objects",
432
+ "store.actions.deleteSelected": "Delete selected",
433
+ "store.actions.deleteType_one": "Delete Type",
434
+ "store.actions.deleteType_other": "Delete Types",
435
+ "store.actions.deleteTypeConfirm_one": "Delete this type? It will be permanently removed. This action cannot be undone.",
436
+ "store.actions.deleteTypeConfirm_other": "Delete {{count}} selected types? They will be permanently removed. This action cannot be undone.",
437
+ "store.actions.deleting": "Deleting...",
438
+ "store.actions.selectedCount": "{{n}} selected",
439
+ "store.actions.affectedItems": "Affected items:",
440
+ "store.actions.clearSelection": "Clear selection",
441
+ "store.actions.selectAllTypes": "Select all types",
442
+ "store.actions.selectType": "Select type {{name}}",
443
+ "store.actions.typeToConfirmDelete": "Type \"delete\" to confirm",
444
+ "store.actions.typeDeleted_one": "{{count}} type deleted",
445
+ "store.actions.typeDeleted_other": "{{count}} types deleted",
446
+ "store.actions.typeDeletePartial": "{{succeeded}} deleted, {{failed}} failed",
447
+ "store.actions.failedToDeleteTypes": "Failed to delete types",
415
448
  "store.actions.errorChangingType": "Error changing type",
416
449
  "store.actions.errorDeletingObjects": "Error deleting objects",
417
450
  "store.actions.errorExportProperties": "Error Export Properties",
@@ -1,4 +1,13 @@
1
1
  {
2
+ "abac_perms.collection.content_manager": "Gestor de colección",
3
+ "abac_perms.collection.content_reader": "Lector de colección",
4
+ "abac_perms.collection.content_writer": "Editor de colección",
5
+ "abac_perms.document.content_manager": "Gestor de contenido",
6
+ "abac_perms.document.content_reader": "Lector de contenido",
7
+ "abac_perms.document.content_writer": "Editor de contenido",
8
+ "abac_perms.scope.collection": "Colección",
9
+ "abac_perms.scope.document": "Documento",
10
+ "abac_perms.scope.task": "Tarea",
2
11
  "agent.activeWorkstreams_one": "El agente tiene {{count}} flujo de trabajo activo en ejecución",
3
12
  "agent.activeWorkstreams_many": "El agente tiene {{count}} flujos de trabajo activos en ejecución",
4
13
  "agent.activeWorkstreams_other": "El agente tiene {{count}} flujos de trabajo activos en ejecución",
@@ -228,6 +237,14 @@
228
237
  "auth.providers.bodyConsumer": "Elige uno de los siguientes proveedores para continuar.",
229
238
  "auth.providers.eyebrow": "Elige cómo iniciar sesión",
230
239
  "auth.providers.title": "Un paso más",
240
+ "auth.restricted.autoRedirect": "Redirigiendo al sitio principal en {{seconds}} s…",
241
+ "auth.restricted.body": "Este sitio está restringido a usuarios con acceso anticipado a nuevas funciones y correcciones. Continúa al sitio principal o contacta con Vertesia sobre el acceso anticipado a este sitio.",
242
+ "auth.restricted.calloutMeta": "Contacta con Vertesia para obtener acceso anticipado",
243
+ "auth.restricted.calloutTitle": "Se requiere acceso anticipado",
244
+ "auth.restricted.eyebrow": "Sitio restringido",
245
+ "auth.restricted.redirect": "Ir al sitio principal",
246
+ "auth.restricted.title": "Acceso restringido",
247
+ "auth.restricted.useDifferent": "Usar otro correo",
231
248
  "auth.returning.body": "El proyecto de tu equipo está listo cuando tú lo estés. Continúa con el último método que usaste o cambia de opción.",
232
249
  "auth.returning.eyebrow": "Bienvenido de nuevo a Vertesia",
233
250
  "auth.returning.notYou": "¿No eres tú?",
@@ -1,4 +1,13 @@
1
1
  {
2
+ "abac_perms.collection.content_manager": "Gestionnaire de collection",
3
+ "abac_perms.collection.content_reader": "Lecteur de collection",
4
+ "abac_perms.collection.content_writer": "Éditeur de collection",
5
+ "abac_perms.document.content_manager": "Gestionnaire de contenu",
6
+ "abac_perms.document.content_reader": "Lecteur de contenu",
7
+ "abac_perms.document.content_writer": "Éditeur de contenu",
8
+ "abac_perms.scope.collection": "Collection",
9
+ "abac_perms.scope.document": "Document",
10
+ "abac_perms.scope.task": "Tâche",
2
11
  "agent.activeWorkstreams_one": "L'agent a {{count}} flux de travail actif en cours",
3
12
  "agent.activeWorkstreams_many": "L'agent a {{count}} flux de travail actifs en cours",
4
13
  "agent.activeWorkstreams_other": "L'agent a {{count}} flux de travail actifs en cours",
@@ -228,6 +237,14 @@
228
237
  "auth.providers.bodyConsumer": "Choisissez l'un des fournisseurs ci-dessous pour continuer.",
229
238
  "auth.providers.eyebrow": "Choisir comment se connecter",
230
239
  "auth.providers.title": "Encore une étape",
240
+ "auth.restricted.autoRedirect": "Redirection vers le site principal dans {{seconds}} s…",
241
+ "auth.restricted.body": "Ce site est réservé aux utilisateurs disposant d'un accès anticipé aux nouvelles fonctionnalités et corrections. Veuillez continuer vers le site principal, ou contactez Vertesia au sujet de l'accès anticipé à ce site.",
242
+ "auth.restricted.calloutMeta": "Contactez Vertesia pour un accès anticipé",
243
+ "auth.restricted.calloutTitle": "Accès anticipé requis",
244
+ "auth.restricted.eyebrow": "Site restreint",
245
+ "auth.restricted.redirect": "Aller au site principal",
246
+ "auth.restricted.title": "Accès restreint",
247
+ "auth.restricted.useDifferent": "Utiliser une autre adresse",
231
248
  "auth.returning.body": "Le projet de votre équipe vous attend. Continuez avec la dernière méthode utilisée, ou changez.",
232
249
  "auth.returning.eyebrow": "Retour sur Vertesia",
233
250
  "auth.returning.notYou": "Ce n'est pas vous ?",
@@ -1,4 +1,13 @@
1
1
  {
2
+ "abac_perms.collection.content_manager": "Gestore raccolta",
3
+ "abac_perms.collection.content_reader": "Lettore raccolta",
4
+ "abac_perms.collection.content_writer": "Editore raccolta",
5
+ "abac_perms.document.content_manager": "Gestore contenuti",
6
+ "abac_perms.document.content_reader": "Lettore contenuti",
7
+ "abac_perms.document.content_writer": "Editore contenuti",
8
+ "abac_perms.scope.collection": "Raccolta",
9
+ "abac_perms.scope.document": "Documento",
10
+ "abac_perms.scope.task": "Attività",
2
11
  "agent.activeWorkstreams_one": "L'agente ha {{count}} flusso di lavoro attivo in esecuzione",
3
12
  "agent.activeWorkstreams_many": "L'agente ha {{count}} flussi di lavoro attivi in esecuzione",
4
13
  "agent.activeWorkstreams_other": "L'agente ha {{count}} flussi di lavoro attivi in esecuzione",
@@ -228,6 +237,14 @@
228
237
  "auth.providers.bodyConsumer": "Scegli uno dei provider qui sotto per continuare.",
229
238
  "auth.providers.eyebrow": "Scegli come accedere",
230
239
  "auth.providers.title": "Un altro passaggio",
240
+ "auth.restricted.autoRedirect": "Reindirizzamento al sito principale tra {{seconds}} s…",
241
+ "auth.restricted.body": "Questo sito è riservato agli utenti con accesso anticipato a nuove funzionalità e correzioni. Continua al sito principale oppure contatta Vertesia per l'accesso anticipato a questo sito.",
242
+ "auth.restricted.calloutMeta": "Contatta Vertesia per l'accesso anticipato",
243
+ "auth.restricted.calloutTitle": "Accesso anticipato richiesto",
244
+ "auth.restricted.eyebrow": "Sito con restrizioni",
245
+ "auth.restricted.redirect": "Vai al sito principale",
246
+ "auth.restricted.title": "Accesso limitato",
247
+ "auth.restricted.useDifferent": "Usa un'altra email",
231
248
  "auth.returning.body": "Il progetto del tuo team ti aspetta. Continua con l'ultimo metodo usato, o cambialo.",
232
249
  "auth.returning.eyebrow": "Ritorno su Vertesia",
233
250
  "auth.returning.notYou": "Non sei tu?",