@agent-native/core 0.77.2 → 0.77.4

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 (2004) hide show
  1. package/corpus/core/CHANGELOG.md +23 -0
  2. package/corpus/core/docs/content/locales/ar-SA/a2a-protocol.md +2 -2
  3. package/corpus/core/docs/content/locales/ar-SA/actions.md +6 -6
  4. package/corpus/core/docs/content/locales/ar-SA/agent-surfaces.md +5 -5
  5. package/corpus/core/docs/content/locales/ar-SA/agent-teams.md +4 -4
  6. package/corpus/core/docs/content/locales/ar-SA/agent-web-surfaces.md +2 -2
  7. package/corpus/core/docs/content/locales/ar-SA/authentication.md +4 -4
  8. package/corpus/core/docs/content/locales/ar-SA/automations.md +3 -3
  9. package/corpus/core/docs/content/locales/ar-SA/blueprint-installer.md +2 -2
  10. package/corpus/core/docs/content/locales/ar-SA/cli-adapters.md +1 -1
  11. package/corpus/core/docs/content/locales/ar-SA/code-agents-ui.md +2 -2
  12. package/corpus/core/docs/content/locales/ar-SA/components.md +14 -14
  13. package/corpus/core/docs/content/locales/ar-SA/context-awareness.md +3 -3
  14. package/corpus/core/docs/content/locales/ar-SA/creating-templates.md +12 -12
  15. package/corpus/core/docs/content/locales/ar-SA/cross-app-sso.md +3 -3
  16. package/corpus/core/docs/content/locales/ar-SA/database.md +7 -7
  17. package/corpus/core/docs/content/locales/ar-SA/deployment.md +4 -4
  18. package/corpus/core/docs/content/locales/ar-SA/dispatch.md +3 -3
  19. package/corpus/core/docs/content/locales/ar-SA/drop-in-agent.md +8 -8
  20. package/corpus/core/docs/content/locales/ar-SA/durable-resume.md +1 -1
  21. package/corpus/core/docs/content/locales/ar-SA/embedding-sdk.md +2 -2
  22. package/corpus/core/docs/content/locales/ar-SA/evals.md +3 -3
  23. package/corpus/core/docs/content/locales/ar-SA/extensions.md +2 -2
  24. package/corpus/core/docs/content/locales/ar-SA/external-agents.md +8 -8
  25. package/corpus/core/docs/content/locales/ar-SA/faq.md +3 -3
  26. package/corpus/core/docs/content/locales/ar-SA/file-uploads.md +4 -4
  27. package/corpus/core/docs/content/locales/ar-SA/frames.md +1 -1
  28. package/corpus/core/docs/content/locales/ar-SA/getting-started.md +13 -13
  29. package/corpus/core/docs/content/locales/ar-SA/harness-agents.md +3 -3
  30. package/corpus/core/docs/content/locales/ar-SA/human-approval.md +3 -3
  31. package/corpus/core/docs/content/locales/ar-SA/key-concepts.md +14 -14
  32. package/corpus/core/docs/content/locales/ar-SA/local-file-mode.md +5 -5
  33. package/corpus/core/docs/content/locales/ar-SA/mcp-apps.md +9 -9
  34. package/corpus/core/docs/content/locales/ar-SA/mcp-clients.md +9 -9
  35. package/corpus/core/docs/content/locales/ar-SA/mcp-protocol.md +5 -5
  36. package/corpus/core/docs/content/locales/ar-SA/messaging.md +5 -5
  37. package/corpus/core/docs/content/locales/ar-SA/migration-workbench.md +1 -1
  38. package/corpus/core/docs/content/locales/ar-SA/multi-app-workspace.md +1 -1
  39. package/corpus/core/docs/content/locales/ar-SA/multi-tenancy.md +2 -2
  40. package/corpus/core/docs/content/locales/ar-SA/native-chat-ui.md +4 -4
  41. package/corpus/core/docs/content/locales/ar-SA/notifications.md +5 -5
  42. package/corpus/core/docs/content/locales/ar-SA/observability.md +1 -1
  43. package/corpus/core/docs/content/locales/ar-SA/observational-memory.md +2 -2
  44. package/corpus/core/docs/content/locales/ar-SA/onboarding.md +8 -8
  45. package/corpus/core/docs/content/locales/ar-SA/plan-plugin.md +3 -3
  46. package/corpus/core/docs/content/locales/ar-SA/pr-visual-recap.md +11 -11
  47. package/corpus/core/docs/content/locales/ar-SA/processors.md +2 -2
  48. package/corpus/core/docs/content/locales/ar-SA/progress.md +3 -3
  49. package/corpus/core/docs/content/locales/ar-SA/pure-agent-apps.md +1 -1
  50. package/corpus/core/docs/content/locales/ar-SA/real-time-collaboration.md +6 -6
  51. package/corpus/core/docs/content/locales/ar-SA/recurring-jobs.md +5 -5
  52. package/corpus/core/docs/content/locales/ar-SA/routing.md +1 -1
  53. package/corpus/core/docs/content/locales/ar-SA/sandbox-adapters.md +3 -3
  54. package/corpus/core/docs/content/locales/ar-SA/security.md +10 -10
  55. package/corpus/core/docs/content/locales/ar-SA/server.md +9 -9
  56. package/corpus/core/docs/content/locales/ar-SA/sharing.md +7 -7
  57. package/corpus/core/docs/content/locales/ar-SA/skills-guide.md +16 -16
  58. package/corpus/core/docs/content/locales/ar-SA/template-analytics.md +10 -10
  59. package/corpus/core/docs/content/locales/ar-SA/template-assets.md +19 -19
  60. package/corpus/core/docs/content/locales/ar-SA/template-brain.md +11 -11
  61. package/corpus/core/docs/content/locales/ar-SA/template-calendar.md +9 -9
  62. package/corpus/core/docs/content/locales/ar-SA/template-chat.md +3 -3
  63. package/corpus/core/docs/content/locales/ar-SA/template-clips.md +13 -13
  64. package/corpus/core/docs/content/locales/ar-SA/template-content.md +15 -15
  65. package/corpus/core/docs/content/locales/ar-SA/template-design.md +7 -7
  66. package/corpus/core/docs/content/locales/ar-SA/template-dispatch.md +8 -8
  67. package/corpus/core/docs/content/locales/ar-SA/template-forms.md +9 -9
  68. package/corpus/core/docs/content/locales/ar-SA/template-mail.md +7 -7
  69. package/corpus/core/docs/content/locales/ar-SA/template-plan.md +3 -3
  70. package/corpus/core/docs/content/locales/ar-SA/template-slides.md +8 -8
  71. package/corpus/core/docs/content/locales/ar-SA/template-videos.md +5 -5
  72. package/corpus/core/docs/content/locales/ar-SA/tracking.md +6 -6
  73. package/corpus/core/docs/content/locales/ar-SA/using-your-agent.md +4 -4
  74. package/corpus/core/docs/content/locales/ar-SA/voice-input.md +4 -4
  75. package/corpus/core/docs/content/locales/ar-SA/what-is-agent-native.md +4 -4
  76. package/corpus/core/docs/content/locales/ar-SA/workspace-connections.md +8 -8
  77. package/corpus/core/docs/content/locales/ar-SA/workspace-management.md +4 -4
  78. package/corpus/core/docs/content/locales/ar-SA/workspace.md +24 -24
  79. package/corpus/core/docs/content/locales/ar-SA/writing-agent-instructions.md +18 -18
  80. package/corpus/core/docs/content/locales/de-DE/a2a-protocol.md +7 -7
  81. package/corpus/core/docs/content/locales/de-DE/actions.md +5 -5
  82. package/corpus/core/docs/content/locales/de-DE/agent-mentions.md +4 -4
  83. package/corpus/core/docs/content/locales/de-DE/agent-surfaces.md +22 -22
  84. package/corpus/core/docs/content/locales/de-DE/agent-teams.md +4 -4
  85. package/corpus/core/docs/content/locales/de-DE/agent-web-surfaces.md +4 -4
  86. package/corpus/core/docs/content/locales/de-DE/authentication.md +6 -6
  87. package/corpus/core/docs/content/locales/de-DE/automations.md +8 -8
  88. package/corpus/core/docs/content/locales/de-DE/blueprint-installer.md +2 -2
  89. package/corpus/core/docs/content/locales/de-DE/client.md +6 -6
  90. package/corpus/core/docs/content/locales/de-DE/cloneable-saas.md +2 -2
  91. package/corpus/core/docs/content/locales/de-DE/code-agents-ui.md +9 -9
  92. package/corpus/core/docs/content/locales/de-DE/components.md +15 -15
  93. package/corpus/core/docs/content/locales/de-DE/context-awareness.md +8 -8
  94. package/corpus/core/docs/content/locales/de-DE/creating-templates.md +13 -13
  95. package/corpus/core/docs/content/locales/de-DE/cross-app-sso.md +3 -3
  96. package/corpus/core/docs/content/locales/de-DE/database.md +5 -5
  97. package/corpus/core/docs/content/locales/de-DE/deployment.md +6 -6
  98. package/corpus/core/docs/content/locales/de-DE/dispatch.md +3 -3
  99. package/corpus/core/docs/content/locales/de-DE/drop-in-agent.md +14 -14
  100. package/corpus/core/docs/content/locales/de-DE/durable-resume.md +1 -1
  101. package/corpus/core/docs/content/locales/de-DE/embedding-sdk.md +2 -2
  102. package/corpus/core/docs/content/locales/de-DE/evals.md +2 -2
  103. package/corpus/core/docs/content/locales/de-DE/extensions.md +2 -2
  104. package/corpus/core/docs/content/locales/de-DE/external-agents.md +6 -6
  105. package/corpus/core/docs/content/locales/de-DE/faq.md +5 -5
  106. package/corpus/core/docs/content/locales/de-DE/file-uploads.md +4 -4
  107. package/corpus/core/docs/content/locales/de-DE/frames.md +2 -2
  108. package/corpus/core/docs/content/locales/de-DE/getting-started.md +16 -16
  109. package/corpus/core/docs/content/locales/de-DE/harness-agents.md +3 -3
  110. package/corpus/core/docs/content/locales/de-DE/human-approval.md +4 -4
  111. package/corpus/core/docs/content/locales/de-DE/key-concepts.md +14 -14
  112. package/corpus/core/docs/content/locales/de-DE/local-file-mode.md +8 -8
  113. package/corpus/core/docs/content/locales/de-DE/mcp-apps.md +4 -4
  114. package/corpus/core/docs/content/locales/de-DE/mcp-clients.md +7 -7
  115. package/corpus/core/docs/content/locales/de-DE/mcp-protocol.md +3 -3
  116. package/corpus/core/docs/content/locales/de-DE/messaging.md +5 -5
  117. package/corpus/core/docs/content/locales/de-DE/migration-workbench.md +1 -1
  118. package/corpus/core/docs/content/locales/de-DE/multi-app-workspace.md +2 -2
  119. package/corpus/core/docs/content/locales/de-DE/multi-tenancy.md +1 -1
  120. package/corpus/core/docs/content/locales/de-DE/native-chat-ui.md +8 -8
  121. package/corpus/core/docs/content/locales/de-DE/notifications.md +3 -3
  122. package/corpus/core/docs/content/locales/de-DE/observability.md +2 -2
  123. package/corpus/core/docs/content/locales/de-DE/observational-memory.md +2 -2
  124. package/corpus/core/docs/content/locales/de-DE/onboarding.md +8 -8
  125. package/corpus/core/docs/content/locales/de-DE/plan-plugin.md +3 -3
  126. package/corpus/core/docs/content/locales/de-DE/pr-visual-recap.md +11 -11
  127. package/corpus/core/docs/content/locales/de-DE/processors.md +1 -1
  128. package/corpus/core/docs/content/locales/de-DE/progress.md +2 -2
  129. package/corpus/core/docs/content/locales/de-DE/pure-agent-apps.md +1 -1
  130. package/corpus/core/docs/content/locales/de-DE/real-time-collaboration.md +8 -8
  131. package/corpus/core/docs/content/locales/de-DE/recurring-jobs.md +5 -5
  132. package/corpus/core/docs/content/locales/de-DE/routing.md +1 -1
  133. package/corpus/core/docs/content/locales/de-DE/sandbox-adapters.md +2 -2
  134. package/corpus/core/docs/content/locales/de-DE/security.md +10 -10
  135. package/corpus/core/docs/content/locales/de-DE/server.md +10 -10
  136. package/corpus/core/docs/content/locales/de-DE/sharing.md +6 -6
  137. package/corpus/core/docs/content/locales/de-DE/skills-guide.md +17 -17
  138. package/corpus/core/docs/content/locales/de-DE/template-analytics.md +10 -10
  139. package/corpus/core/docs/content/locales/de-DE/template-assets.md +21 -21
  140. package/corpus/core/docs/content/locales/de-DE/template-brain.md +11 -11
  141. package/corpus/core/docs/content/locales/de-DE/template-calendar.md +10 -10
  142. package/corpus/core/docs/content/locales/de-DE/template-chat.md +5 -5
  143. package/corpus/core/docs/content/locales/de-DE/template-clips.md +14 -14
  144. package/corpus/core/docs/content/locales/de-DE/template-content.md +14 -14
  145. package/corpus/core/docs/content/locales/de-DE/template-design.md +7 -7
  146. package/corpus/core/docs/content/locales/de-DE/template-dispatch.md +12 -12
  147. package/corpus/core/docs/content/locales/de-DE/template-forms.md +9 -9
  148. package/corpus/core/docs/content/locales/de-DE/template-mail.md +6 -6
  149. package/corpus/core/docs/content/locales/de-DE/template-plan.md +3 -3
  150. package/corpus/core/docs/content/locales/de-DE/template-slides.md +8 -8
  151. package/corpus/core/docs/content/locales/de-DE/template-videos.md +6 -6
  152. package/corpus/core/docs/content/locales/de-DE/tracking.md +3 -3
  153. package/corpus/core/docs/content/locales/de-DE/using-your-agent.md +6 -6
  154. package/corpus/core/docs/content/locales/de-DE/voice-input.md +9 -9
  155. package/corpus/core/docs/content/locales/de-DE/what-is-agent-native.md +6 -6
  156. package/corpus/core/docs/content/locales/de-DE/workspace-connections.md +9 -9
  157. package/corpus/core/docs/content/locales/de-DE/workspace-management.md +5 -5
  158. package/corpus/core/docs/content/locales/de-DE/workspace.md +23 -23
  159. package/corpus/core/docs/content/locales/de-DE/writing-agent-instructions.md +30 -30
  160. package/corpus/core/docs/content/locales/es-ES/a2a-protocol.md +7 -7
  161. package/corpus/core/docs/content/locales/es-ES/actions.md +2 -2
  162. package/corpus/core/docs/content/locales/es-ES/agent-mentions.md +3 -3
  163. package/corpus/core/docs/content/locales/es-ES/agent-surfaces.md +7 -7
  164. package/corpus/core/docs/content/locales/es-ES/agent-teams.md +3 -3
  165. package/corpus/core/docs/content/locales/es-ES/agent-web-surfaces.md +5 -5
  166. package/corpus/core/docs/content/locales/es-ES/authentication.md +6 -6
  167. package/corpus/core/docs/content/locales/es-ES/automations.md +8 -8
  168. package/corpus/core/docs/content/locales/es-ES/blueprint-installer.md +2 -2
  169. package/corpus/core/docs/content/locales/es-ES/client.md +1 -1
  170. package/corpus/core/docs/content/locales/es-ES/cloneable-saas.md +2 -2
  171. package/corpus/core/docs/content/locales/es-ES/code-agents-ui.md +4 -4
  172. package/corpus/core/docs/content/locales/es-ES/components.md +5 -5
  173. package/corpus/core/docs/content/locales/es-ES/context-awareness.md +8 -8
  174. package/corpus/core/docs/content/locales/es-ES/creating-templates.md +12 -12
  175. package/corpus/core/docs/content/locales/es-ES/cross-app-sso.md +3 -3
  176. package/corpus/core/docs/content/locales/es-ES/database.md +5 -5
  177. package/corpus/core/docs/content/locales/es-ES/deployment.md +4 -4
  178. package/corpus/core/docs/content/locales/es-ES/dispatch.md +3 -3
  179. package/corpus/core/docs/content/locales/es-ES/drop-in-agent.md +8 -8
  180. package/corpus/core/docs/content/locales/es-ES/durable-resume.md +1 -1
  181. package/corpus/core/docs/content/locales/es-ES/embedding-sdk.md +2 -2
  182. package/corpus/core/docs/content/locales/es-ES/evals.md +2 -2
  183. package/corpus/core/docs/content/locales/es-ES/extensions.md +2 -2
  184. package/corpus/core/docs/content/locales/es-ES/external-agents.md +5 -5
  185. package/corpus/core/docs/content/locales/es-ES/faq.md +3 -3
  186. package/corpus/core/docs/content/locales/es-ES/file-uploads.md +4 -4
  187. package/corpus/core/docs/content/locales/es-ES/frames.md +1 -1
  188. package/corpus/core/docs/content/locales/es-ES/getting-started.md +13 -13
  189. package/corpus/core/docs/content/locales/es-ES/harness-agents.md +3 -3
  190. package/corpus/core/docs/content/locales/es-ES/human-approval.md +3 -3
  191. package/corpus/core/docs/content/locales/es-ES/key-concepts.md +14 -14
  192. package/corpus/core/docs/content/locales/es-ES/local-file-mode.md +6 -6
  193. package/corpus/core/docs/content/locales/es-ES/mcp-apps.md +4 -4
  194. package/corpus/core/docs/content/locales/es-ES/mcp-clients.md +8 -8
  195. package/corpus/core/docs/content/locales/es-ES/mcp-protocol.md +3 -3
  196. package/corpus/core/docs/content/locales/es-ES/messaging.md +4 -4
  197. package/corpus/core/docs/content/locales/es-ES/migration-workbench.md +1 -1
  198. package/corpus/core/docs/content/locales/es-ES/multi-app-workspace.md +1 -1
  199. package/corpus/core/docs/content/locales/es-ES/multi-tenancy.md +1 -1
  200. package/corpus/core/docs/content/locales/es-ES/native-chat-ui.md +3 -3
  201. package/corpus/core/docs/content/locales/es-ES/notifications.md +3 -3
  202. package/corpus/core/docs/content/locales/es-ES/observability.md +2 -2
  203. package/corpus/core/docs/content/locales/es-ES/observational-memory.md +2 -2
  204. package/corpus/core/docs/content/locales/es-ES/onboarding.md +8 -8
  205. package/corpus/core/docs/content/locales/es-ES/plan-plugin.md +3 -3
  206. package/corpus/core/docs/content/locales/es-ES/pr-visual-recap.md +11 -11
  207. package/corpus/core/docs/content/locales/es-ES/processors.md +1 -1
  208. package/corpus/core/docs/content/locales/es-ES/progress.md +2 -2
  209. package/corpus/core/docs/content/locales/es-ES/pure-agent-apps.md +1 -1
  210. package/corpus/core/docs/content/locales/es-ES/real-time-collaboration.md +6 -6
  211. package/corpus/core/docs/content/locales/es-ES/recurring-jobs.md +5 -5
  212. package/corpus/core/docs/content/locales/es-ES/routing.md +1 -1
  213. package/corpus/core/docs/content/locales/es-ES/sandbox-adapters.md +2 -2
  214. package/corpus/core/docs/content/locales/es-ES/security.md +8 -8
  215. package/corpus/core/docs/content/locales/es-ES/server.md +11 -11
  216. package/corpus/core/docs/content/locales/es-ES/sharing.md +6 -6
  217. package/corpus/core/docs/content/locales/es-ES/skills-guide.md +16 -16
  218. package/corpus/core/docs/content/locales/es-ES/template-analytics.md +10 -10
  219. package/corpus/core/docs/content/locales/es-ES/template-assets.md +19 -19
  220. package/corpus/core/docs/content/locales/es-ES/template-brain.md +11 -11
  221. package/corpus/core/docs/content/locales/es-ES/template-calendar.md +9 -9
  222. package/corpus/core/docs/content/locales/es-ES/template-chat.md +3 -3
  223. package/corpus/core/docs/content/locales/es-ES/template-clips.md +14 -14
  224. package/corpus/core/docs/content/locales/es-ES/template-content.md +13 -13
  225. package/corpus/core/docs/content/locales/es-ES/template-design.md +7 -7
  226. package/corpus/core/docs/content/locales/es-ES/template-dispatch.md +8 -8
  227. package/corpus/core/docs/content/locales/es-ES/template-forms.md +9 -9
  228. package/corpus/core/docs/content/locales/es-ES/template-mail.md +6 -6
  229. package/corpus/core/docs/content/locales/es-ES/template-plan.md +3 -3
  230. package/corpus/core/docs/content/locales/es-ES/template-slides.md +8 -8
  231. package/corpus/core/docs/content/locales/es-ES/template-videos.md +5 -5
  232. package/corpus/core/docs/content/locales/es-ES/tracking.md +3 -3
  233. package/corpus/core/docs/content/locales/es-ES/using-your-agent.md +5 -5
  234. package/corpus/core/docs/content/locales/es-ES/voice-input.md +4 -4
  235. package/corpus/core/docs/content/locales/es-ES/what-is-agent-native.md +6 -6
  236. package/corpus/core/docs/content/locales/es-ES/workspace-connections.md +8 -8
  237. package/corpus/core/docs/content/locales/es-ES/workspace-management.md +4 -4
  238. package/corpus/core/docs/content/locales/es-ES/workspace.md +23 -23
  239. package/corpus/core/docs/content/locales/es-ES/writing-agent-instructions.md +18 -18
  240. package/corpus/core/docs/content/locales/fr-FR/a2a-protocol.md +7 -7
  241. package/corpus/core/docs/content/locales/fr-FR/actions.md +2 -2
  242. package/corpus/core/docs/content/locales/fr-FR/agent-mentions.md +3 -3
  243. package/corpus/core/docs/content/locales/fr-FR/agent-surfaces.md +7 -7
  244. package/corpus/core/docs/content/locales/fr-FR/agent-teams.md +3 -3
  245. package/corpus/core/docs/content/locales/fr-FR/agent-web-surfaces.md +5 -5
  246. package/corpus/core/docs/content/locales/fr-FR/authentication.md +6 -6
  247. package/corpus/core/docs/content/locales/fr-FR/automations.md +8 -8
  248. package/corpus/core/docs/content/locales/fr-FR/blueprint-installer.md +2 -2
  249. package/corpus/core/docs/content/locales/fr-FR/client.md +1 -1
  250. package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.md +2 -2
  251. package/corpus/core/docs/content/locales/fr-FR/code-agents-ui.md +4 -4
  252. package/corpus/core/docs/content/locales/fr-FR/components.md +5 -5
  253. package/corpus/core/docs/content/locales/fr-FR/context-awareness.md +8 -8
  254. package/corpus/core/docs/content/locales/fr-FR/creating-templates.md +12 -12
  255. package/corpus/core/docs/content/locales/fr-FR/cross-app-sso.md +4 -4
  256. package/corpus/core/docs/content/locales/fr-FR/database.md +5 -5
  257. package/corpus/core/docs/content/locales/fr-FR/deployment.md +5 -5
  258. package/corpus/core/docs/content/locales/fr-FR/dispatch.md +3 -3
  259. package/corpus/core/docs/content/locales/fr-FR/drop-in-agent.md +9 -9
  260. package/corpus/core/docs/content/locales/fr-FR/durable-resume.md +1 -1
  261. package/corpus/core/docs/content/locales/fr-FR/embedding-sdk.md +7 -7
  262. package/corpus/core/docs/content/locales/fr-FR/evals.md +2 -2
  263. package/corpus/core/docs/content/locales/fr-FR/extensions.md +2 -2
  264. package/corpus/core/docs/content/locales/fr-FR/external-agents.md +5 -5
  265. package/corpus/core/docs/content/locales/fr-FR/faq.md +3 -3
  266. package/corpus/core/docs/content/locales/fr-FR/file-uploads.md +5 -5
  267. package/corpus/core/docs/content/locales/fr-FR/frames.md +1 -1
  268. package/corpus/core/docs/content/locales/fr-FR/getting-started.md +13 -13
  269. package/corpus/core/docs/content/locales/fr-FR/harness-agents.md +3 -3
  270. package/corpus/core/docs/content/locales/fr-FR/human-approval.md +3 -3
  271. package/corpus/core/docs/content/locales/fr-FR/key-concepts.md +15 -15
  272. package/corpus/core/docs/content/locales/fr-FR/local-file-mode.md +5 -5
  273. package/corpus/core/docs/content/locales/fr-FR/mcp-apps.md +4 -4
  274. package/corpus/core/docs/content/locales/fr-FR/mcp-clients.md +8 -8
  275. package/corpus/core/docs/content/locales/fr-FR/mcp-protocol.md +3 -3
  276. package/corpus/core/docs/content/locales/fr-FR/messaging.md +4 -4
  277. package/corpus/core/docs/content/locales/fr-FR/migration-workbench.md +1 -1
  278. package/corpus/core/docs/content/locales/fr-FR/multi-app-workspace.md +1 -1
  279. package/corpus/core/docs/content/locales/fr-FR/multi-tenancy.md +1 -1
  280. package/corpus/core/docs/content/locales/fr-FR/native-chat-ui.md +3 -3
  281. package/corpus/core/docs/content/locales/fr-FR/notifications.md +3 -3
  282. package/corpus/core/docs/content/locales/fr-FR/observability.md +2 -2
  283. package/corpus/core/docs/content/locales/fr-FR/observational-memory.md +2 -2
  284. package/corpus/core/docs/content/locales/fr-FR/onboarding.md +8 -8
  285. package/corpus/core/docs/content/locales/fr-FR/plan-plugin.md +3 -3
  286. package/corpus/core/docs/content/locales/fr-FR/pr-visual-recap.md +11 -11
  287. package/corpus/core/docs/content/locales/fr-FR/processors.md +1 -1
  288. package/corpus/core/docs/content/locales/fr-FR/progress.md +2 -2
  289. package/corpus/core/docs/content/locales/fr-FR/pure-agent-apps.md +1 -1
  290. package/corpus/core/docs/content/locales/fr-FR/real-time-collaboration.md +8 -8
  291. package/corpus/core/docs/content/locales/fr-FR/recurring-jobs.md +5 -5
  292. package/corpus/core/docs/content/locales/fr-FR/routing.md +1 -1
  293. package/corpus/core/docs/content/locales/fr-FR/sandbox-adapters.md +2 -2
  294. package/corpus/core/docs/content/locales/fr-FR/security.md +8 -8
  295. package/corpus/core/docs/content/locales/fr-FR/server.md +10 -10
  296. package/corpus/core/docs/content/locales/fr-FR/sharing.md +6 -6
  297. package/corpus/core/docs/content/locales/fr-FR/skills-guide.md +16 -16
  298. package/corpus/core/docs/content/locales/fr-FR/template-analytics.md +10 -10
  299. package/corpus/core/docs/content/locales/fr-FR/template-assets.md +20 -20
  300. package/corpus/core/docs/content/locales/fr-FR/template-brain.md +11 -11
  301. package/corpus/core/docs/content/locales/fr-FR/template-calendar.md +9 -9
  302. package/corpus/core/docs/content/locales/fr-FR/template-chat.md +3 -3
  303. package/corpus/core/docs/content/locales/fr-FR/template-clips.md +15 -15
  304. package/corpus/core/docs/content/locales/fr-FR/template-content.md +13 -13
  305. package/corpus/core/docs/content/locales/fr-FR/template-design.md +8 -8
  306. package/corpus/core/docs/content/locales/fr-FR/template-dispatch.md +8 -8
  307. package/corpus/core/docs/content/locales/fr-FR/template-forms.md +10 -10
  308. package/corpus/core/docs/content/locales/fr-FR/template-mail.md +6 -6
  309. package/corpus/core/docs/content/locales/fr-FR/template-plan.md +3 -3
  310. package/corpus/core/docs/content/locales/fr-FR/template-slides.md +9 -9
  311. package/corpus/core/docs/content/locales/fr-FR/template-videos.md +5 -5
  312. package/corpus/core/docs/content/locales/fr-FR/tracking.md +3 -3
  313. package/corpus/core/docs/content/locales/fr-FR/using-your-agent.md +5 -5
  314. package/corpus/core/docs/content/locales/fr-FR/voice-input.md +4 -4
  315. package/corpus/core/docs/content/locales/fr-FR/what-is-agent-native.md +6 -6
  316. package/corpus/core/docs/content/locales/fr-FR/workspace-connections.md +8 -8
  317. package/corpus/core/docs/content/locales/fr-FR/workspace-management.md +5 -5
  318. package/corpus/core/docs/content/locales/fr-FR/workspace.md +23 -23
  319. package/corpus/core/docs/content/locales/fr-FR/writing-agent-instructions.md +18 -18
  320. package/corpus/core/docs/content/locales/hi-IN/a2a-protocol.md +7 -7
  321. package/corpus/core/docs/content/locales/hi-IN/actions.md +3 -3
  322. package/corpus/core/docs/content/locales/hi-IN/agent-mentions.md +3 -3
  323. package/corpus/core/docs/content/locales/hi-IN/agent-surfaces.md +7 -7
  324. package/corpus/core/docs/content/locales/hi-IN/agent-teams.md +3 -3
  325. package/corpus/core/docs/content/locales/hi-IN/agent-web-surfaces.md +5 -5
  326. package/corpus/core/docs/content/locales/hi-IN/authentication.md +6 -6
  327. package/corpus/core/docs/content/locales/hi-IN/automations.md +8 -8
  328. package/corpus/core/docs/content/locales/hi-IN/blueprint-installer.md +2 -2
  329. package/corpus/core/docs/content/locales/hi-IN/client.md +1 -1
  330. package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.md +2 -2
  331. package/corpus/core/docs/content/locales/hi-IN/code-agents-ui.md +4 -4
  332. package/corpus/core/docs/content/locales/hi-IN/components.md +5 -5
  333. package/corpus/core/docs/content/locales/hi-IN/context-awareness.md +8 -8
  334. package/corpus/core/docs/content/locales/hi-IN/creating-templates.md +14 -14
  335. package/corpus/core/docs/content/locales/hi-IN/cross-app-sso.md +3 -3
  336. package/corpus/core/docs/content/locales/hi-IN/database.md +5 -5
  337. package/corpus/core/docs/content/locales/hi-IN/deployment.md +5 -5
  338. package/corpus/core/docs/content/locales/hi-IN/dispatch.md +4 -4
  339. package/corpus/core/docs/content/locales/hi-IN/drop-in-agent.md +8 -8
  340. package/corpus/core/docs/content/locales/hi-IN/durable-resume.md +1 -1
  341. package/corpus/core/docs/content/locales/hi-IN/embedding-sdk.md +2 -2
  342. package/corpus/core/docs/content/locales/hi-IN/evals.md +2 -2
  343. package/corpus/core/docs/content/locales/hi-IN/extensions.md +2 -2
  344. package/corpus/core/docs/content/locales/hi-IN/external-agents.md +5 -5
  345. package/corpus/core/docs/content/locales/hi-IN/faq.md +3 -3
  346. package/corpus/core/docs/content/locales/hi-IN/file-uploads.md +4 -4
  347. package/corpus/core/docs/content/locales/hi-IN/frames.md +1 -1
  348. package/corpus/core/docs/content/locales/hi-IN/getting-started.md +14 -14
  349. package/corpus/core/docs/content/locales/hi-IN/harness-agents.md +3 -3
  350. package/corpus/core/docs/content/locales/hi-IN/human-approval.md +3 -3
  351. package/corpus/core/docs/content/locales/hi-IN/key-concepts.md +14 -14
  352. package/corpus/core/docs/content/locales/hi-IN/local-file-mode.md +5 -5
  353. package/corpus/core/docs/content/locales/hi-IN/mcp-apps.md +4 -4
  354. package/corpus/core/docs/content/locales/hi-IN/mcp-clients.md +7 -7
  355. package/corpus/core/docs/content/locales/hi-IN/mcp-protocol.md +3 -3
  356. package/corpus/core/docs/content/locales/hi-IN/messaging.md +6 -6
  357. package/corpus/core/docs/content/locales/hi-IN/migration-workbench.md +1 -1
  358. package/corpus/core/docs/content/locales/hi-IN/multi-app-workspace.md +1 -1
  359. package/corpus/core/docs/content/locales/hi-IN/multi-tenancy.md +1 -1
  360. package/corpus/core/docs/content/locales/hi-IN/native-chat-ui.md +3 -3
  361. package/corpus/core/docs/content/locales/hi-IN/notifications.md +3 -3
  362. package/corpus/core/docs/content/locales/hi-IN/observability.md +2 -2
  363. package/corpus/core/docs/content/locales/hi-IN/observational-memory.md +2 -2
  364. package/corpus/core/docs/content/locales/hi-IN/onboarding.md +8 -8
  365. package/corpus/core/docs/content/locales/hi-IN/plan-plugin.md +3 -3
  366. package/corpus/core/docs/content/locales/hi-IN/pr-visual-recap.md +11 -11
  367. package/corpus/core/docs/content/locales/hi-IN/processors.md +1 -1
  368. package/corpus/core/docs/content/locales/hi-IN/progress.md +2 -2
  369. package/corpus/core/docs/content/locales/hi-IN/pure-agent-apps.md +1 -1
  370. package/corpus/core/docs/content/locales/hi-IN/real-time-collaboration.md +6 -6
  371. package/corpus/core/docs/content/locales/hi-IN/recurring-jobs.md +5 -5
  372. package/corpus/core/docs/content/locales/hi-IN/routing.md +1 -1
  373. package/corpus/core/docs/content/locales/hi-IN/sandbox-adapters.md +2 -2
  374. package/corpus/core/docs/content/locales/hi-IN/security.md +8 -8
  375. package/corpus/core/docs/content/locales/hi-IN/server.md +10 -10
  376. package/corpus/core/docs/content/locales/hi-IN/sharing.md +6 -6
  377. package/corpus/core/docs/content/locales/hi-IN/skills-guide.md +16 -16
  378. package/corpus/core/docs/content/locales/hi-IN/template-analytics.md +10 -10
  379. package/corpus/core/docs/content/locales/hi-IN/template-assets.md +19 -19
  380. package/corpus/core/docs/content/locales/hi-IN/template-brain.md +11 -11
  381. package/corpus/core/docs/content/locales/hi-IN/template-calendar.md +9 -9
  382. package/corpus/core/docs/content/locales/hi-IN/template-chat.md +3 -3
  383. package/corpus/core/docs/content/locales/hi-IN/template-clips.md +14 -14
  384. package/corpus/core/docs/content/locales/hi-IN/template-content.md +13 -13
  385. package/corpus/core/docs/content/locales/hi-IN/template-design.md +7 -7
  386. package/corpus/core/docs/content/locales/hi-IN/template-dispatch.md +9 -9
  387. package/corpus/core/docs/content/locales/hi-IN/template-forms.md +9 -9
  388. package/corpus/core/docs/content/locales/hi-IN/template-mail.md +6 -6
  389. package/corpus/core/docs/content/locales/hi-IN/template-plan.md +3 -3
  390. package/corpus/core/docs/content/locales/hi-IN/template-slides.md +8 -8
  391. package/corpus/core/docs/content/locales/hi-IN/template-videos.md +5 -5
  392. package/corpus/core/docs/content/locales/hi-IN/tracking.md +3 -3
  393. package/corpus/core/docs/content/locales/hi-IN/using-your-agent.md +1 -1
  394. package/corpus/core/docs/content/locales/hi-IN/voice-input.md +4 -4
  395. package/corpus/core/docs/content/locales/hi-IN/what-is-agent-native.md +4 -4
  396. package/corpus/core/docs/content/locales/hi-IN/workspace-connections.md +8 -8
  397. package/corpus/core/docs/content/locales/hi-IN/workspace-management.md +4 -4
  398. package/corpus/core/docs/content/locales/hi-IN/workspace.md +23 -23
  399. package/corpus/core/docs/content/locales/hi-IN/writing-agent-instructions.md +18 -18
  400. package/corpus/core/docs/content/locales/ja-JP/a2a-protocol.md +7 -7
  401. package/corpus/core/docs/content/locales/ja-JP/actions.md +3 -3
  402. package/corpus/core/docs/content/locales/ja-JP/agent-mentions.md +3 -3
  403. package/corpus/core/docs/content/locales/ja-JP/agent-surfaces.md +7 -7
  404. package/corpus/core/docs/content/locales/ja-JP/agent-teams.md +3 -3
  405. package/corpus/core/docs/content/locales/ja-JP/agent-web-surfaces.md +5 -5
  406. package/corpus/core/docs/content/locales/ja-JP/authentication.md +6 -6
  407. package/corpus/core/docs/content/locales/ja-JP/automations.md +8 -8
  408. package/corpus/core/docs/content/locales/ja-JP/blueprint-installer.md +2 -2
  409. package/corpus/core/docs/content/locales/ja-JP/client.md +1 -1
  410. package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.md +2 -2
  411. package/corpus/core/docs/content/locales/ja-JP/code-agents-ui.md +4 -4
  412. package/corpus/core/docs/content/locales/ja-JP/components.md +5 -5
  413. package/corpus/core/docs/content/locales/ja-JP/context-awareness.md +8 -8
  414. package/corpus/core/docs/content/locales/ja-JP/creating-templates.md +12 -12
  415. package/corpus/core/docs/content/locales/ja-JP/cross-app-sso.md +3 -3
  416. package/corpus/core/docs/content/locales/ja-JP/database.md +7 -7
  417. package/corpus/core/docs/content/locales/ja-JP/deployment.md +4 -4
  418. package/corpus/core/docs/content/locales/ja-JP/dispatch.md +4 -4
  419. package/corpus/core/docs/content/locales/ja-JP/drop-in-agent.md +8 -8
  420. package/corpus/core/docs/content/locales/ja-JP/durable-resume.md +1 -1
  421. package/corpus/core/docs/content/locales/ja-JP/embedding-sdk.md +2 -2
  422. package/corpus/core/docs/content/locales/ja-JP/evals.md +2 -2
  423. package/corpus/core/docs/content/locales/ja-JP/extensions.md +2 -2
  424. package/corpus/core/docs/content/locales/ja-JP/external-agents.md +5 -5
  425. package/corpus/core/docs/content/locales/ja-JP/faq.md +3 -3
  426. package/corpus/core/docs/content/locales/ja-JP/file-uploads.md +4 -4
  427. package/corpus/core/docs/content/locales/ja-JP/frames.md +1 -1
  428. package/corpus/core/docs/content/locales/ja-JP/getting-started.md +13 -13
  429. package/corpus/core/docs/content/locales/ja-JP/harness-agents.md +3 -3
  430. package/corpus/core/docs/content/locales/ja-JP/human-approval.md +3 -3
  431. package/corpus/core/docs/content/locales/ja-JP/key-concepts.md +14 -14
  432. package/corpus/core/docs/content/locales/ja-JP/local-file-mode.md +5 -5
  433. package/corpus/core/docs/content/locales/ja-JP/mcp-apps.md +4 -4
  434. package/corpus/core/docs/content/locales/ja-JP/mcp-clients.md +8 -8
  435. package/corpus/core/docs/content/locales/ja-JP/mcp-protocol.md +3 -3
  436. package/corpus/core/docs/content/locales/ja-JP/messaging.md +6 -6
  437. package/corpus/core/docs/content/locales/ja-JP/migration-workbench.md +1 -1
  438. package/corpus/core/docs/content/locales/ja-JP/multi-app-workspace.md +1 -1
  439. package/corpus/core/docs/content/locales/ja-JP/multi-tenancy.md +1 -1
  440. package/corpus/core/docs/content/locales/ja-JP/native-chat-ui.md +3 -3
  441. package/corpus/core/docs/content/locales/ja-JP/notifications.md +3 -3
  442. package/corpus/core/docs/content/locales/ja-JP/observability.md +2 -2
  443. package/corpus/core/docs/content/locales/ja-JP/observational-memory.md +2 -2
  444. package/corpus/core/docs/content/locales/ja-JP/onboarding.md +8 -8
  445. package/corpus/core/docs/content/locales/ja-JP/plan-plugin.md +3 -3
  446. package/corpus/core/docs/content/locales/ja-JP/pr-visual-recap.md +11 -11
  447. package/corpus/core/docs/content/locales/ja-JP/processors.md +1 -1
  448. package/corpus/core/docs/content/locales/ja-JP/progress.md +2 -2
  449. package/corpus/core/docs/content/locales/ja-JP/pure-agent-apps.md +1 -1
  450. package/corpus/core/docs/content/locales/ja-JP/real-time-collaboration.md +6 -6
  451. package/corpus/core/docs/content/locales/ja-JP/recurring-jobs.md +5 -5
  452. package/corpus/core/docs/content/locales/ja-JP/routing.md +1 -1
  453. package/corpus/core/docs/content/locales/ja-JP/sandbox-adapters.md +2 -2
  454. package/corpus/core/docs/content/locales/ja-JP/security.md +8 -8
  455. package/corpus/core/docs/content/locales/ja-JP/server.md +10 -10
  456. package/corpus/core/docs/content/locales/ja-JP/sharing.md +6 -6
  457. package/corpus/core/docs/content/locales/ja-JP/skills-guide.md +16 -16
  458. package/corpus/core/docs/content/locales/ja-JP/template-analytics.md +10 -10
  459. package/corpus/core/docs/content/locales/ja-JP/template-assets.md +19 -19
  460. package/corpus/core/docs/content/locales/ja-JP/template-brain.md +11 -11
  461. package/corpus/core/docs/content/locales/ja-JP/template-calendar.md +9 -9
  462. package/corpus/core/docs/content/locales/ja-JP/template-chat.md +3 -3
  463. package/corpus/core/docs/content/locales/ja-JP/template-clips.md +14 -14
  464. package/corpus/core/docs/content/locales/ja-JP/template-content.md +13 -13
  465. package/corpus/core/docs/content/locales/ja-JP/template-design.md +7 -7
  466. package/corpus/core/docs/content/locales/ja-JP/template-dispatch.md +12 -12
  467. package/corpus/core/docs/content/locales/ja-JP/template-forms.md +9 -9
  468. package/corpus/core/docs/content/locales/ja-JP/template-mail.md +6 -6
  469. package/corpus/core/docs/content/locales/ja-JP/template-plan.md +3 -3
  470. package/corpus/core/docs/content/locales/ja-JP/template-slides.md +8 -8
  471. package/corpus/core/docs/content/locales/ja-JP/template-videos.md +5 -5
  472. package/corpus/core/docs/content/locales/ja-JP/tracking.md +3 -3
  473. package/corpus/core/docs/content/locales/ja-JP/using-your-agent.md +4 -4
  474. package/corpus/core/docs/content/locales/ja-JP/voice-input.md +4 -4
  475. package/corpus/core/docs/content/locales/ja-JP/what-is-agent-native.md +4 -4
  476. package/corpus/core/docs/content/locales/ja-JP/workspace-connections.md +8 -8
  477. package/corpus/core/docs/content/locales/ja-JP/workspace-management.md +5 -5
  478. package/corpus/core/docs/content/locales/ja-JP/workspace.md +23 -23
  479. package/corpus/core/docs/content/locales/ja-JP/writing-agent-instructions.md +18 -18
  480. package/corpus/core/docs/content/locales/ko-KR/a2a-protocol.md +7 -7
  481. package/corpus/core/docs/content/locales/ko-KR/actions.md +3 -3
  482. package/corpus/core/docs/content/locales/ko-KR/agent-mentions.md +3 -3
  483. package/corpus/core/docs/content/locales/ko-KR/agent-surfaces.md +15 -15
  484. package/corpus/core/docs/content/locales/ko-KR/agent-teams.md +3 -3
  485. package/corpus/core/docs/content/locales/ko-KR/agent-web-surfaces.md +5 -5
  486. package/corpus/core/docs/content/locales/ko-KR/authentication.md +13 -13
  487. package/corpus/core/docs/content/locales/ko-KR/automations.md +8 -8
  488. package/corpus/core/docs/content/locales/ko-KR/blueprint-installer.md +2 -2
  489. package/corpus/core/docs/content/locales/ko-KR/client.md +1 -1
  490. package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.md +2 -2
  491. package/corpus/core/docs/content/locales/ko-KR/code-agents-ui.md +4 -4
  492. package/corpus/core/docs/content/locales/ko-KR/components.md +5 -5
  493. package/corpus/core/docs/content/locales/ko-KR/context-awareness.md +8 -8
  494. package/corpus/core/docs/content/locales/ko-KR/creating-templates.md +12 -12
  495. package/corpus/core/docs/content/locales/ko-KR/cross-app-sso.md +3 -3
  496. package/corpus/core/docs/content/locales/ko-KR/database.md +7 -7
  497. package/corpus/core/docs/content/locales/ko-KR/deployment.md +4 -4
  498. package/corpus/core/docs/content/locales/ko-KR/dispatch.md +4 -4
  499. package/corpus/core/docs/content/locales/ko-KR/drop-in-agent.md +8 -8
  500. package/corpus/core/docs/content/locales/ko-KR/durable-resume.md +1 -1
  501. package/corpus/core/docs/content/locales/ko-KR/embedding-sdk.md +2 -2
  502. package/corpus/core/docs/content/locales/ko-KR/evals.md +2 -2
  503. package/corpus/core/docs/content/locales/ko-KR/extensions.md +2 -2
  504. package/corpus/core/docs/content/locales/ko-KR/external-agents.md +5 -5
  505. package/corpus/core/docs/content/locales/ko-KR/faq.md +3 -3
  506. package/corpus/core/docs/content/locales/ko-KR/file-uploads.md +4 -4
  507. package/corpus/core/docs/content/locales/ko-KR/frames.md +1 -1
  508. package/corpus/core/docs/content/locales/ko-KR/getting-started.md +13 -13
  509. package/corpus/core/docs/content/locales/ko-KR/harness-agents.md +3 -3
  510. package/corpus/core/docs/content/locales/ko-KR/human-approval.md +3 -3
  511. package/corpus/core/docs/content/locales/ko-KR/key-concepts.md +14 -14
  512. package/corpus/core/docs/content/locales/ko-KR/local-file-mode.md +5 -5
  513. package/corpus/core/docs/content/locales/ko-KR/mcp-apps.md +4 -4
  514. package/corpus/core/docs/content/locales/ko-KR/mcp-clients.md +8 -8
  515. package/corpus/core/docs/content/locales/ko-KR/mcp-protocol.md +3 -3
  516. package/corpus/core/docs/content/locales/ko-KR/messaging.md +6 -6
  517. package/corpus/core/docs/content/locales/ko-KR/migration-workbench.md +1 -1
  518. package/corpus/core/docs/content/locales/ko-KR/multi-app-workspace.md +1 -1
  519. package/corpus/core/docs/content/locales/ko-KR/multi-tenancy.md +1 -1
  520. package/corpus/core/docs/content/locales/ko-KR/native-chat-ui.md +3 -3
  521. package/corpus/core/docs/content/locales/ko-KR/notifications.md +3 -3
  522. package/corpus/core/docs/content/locales/ko-KR/observability.md +2 -2
  523. package/corpus/core/docs/content/locales/ko-KR/observational-memory.md +2 -2
  524. package/corpus/core/docs/content/locales/ko-KR/onboarding.md +8 -8
  525. package/corpus/core/docs/content/locales/ko-KR/plan-plugin.md +3 -3
  526. package/corpus/core/docs/content/locales/ko-KR/pr-visual-recap.md +11 -11
  527. package/corpus/core/docs/content/locales/ko-KR/processors.md +1 -1
  528. package/corpus/core/docs/content/locales/ko-KR/progress.md +2 -2
  529. package/corpus/core/docs/content/locales/ko-KR/pure-agent-apps.md +1 -1
  530. package/corpus/core/docs/content/locales/ko-KR/real-time-collaboration.md +6 -6
  531. package/corpus/core/docs/content/locales/ko-KR/recurring-jobs.md +5 -5
  532. package/corpus/core/docs/content/locales/ko-KR/routing.md +1 -1
  533. package/corpus/core/docs/content/locales/ko-KR/sandbox-adapters.md +2 -2
  534. package/corpus/core/docs/content/locales/ko-KR/security.md +8 -8
  535. package/corpus/core/docs/content/locales/ko-KR/server.md +10 -10
  536. package/corpus/core/docs/content/locales/ko-KR/sharing.md +6 -6
  537. package/corpus/core/docs/content/locales/ko-KR/skills-guide.md +16 -16
  538. package/corpus/core/docs/content/locales/ko-KR/template-analytics.md +10 -10
  539. package/corpus/core/docs/content/locales/ko-KR/template-assets.md +19 -19
  540. package/corpus/core/docs/content/locales/ko-KR/template-brain.md +11 -11
  541. package/corpus/core/docs/content/locales/ko-KR/template-calendar.md +9 -9
  542. package/corpus/core/docs/content/locales/ko-KR/template-chat.md +3 -3
  543. package/corpus/core/docs/content/locales/ko-KR/template-clips.md +14 -14
  544. package/corpus/core/docs/content/locales/ko-KR/template-content.md +13 -13
  545. package/corpus/core/docs/content/locales/ko-KR/template-design.md +7 -7
  546. package/corpus/core/docs/content/locales/ko-KR/template-dispatch.md +11 -11
  547. package/corpus/core/docs/content/locales/ko-KR/template-forms.md +9 -9
  548. package/corpus/core/docs/content/locales/ko-KR/template-mail.md +6 -6
  549. package/corpus/core/docs/content/locales/ko-KR/template-plan.md +3 -3
  550. package/corpus/core/docs/content/locales/ko-KR/template-slides.md +8 -8
  551. package/corpus/core/docs/content/locales/ko-KR/template-videos.md +5 -5
  552. package/corpus/core/docs/content/locales/ko-KR/tracking.md +3 -3
  553. package/corpus/core/docs/content/locales/ko-KR/using-your-agent.md +5 -5
  554. package/corpus/core/docs/content/locales/ko-KR/voice-input.md +4 -4
  555. package/corpus/core/docs/content/locales/ko-KR/what-is-agent-native.md +6 -6
  556. package/corpus/core/docs/content/locales/ko-KR/workspace-connections.md +8 -8
  557. package/corpus/core/docs/content/locales/ko-KR/workspace-management.md +4 -4
  558. package/corpus/core/docs/content/locales/ko-KR/workspace.md +23 -23
  559. package/corpus/core/docs/content/locales/ko-KR/writing-agent-instructions.md +18 -18
  560. package/corpus/core/docs/content/locales/pt-BR/a2a-protocol.md +7 -7
  561. package/corpus/core/docs/content/locales/pt-BR/actions.md +2 -2
  562. package/corpus/core/docs/content/locales/pt-BR/agent-mentions.md +3 -3
  563. package/corpus/core/docs/content/locales/pt-BR/agent-surfaces.md +7 -7
  564. package/corpus/core/docs/content/locales/pt-BR/agent-teams.md +3 -3
  565. package/corpus/core/docs/content/locales/pt-BR/agent-web-surfaces.md +5 -5
  566. package/corpus/core/docs/content/locales/pt-BR/authentication.md +6 -6
  567. package/corpus/core/docs/content/locales/pt-BR/automations.md +8 -8
  568. package/corpus/core/docs/content/locales/pt-BR/blueprint-installer.md +2 -2
  569. package/corpus/core/docs/content/locales/pt-BR/client.md +2 -2
  570. package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.md +2 -2
  571. package/corpus/core/docs/content/locales/pt-BR/code-agents-ui.md +4 -4
  572. package/corpus/core/docs/content/locales/pt-BR/components.md +5 -5
  573. package/corpus/core/docs/content/locales/pt-BR/context-awareness.md +8 -8
  574. package/corpus/core/docs/content/locales/pt-BR/creating-templates.md +12 -12
  575. package/corpus/core/docs/content/locales/pt-BR/cross-app-sso.md +3 -3
  576. package/corpus/core/docs/content/locales/pt-BR/database.md +5 -5
  577. package/corpus/core/docs/content/locales/pt-BR/deployment.md +5 -5
  578. package/corpus/core/docs/content/locales/pt-BR/dispatch.md +3 -3
  579. package/corpus/core/docs/content/locales/pt-BR/drop-in-agent.md +9 -9
  580. package/corpus/core/docs/content/locales/pt-BR/durable-resume.md +1 -1
  581. package/corpus/core/docs/content/locales/pt-BR/embedding-sdk.md +2 -2
  582. package/corpus/core/docs/content/locales/pt-BR/evals.md +2 -2
  583. package/corpus/core/docs/content/locales/pt-BR/extensions.md +2 -2
  584. package/corpus/core/docs/content/locales/pt-BR/external-agents.md +5 -5
  585. package/corpus/core/docs/content/locales/pt-BR/faq.md +3 -3
  586. package/corpus/core/docs/content/locales/pt-BR/file-uploads.md +4 -4
  587. package/corpus/core/docs/content/locales/pt-BR/frames.md +2 -2
  588. package/corpus/core/docs/content/locales/pt-BR/getting-started.md +13 -13
  589. package/corpus/core/docs/content/locales/pt-BR/harness-agents.md +3 -3
  590. package/corpus/core/docs/content/locales/pt-BR/human-approval.md +3 -3
  591. package/corpus/core/docs/content/locales/pt-BR/key-concepts.md +15 -15
  592. package/corpus/core/docs/content/locales/pt-BR/local-file-mode.md +5 -5
  593. package/corpus/core/docs/content/locales/pt-BR/mcp-apps.md +4 -4
  594. package/corpus/core/docs/content/locales/pt-BR/mcp-clients.md +8 -8
  595. package/corpus/core/docs/content/locales/pt-BR/mcp-protocol.md +3 -3
  596. package/corpus/core/docs/content/locales/pt-BR/messaging.md +4 -4
  597. package/corpus/core/docs/content/locales/pt-BR/migration-workbench.md +1 -1
  598. package/corpus/core/docs/content/locales/pt-BR/multi-app-workspace.md +1 -1
  599. package/corpus/core/docs/content/locales/pt-BR/multi-tenancy.md +1 -1
  600. package/corpus/core/docs/content/locales/pt-BR/native-chat-ui.md +3 -3
  601. package/corpus/core/docs/content/locales/pt-BR/notifications.md +3 -3
  602. package/corpus/core/docs/content/locales/pt-BR/observability.md +2 -2
  603. package/corpus/core/docs/content/locales/pt-BR/observational-memory.md +2 -2
  604. package/corpus/core/docs/content/locales/pt-BR/onboarding.md +8 -8
  605. package/corpus/core/docs/content/locales/pt-BR/plan-plugin.md +3 -3
  606. package/corpus/core/docs/content/locales/pt-BR/pr-visual-recap.md +11 -11
  607. package/corpus/core/docs/content/locales/pt-BR/processors.md +1 -1
  608. package/corpus/core/docs/content/locales/pt-BR/progress.md +2 -2
  609. package/corpus/core/docs/content/locales/pt-BR/pure-agent-apps.md +1 -1
  610. package/corpus/core/docs/content/locales/pt-BR/real-time-collaboration.md +6 -6
  611. package/corpus/core/docs/content/locales/pt-BR/recurring-jobs.md +5 -5
  612. package/corpus/core/docs/content/locales/pt-BR/routing.md +1 -1
  613. package/corpus/core/docs/content/locales/pt-BR/sandbox-adapters.md +2 -2
  614. package/corpus/core/docs/content/locales/pt-BR/security.md +9 -9
  615. package/corpus/core/docs/content/locales/pt-BR/server.md +10 -10
  616. package/corpus/core/docs/content/locales/pt-BR/sharing.md +6 -6
  617. package/corpus/core/docs/content/locales/pt-BR/skills-guide.md +16 -16
  618. package/corpus/core/docs/content/locales/pt-BR/template-analytics.md +10 -10
  619. package/corpus/core/docs/content/locales/pt-BR/template-assets.md +20 -20
  620. package/corpus/core/docs/content/locales/pt-BR/template-brain.md +11 -11
  621. package/corpus/core/docs/content/locales/pt-BR/template-calendar.md +9 -9
  622. package/corpus/core/docs/content/locales/pt-BR/template-chat.md +3 -3
  623. package/corpus/core/docs/content/locales/pt-BR/template-clips.md +15 -15
  624. package/corpus/core/docs/content/locales/pt-BR/template-content.md +13 -13
  625. package/corpus/core/docs/content/locales/pt-BR/template-design.md +8 -8
  626. package/corpus/core/docs/content/locales/pt-BR/template-dispatch.md +8 -8
  627. package/corpus/core/docs/content/locales/pt-BR/template-forms.md +10 -10
  628. package/corpus/core/docs/content/locales/pt-BR/template-mail.md +6 -6
  629. package/corpus/core/docs/content/locales/pt-BR/template-plan.md +3 -3
  630. package/corpus/core/docs/content/locales/pt-BR/template-slides.md +9 -9
  631. package/corpus/core/docs/content/locales/pt-BR/template-videos.md +5 -5
  632. package/corpus/core/docs/content/locales/pt-BR/tracking.md +3 -3
  633. package/corpus/core/docs/content/locales/pt-BR/using-your-agent.md +5 -5
  634. package/corpus/core/docs/content/locales/pt-BR/voice-input.md +4 -4
  635. package/corpus/core/docs/content/locales/pt-BR/what-is-agent-native.md +5 -5
  636. package/corpus/core/docs/content/locales/pt-BR/workspace-connections.md +8 -8
  637. package/corpus/core/docs/content/locales/pt-BR/workspace-management.md +4 -4
  638. package/corpus/core/docs/content/locales/pt-BR/workspace.md +23 -23
  639. package/corpus/core/docs/content/locales/pt-BR/writing-agent-instructions.md +18 -18
  640. package/corpus/core/docs/content/locales/zh-CN/a2a-protocol.md +7 -7
  641. package/corpus/core/docs/content/locales/zh-CN/actions.md +3 -3
  642. package/corpus/core/docs/content/locales/zh-CN/agent-mentions.md +3 -3
  643. package/corpus/core/docs/content/locales/zh-CN/agent-surfaces.md +7 -7
  644. package/corpus/core/docs/content/locales/zh-CN/agent-teams.md +3 -3
  645. package/corpus/core/docs/content/locales/zh-CN/agent-web-surfaces.md +5 -5
  646. package/corpus/core/docs/content/locales/zh-CN/authentication.md +13 -13
  647. package/corpus/core/docs/content/locales/zh-CN/automations.md +8 -8
  648. package/corpus/core/docs/content/locales/zh-CN/blueprint-installer.md +2 -2
  649. package/corpus/core/docs/content/locales/zh-CN/client.md +1 -1
  650. package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.md +2 -2
  651. package/corpus/core/docs/content/locales/zh-CN/code-agents-ui.md +4 -4
  652. package/corpus/core/docs/content/locales/zh-CN/components.md +7 -7
  653. package/corpus/core/docs/content/locales/zh-CN/context-awareness.md +8 -8
  654. package/corpus/core/docs/content/locales/zh-CN/creating-templates.md +12 -12
  655. package/corpus/core/docs/content/locales/zh-CN/cross-app-sso.md +3 -3
  656. package/corpus/core/docs/content/locales/zh-CN/database.md +7 -7
  657. package/corpus/core/docs/content/locales/zh-CN/deployment.md +4 -4
  658. package/corpus/core/docs/content/locales/zh-CN/dispatch.md +4 -4
  659. package/corpus/core/docs/content/locales/zh-CN/drop-in-agent.md +8 -8
  660. package/corpus/core/docs/content/locales/zh-CN/durable-resume.md +1 -1
  661. package/corpus/core/docs/content/locales/zh-CN/embedding-sdk.md +2 -2
  662. package/corpus/core/docs/content/locales/zh-CN/evals.md +2 -2
  663. package/corpus/core/docs/content/locales/zh-CN/extensions.md +2 -2
  664. package/corpus/core/docs/content/locales/zh-CN/external-agents.md +5 -5
  665. package/corpus/core/docs/content/locales/zh-CN/faq.md +3 -3
  666. package/corpus/core/docs/content/locales/zh-CN/file-uploads.md +4 -4
  667. package/corpus/core/docs/content/locales/zh-CN/frames.md +2 -2
  668. package/corpus/core/docs/content/locales/zh-CN/getting-started.md +13 -13
  669. package/corpus/core/docs/content/locales/zh-CN/harness-agents.md +3 -3
  670. package/corpus/core/docs/content/locales/zh-CN/human-approval.md +3 -3
  671. package/corpus/core/docs/content/locales/zh-CN/key-concepts.md +14 -14
  672. package/corpus/core/docs/content/locales/zh-CN/local-file-mode.md +5 -5
  673. package/corpus/core/docs/content/locales/zh-CN/mcp-apps.md +4 -4
  674. package/corpus/core/docs/content/locales/zh-CN/mcp-clients.md +7 -7
  675. package/corpus/core/docs/content/locales/zh-CN/mcp-protocol.md +3 -3
  676. package/corpus/core/docs/content/locales/zh-CN/messaging.md +6 -6
  677. package/corpus/core/docs/content/locales/zh-CN/migration-workbench.md +1 -1
  678. package/corpus/core/docs/content/locales/zh-CN/multi-app-workspace.md +1 -1
  679. package/corpus/core/docs/content/locales/zh-CN/multi-tenancy.md +1 -1
  680. package/corpus/core/docs/content/locales/zh-CN/native-chat-ui.md +3 -3
  681. package/corpus/core/docs/content/locales/zh-CN/notifications.md +3 -3
  682. package/corpus/core/docs/content/locales/zh-CN/observability.md +2 -2
  683. package/corpus/core/docs/content/locales/zh-CN/observational-memory.md +2 -2
  684. package/corpus/core/docs/content/locales/zh-CN/onboarding.md +8 -8
  685. package/corpus/core/docs/content/locales/zh-CN/plan-plugin.md +3 -3
  686. package/corpus/core/docs/content/locales/zh-CN/pr-visual-recap.md +11 -11
  687. package/corpus/core/docs/content/locales/zh-CN/processors.md +1 -1
  688. package/corpus/core/docs/content/locales/zh-CN/progress.md +2 -2
  689. package/corpus/core/docs/content/locales/zh-CN/pure-agent-apps.md +1 -1
  690. package/corpus/core/docs/content/locales/zh-CN/real-time-collaboration.md +6 -6
  691. package/corpus/core/docs/content/locales/zh-CN/recurring-jobs.md +5 -5
  692. package/corpus/core/docs/content/locales/zh-CN/routing.md +1 -1
  693. package/corpus/core/docs/content/locales/zh-CN/sandbox-adapters.md +2 -2
  694. package/corpus/core/docs/content/locales/zh-CN/security.md +8 -8
  695. package/corpus/core/docs/content/locales/zh-CN/server.md +10 -10
  696. package/corpus/core/docs/content/locales/zh-CN/sharing.md +6 -6
  697. package/corpus/core/docs/content/locales/zh-CN/skills-guide.md +16 -16
  698. package/corpus/core/docs/content/locales/zh-CN/template-analytics.md +10 -10
  699. package/corpus/core/docs/content/locales/zh-CN/template-assets.md +20 -20
  700. package/corpus/core/docs/content/locales/zh-CN/template-brain.md +11 -11
  701. package/corpus/core/docs/content/locales/zh-CN/template-calendar.md +9 -9
  702. package/corpus/core/docs/content/locales/zh-CN/template-chat.md +3 -3
  703. package/corpus/core/docs/content/locales/zh-CN/template-clips.md +14 -14
  704. package/corpus/core/docs/content/locales/zh-CN/template-content.md +13 -13
  705. package/corpus/core/docs/content/locales/zh-CN/template-design.md +7 -7
  706. package/corpus/core/docs/content/locales/zh-CN/template-dispatch.md +11 -11
  707. package/corpus/core/docs/content/locales/zh-CN/template-forms.md +9 -9
  708. package/corpus/core/docs/content/locales/zh-CN/template-mail.md +6 -6
  709. package/corpus/core/docs/content/locales/zh-CN/template-plan.md +3 -3
  710. package/corpus/core/docs/content/locales/zh-CN/template-slides.md +8 -8
  711. package/corpus/core/docs/content/locales/zh-CN/template-videos.md +5 -5
  712. package/corpus/core/docs/content/locales/zh-CN/tracking.md +3 -3
  713. package/corpus/core/docs/content/locales/zh-CN/using-your-agent.md +5 -5
  714. package/corpus/core/docs/content/locales/zh-CN/voice-input.md +4 -4
  715. package/corpus/core/docs/content/locales/zh-CN/what-is-agent-native.md +5 -5
  716. package/corpus/core/docs/content/locales/zh-CN/workspace-connections.md +8 -8
  717. package/corpus/core/docs/content/locales/zh-CN/workspace-management.md +5 -5
  718. package/corpus/core/docs/content/locales/zh-CN/workspace.md +23 -23
  719. package/corpus/core/docs/content/locales/zh-CN/writing-agent-instructions.md +18 -18
  720. package/corpus/core/package.json +1 -1
  721. package/corpus/core/src/agent/production-agent.ts +47 -4
  722. package/corpus/core/src/agent/run-store.ts +2 -0
  723. package/corpus/core/src/client/i18n.tsx +13 -1
  724. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +275 -274
  725. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +270 -260
  726. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +282 -270
  727. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +275 -266
  728. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +274 -276
  729. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +280 -273
  730. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +274 -274
  731. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +273 -266
  732. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +273 -285
  733. package/corpus/templates/analytics/app/components/Markdown.tsx +36 -10
  734. package/corpus/templates/analytics/app/components/ProviderCorpusJobNotifier.tsx +41 -17
  735. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +3 -1
  736. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +4 -2
  737. package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +13 -7
  738. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +4 -1
  739. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +3 -1
  740. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +13 -50
  741. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +3 -1
  742. package/corpus/templates/analytics/app/i18n-data.ts +5172 -1
  743. package/corpus/templates/analytics/app/pages/Ask.tsx +7 -4
  744. package/corpus/templates/analytics/app/pages/DataDictionary.tsx +66 -59
  745. package/corpus/templates/analytics/app/pages/DataSources.tsx +131 -96
  746. package/corpus/templates/analytics/app/pages/NotFound.tsx +8 -3
  747. package/corpus/templates/analytics/app/pages/Placeholder.tsx +4 -3
  748. package/corpus/templates/analytics/app/pages/adhoc/BlankDashboard.tsx +8 -5
  749. package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +4 -2
  750. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventCombobox.tsx +16 -6
  751. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventPanel.tsx +6 -2
  752. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ExplorerChart.tsx +14 -5
  753. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/FilterBuilder.tsx +6 -3
  754. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/GroupByPicker.tsx +7 -3
  755. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyCombobox.tsx +12 -6
  756. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyValueCombobox.tsx +9 -5
  757. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/SqlPreview.tsx +3 -1
  758. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +25 -15
  759. package/corpus/templates/analytics/app/pages/adhoc/explorer/types.ts +32 -30
  760. package/corpus/templates/analytics/app/pages/adhoc/explorer/use-explorer-config.ts +10 -6
  761. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +20 -10
  762. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +50 -33
  763. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +23 -14
  764. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +61 -55
  765. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +88 -106
  766. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewSqlPopover.tsx +37 -49
  767. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +23 -16
  768. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +46 -40
  769. package/corpus/templates/analytics/app/pages/analyses/AnalysesList.tsx +11 -8
  770. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +25 -21
  771. package/corpus/templates/analytics/app/pages/analyses/LegacyFusionAnalysis.tsx +175 -99
  772. package/corpus/templates/analytics/app/pages/overview/OverviewPage.tsx +30 -12
  773. package/corpus/templates/analytics/app/routes/$.tsx +2 -1
  774. package/corpus/templates/analytics/app/routes/analyses.$id.tsx +2 -1
  775. package/corpus/templates/analytics/app/routes/analyses._index.tsx +2 -1
  776. package/corpus/templates/analytics/app/routes/ask.tsx +2 -1
  777. package/corpus/templates/analytics/app/routes/catalog.tsx +38 -16
  778. package/corpus/templates/analytics/app/routes/chart.tsx +12 -3
  779. package/corpus/templates/analytics/app/routes/dashboards.$id.tsx +2 -1
  780. package/corpus/templates/analytics/app/routes/data-dictionary.tsx +2 -1
  781. package/corpus/templates/analytics/app/routes/data-sources.tsx +2 -1
  782. package/corpus/templates/analytics/app/routes/extensions.$id.tsx +3 -1
  783. package/corpus/templates/analytics/app/routes/extensions._index.tsx +3 -1
  784. package/corpus/templates/analytics/app/routes/overview.tsx +2 -1
  785. package/corpus/templates/analytics/app/routes/settings.tsx +2 -1
  786. package/corpus/templates/analytics/app/routes/team.tsx +2 -1
  787. package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +25 -15
  788. package/corpus/templates/assets/app/components/library/EditLibraryDialog.tsx +17 -10
  789. package/corpus/templates/assets/app/components/library/LibraryCard.tsx +20 -8
  790. package/corpus/templates/assets/app/i18n-data.ts +4065 -1
  791. package/corpus/templates/assets/app/routes/_index.tsx +15 -4
  792. package/corpus/templates/assets/app/routes/audit.tsx +79 -56
  793. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +565 -330
  794. package/corpus/templates/assets/app/routes/brand-kits.tsx +3 -1
  795. package/corpus/templates/assets/app/routes/extensions.$id.tsx +3 -1
  796. package/corpus/templates/assets/app/routes/extensions._index.tsx +3 -1
  797. package/corpus/templates/assets/app/routes/extensions.tsx +3 -1
  798. package/corpus/templates/assets/app/routes/library.tsx +107 -74
  799. package/corpus/templates/assets/app/routes/team.tsx +6 -3
  800. package/corpus/templates/brain/app/components/brain/CanonicalPreviewSheet.tsx +14 -10
  801. package/corpus/templates/brain/app/i18n-data.ts +5609 -1
  802. package/corpus/templates/brain/app/routes/extensions.$id.tsx +3 -1
  803. package/corpus/templates/brain/app/routes/extensions._index.tsx +3 -1
  804. package/corpus/templates/brain/app/routes/extensions.tsx +3 -1
  805. package/corpus/templates/brain/app/routes/knowledge.tsx +51 -38
  806. package/corpus/templates/brain/app/routes/review.tsx +259 -154
  807. package/corpus/templates/brain/app/routes/settings.tsx +114 -116
  808. package/corpus/templates/brain/app/routes/sources.tsx +421 -352
  809. package/corpus/templates/brain/app/routes/team.tsx +6 -2
  810. package/corpus/templates/calendar/app/components/CloudUpgrade.tsx +33 -51
  811. package/corpus/templates/calendar/app/components/ThemeToggle.tsx +3 -1
  812. package/corpus/templates/calendar/app/components/TimezoneCombobox.tsx +5 -3
  813. package/corpus/templates/calendar/app/components/booking/BookingConfirmation.tsx +27 -13
  814. package/corpus/templates/calendar/app/components/booking/BookingForm.tsx +25 -13
  815. package/corpus/templates/calendar/app/components/booking/TimeSlotPicker.tsx +4 -1
  816. package/corpus/templates/calendar/app/components/calendar/AddCalendarDialog.tsx +22 -16
  817. package/corpus/templates/calendar/app/components/calendar/ApolloPanel.tsx +14 -13
  818. package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +22 -11
  819. package/corpus/templates/calendar/app/components/calendar/CommandPalette.tsx +19 -16
  820. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +112 -72
  821. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +3 -1
  822. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +62 -24
  823. package/corpus/templates/calendar/app/components/calendar/EventDescription.tsx +4 -2
  824. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +17 -11
  825. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +167 -97
  826. package/corpus/templates/calendar/app/components/calendar/EventOptionControls.tsx +39 -25
  827. package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +28 -16
  828. package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +90 -74
  829. package/corpus/templates/calendar/app/components/calendar/GoogleSetupWizard.tsx +42 -34
  830. package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +6 -6
  831. package/corpus/templates/calendar/app/components/calendar/GuestNotificationDialog.tsx +44 -37
  832. package/corpus/templates/calendar/app/components/calendar/IntegrationsSidebar.tsx +46 -52
  833. package/corpus/templates/calendar/app/components/calendar/KeyboardShortcutsHelp.tsx +31 -19
  834. package/corpus/templates/calendar/app/components/calendar/PeopleSearchDialog.tsx +13 -9
  835. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +6 -4
  836. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +13 -7
  837. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +19 -18
  838. package/corpus/templates/calendar/app/i18n/ar-SA.ts +2 -56
  839. package/corpus/templates/calendar/app/i18n/de-DE.ts +2 -57
  840. package/corpus/templates/calendar/app/i18n/en-US.ts +2 -56
  841. package/corpus/templates/calendar/app/i18n/es-ES.ts +2 -57
  842. package/corpus/templates/calendar/app/i18n/fr-FR.ts +2 -57
  843. package/corpus/templates/calendar/app/i18n/hi-IN.ts +2 -56
  844. package/corpus/templates/calendar/app/i18n/ja-JP.ts +2 -57
  845. package/corpus/templates/calendar/app/i18n/ko-KR.ts +2 -56
  846. package/corpus/templates/calendar/app/i18n/pt-BR.ts +2 -56
  847. package/corpus/templates/calendar/app/i18n/zh-CN.ts +2 -56
  848. package/corpus/templates/calendar/app/i18n-data.ts +8680 -7
  849. package/corpus/templates/calendar/app/pages/AvailabilitySettings.tsx +66 -34
  850. package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +286 -186
  851. package/corpus/templates/calendar/app/pages/BookingPage.tsx +37 -21
  852. package/corpus/templates/calendar/app/pages/BookingsList.tsx +36 -25
  853. package/corpus/templates/calendar/app/pages/CalendarView.tsx +66 -49
  854. package/corpus/templates/calendar/app/pages/ManageBookingPage.tsx +41 -29
  855. package/corpus/templates/calendar/app/pages/NotFound.tsx +4 -2
  856. package/corpus/templates/calendar/app/routes/_app.$.tsx +2 -1
  857. package/corpus/templates/calendar/app/routes/_app.booking-links.tsx +3 -1
  858. package/corpus/templates/calendar/app/routes/_app.settings.tsx +6 -3
  859. package/corpus/templates/calendar/app/routes/_app.team.tsx +8 -3
  860. package/corpus/templates/calendar/app/routes/booking-og-meta.ts +7 -4
  861. package/corpus/templates/calendar/app/routes/booking.manage.$token.tsx +2 -1
  862. package/corpus/templates/calendar/app/routes/event.tsx +14 -8
  863. package/corpus/templates/chat/app/i18n/ar-SA.ts +29 -23
  864. package/corpus/templates/chat/app/i18n/de-DE.ts +30 -22
  865. package/corpus/templates/chat/app/i18n/en-US.ts +7 -0
  866. package/corpus/templates/chat/app/i18n/es-ES.ts +30 -22
  867. package/corpus/templates/chat/app/i18n/fr-FR.ts +33 -25
  868. package/corpus/templates/chat/app/i18n/hi-IN.ts +30 -23
  869. package/corpus/templates/chat/app/i18n/ja-JP.ts +30 -23
  870. package/corpus/templates/chat/app/i18n/ko-KR.ts +30 -23
  871. package/corpus/templates/chat/app/i18n/pt-BR.ts +30 -22
  872. package/corpus/templates/chat/app/i18n/zh-CN.ts +29 -23
  873. package/corpus/templates/chat/app/routes/observability.tsx +2 -1
  874. package/corpus/templates/clips/app/components/capture-install-options.tsx +16 -11
  875. package/corpus/templates/clips/app/components/editable-recording-title.tsx +8 -7
  876. package/corpus/templates/clips/app/components/editor/chapters-editor.tsx +12 -9
  877. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +15 -9
  878. package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +71 -57
  879. package/corpus/templates/clips/app/components/editor/split-button.tsx +6 -5
  880. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +21 -19
  881. package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +39 -26
  882. package/corpus/templates/clips/app/components/editor/transcript-editor.tsx +10 -6
  883. package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +11 -7
  884. package/corpus/templates/clips/app/components/library/create-space-dialog.tsx +13 -9
  885. package/corpus/templates/clips/app/components/library/folder-tree.tsx +26 -24
  886. package/corpus/templates/clips/app/components/library/library-grid.tsx +118 -14
  887. package/corpus/templates/clips/app/components/library/library-layout.tsx +3 -1
  888. package/corpus/templates/clips/app/components/library/organization-switcher.tsx +24 -13
  889. package/corpus/templates/clips/app/components/library/recording-card.tsx +51 -34
  890. package/corpus/templates/clips/app/components/library/search-bar.tsx +14 -11
  891. package/corpus/templates/clips/app/components/meetings/auto-record-prompt.tsx +10 -6
  892. package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +8 -4
  893. package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +32 -16
  894. package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +23 -23
  895. package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +11 -7
  896. package/corpus/templates/clips/app/components/meetings/transcript-bubbles.tsx +8 -4
  897. package/corpus/templates/clips/app/components/player/access-password-prompt.tsx +6 -4
  898. package/corpus/templates/clips/app/components/player/comments-panel.tsx +22 -13
  899. package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +24 -79
  900. package/corpus/templates/clips/app/components/player/insights-panel.tsx +29 -15
  901. package/corpus/templates/clips/app/components/player/player-controls.tsx +3 -1
  902. package/corpus/templates/clips/app/components/player/settings-panel.tsx +44 -27
  903. package/corpus/templates/clips/app/components/player/share-dialog.tsx +38 -32
  904. package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +7 -5
  905. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +46 -35
  906. package/corpus/templates/clips/app/components/player/video-player.tsx +11 -5
  907. package/corpus/templates/clips/app/components/recorder/camera-visualizer.tsx +20 -6
  908. package/corpus/templates/clips/app/components/recorder/countdown-overlay.tsx +6 -4
  909. package/corpus/templates/clips/app/components/recorder/microphone-visualizer.tsx +3 -1
  910. package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +120 -156
  911. package/corpus/templates/clips/app/components/recorder/recording-toolbar.tsx +16 -8
  912. package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +8 -8
  913. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +33 -31
  914. package/corpus/templates/clips/app/components/sharing/slack-share-hint.tsx +15 -8
  915. package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +35 -20
  916. package/corpus/templates/clips/app/components/workspace/engagement-chart.tsx +6 -4
  917. package/corpus/templates/clips/app/components/workspace/insights-hub.tsx +35 -22
  918. package/corpus/templates/clips/app/components/workspace/invite-dialog.tsx +27 -17
  919. package/corpus/templates/clips/app/components/workspace/members-list.tsx +30 -19
  920. package/corpus/templates/clips/app/components/workspace/notifications-list.tsx +37 -25
  921. package/corpus/templates/clips/app/components/workspace/top-creators-table.tsx +14 -5
  922. package/corpus/templates/clips/app/i18n/ar-SA.ts +1103 -1
  923. package/corpus/templates/clips/app/i18n/de-DE.ts +1133 -1
  924. package/corpus/templates/clips/app/i18n/en-US.ts +1096 -0
  925. package/corpus/templates/clips/app/i18n/es-ES.ts +1125 -0
  926. package/corpus/templates/clips/app/i18n/fr-FR.ts +1131 -5
  927. package/corpus/templates/clips/app/i18n/hi-IN.ts +1099 -1
  928. package/corpus/templates/clips/app/i18n/ja-JP.ts +1124 -2
  929. package/corpus/templates/clips/app/i18n/ko-KR.ts +1110 -1
  930. package/corpus/templates/clips/app/i18n/pt-BR.ts +1123 -1
  931. package/corpus/templates/clips/app/i18n/zh-CN.ts +1080 -2
  932. package/corpus/templates/clips/app/routes/_app.archive.tsx +12 -2
  933. package/corpus/templates/clips/app/routes/_app.dictate.tsx +71 -49
  934. package/corpus/templates/clips/app/routes/_app.insights._index.tsx +2 -1
  935. package/corpus/templates/clips/app/routes/_app.library.folder.$folderId.tsx +5 -2
  936. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +54 -38
  937. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +41 -30
  938. package/corpus/templates/clips/app/routes/_app.notifications.tsx +34 -19
  939. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +16 -12
  940. package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +25 -18
  941. package/corpus/templates/clips/app/routes/_app.spaces.$spaceId.folder.$folderId.tsx +5 -2
  942. package/corpus/templates/clips/app/routes/_app.spaces.$spaceId.tsx +8 -5
  943. package/corpus/templates/clips/app/routes/_app.spaces._index.tsx +8 -3
  944. package/corpus/templates/clips/app/routes/_app.trash.tsx +2 -1
  945. package/corpus/templates/clips/app/routes/download.tsx +39 -30
  946. package/corpus/templates/clips/app/routes/embed.$shareId.tsx +4 -3
  947. package/corpus/templates/clips/app/routes/invite.$token.tsx +41 -32
  948. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +111 -106
  949. package/corpus/templates/clips/app/routes/record.tsx +101 -87
  950. package/corpus/templates/clips/app/routes/share.$shareId.tsx +78 -62
  951. package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +15 -12
  952. package/corpus/templates/content/app/components/ThemeToggle.tsx +3 -3
  953. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +14 -12
  954. package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +19 -14
  955. package/corpus/templates/content/app/components/editor/DocumentBlockFields.tsx +16 -4
  956. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +13670 -10
  957. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +15 -12
  958. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +219 -135
  959. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +114 -81
  960. package/corpus/templates/content/app/components/editor/EmojiPicker.tsx +27 -9
  961. package/corpus/templates/content/app/components/editor/LinkHoverPreview.tsx +7 -5
  962. package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +12 -6
  963. package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +54 -34
  964. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +111 -122
  965. package/corpus/templates/content/app/components/editor/TableHoverControls.tsx +27 -22
  966. package/corpus/templates/content/app/components/editor/VersionHistoryPanel.tsx +23 -19
  967. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +6 -2
  968. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +245 -238
  969. package/corpus/templates/content/app/components/editor/database/calculations.ts +1 -0
  970. package/corpus/templates/content/app/components/editor/database/filter-sort.ts +1 -0
  971. package/corpus/templates/content/app/components/editor/database/grouping.ts +1 -0
  972. package/corpus/templates/content/app/components/editor/database/navigation-state.ts +1 -0
  973. package/corpus/templates/content/app/components/editor/database/shared.tsx +1 -0
  974. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +92 -53
  975. package/corpus/templates/content/app/components/editor/extensions/AudioBlock.tsx +86 -49
  976. package/corpus/templates/content/app/components/editor/extensions/CodeBlockNode.tsx +22 -12
  977. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +138 -74
  978. package/corpus/templates/content/app/components/editor/extensions/LocalMdxComponentNode.tsx +16 -7
  979. package/corpus/templates/content/app/components/editor/extensions/VideoBlock.tsx +86 -49
  980. package/corpus/templates/content/app/components/editor/image-upload.ts +3 -3
  981. package/corpus/templates/content/app/components/editor/localComponentSlashItems.ts +2 -1
  982. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +205 -484
  983. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +34 -110
  984. package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +56 -43
  985. package/corpus/templates/content/app/i18n-data.ts +6977 -10
  986. package/corpus/templates/content/app/routes/_app.local-files.tsx +111 -85
  987. package/corpus/templates/content/app/routes/_app.page.$id.tsx +7 -7
  988. package/corpus/templates/content/app/routes/_app.settings.tsx +2 -1
  989. package/corpus/templates/content/app/routes/_app.team.tsx +2 -1
  990. package/corpus/templates/content/app/routes/_app.tsx +4 -6
  991. package/corpus/templates/content/app/routes/p.$id.tsx +9 -6
  992. package/corpus/templates/design/app/components/ThemeToggle.tsx +3 -1
  993. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +6 -4
  994. package/corpus/templates/design/app/components/design/DesignToolbar.tsx +27 -22
  995. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +4 -2
  996. package/corpus/templates/design/app/components/design/EditPanel.tsx +130 -100
  997. package/corpus/templates/design/app/components/design/PresentMode.tsx +3 -1
  998. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +8 -6
  999. package/corpus/templates/design/app/components/design/VariantGrid.tsx +6 -4
  1000. package/corpus/templates/design/app/components/design/VariantHandoffCard.tsx +8 -4
  1001. package/corpus/templates/design/app/components/design/ViewportTabs.tsx +5 -3
  1002. package/corpus/templates/design/app/components/design/ZoomControls.tsx +3 -1
  1003. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +31 -18
  1004. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +12 -8
  1005. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +14 -10
  1006. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +4 -2
  1007. package/corpus/templates/design/app/i18n-data.ts +6107 -332
  1008. package/corpus/templates/design/app/pages/DesignEditor.tsx +106 -81
  1009. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +110 -115
  1010. package/corpus/templates/design/app/pages/DesignSystems.tsx +154 -83
  1011. package/corpus/templates/design/app/pages/Index.tsx +69 -57
  1012. package/corpus/templates/design/app/pages/NotFound.tsx +4 -2
  1013. package/corpus/templates/design/app/pages/Present.tsx +1 -1
  1014. package/corpus/templates/design/app/pages/Templates.tsx +18 -12
  1015. package/corpus/templates/design/app/routes/$.tsx +2 -1
  1016. package/corpus/templates/design/app/routes/design-systems.tsx +2 -1
  1017. package/corpus/templates/design/app/routes/design-systems_.setup.tsx +2 -1
  1018. package/corpus/templates/design/app/routes/design.$id.tsx +2 -1
  1019. package/corpus/templates/design/app/routes/examples.tsx +3 -1
  1020. package/corpus/templates/design/app/routes/extensions.$id.tsx +3 -1
  1021. package/corpus/templates/design/app/routes/extensions._index.tsx +3 -1
  1022. package/corpus/templates/design/app/routes/extensions.tsx +3 -1
  1023. package/corpus/templates/design/app/routes/observability.tsx +3 -1
  1024. package/corpus/templates/design/app/routes/present.$id.tsx +2 -1
  1025. package/corpus/templates/design/app/routes/settings.tsx +2 -1
  1026. package/corpus/templates/design/app/routes/team.tsx +3 -1
  1027. package/corpus/templates/design/app/routes/templates.tsx +2 -1
  1028. package/corpus/templates/dispatch/app/i18n-data.ts +1881 -1
  1029. package/corpus/templates/dispatch/app/routes/chat.$threadId.tsx +10 -7
  1030. package/corpus/templates/dispatch/app/routes/chat.tsx +9 -7
  1031. package/corpus/templates/dispatch/app/routes/extensions.$id.tsx +2 -1
  1032. package/corpus/templates/dispatch/app/routes/extensions._index.tsx +2 -1
  1033. package/corpus/templates/dispatch/app/routes/integrations.tsx +327 -209
  1034. package/corpus/templates/dispatch/app/routes/settings.tsx +3 -1
  1035. package/corpus/templates/dispatch/app/routes/tools.$id.tsx +2 -1
  1036. package/corpus/templates/dispatch/app/routes/tools._index.tsx +2 -1
  1037. package/corpus/templates/forms/app/components/CloudUpgrade.tsx +38 -28
  1038. package/corpus/templates/forms/app/components/ThemeToggle.tsx +3 -1
  1039. package/corpus/templates/forms/app/components/builder/FieldPropertiesPanel.tsx +33 -29
  1040. package/corpus/templates/forms/app/i18n/ar-SA.ts +279 -53
  1041. package/corpus/templates/forms/app/i18n/de-DE.ts +287 -53
  1042. package/corpus/templates/forms/app/i18n/en-US.ts +225 -0
  1043. package/corpus/templates/forms/app/i18n/es-ES.ts +233 -1
  1044. package/corpus/templates/forms/app/i18n/fr-FR.ts +290 -54
  1045. package/corpus/templates/forms/app/i18n/hi-IN.ts +275 -55
  1046. package/corpus/templates/forms/app/i18n/ja-JP.ts +278 -55
  1047. package/corpus/templates/forms/app/i18n/ko-KR.ts +271 -55
  1048. package/corpus/templates/forms/app/i18n/pt-BR.ts +286 -52
  1049. package/corpus/templates/forms/app/i18n/zh-CN.ts +261 -56
  1050. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +214 -148
  1051. package/corpus/templates/forms/app/pages/FormFillPage.tsx +12 -7
  1052. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +8 -4
  1053. package/corpus/templates/forms/app/routes/_app.extensions.$id.tsx +3 -1
  1054. package/corpus/templates/forms/app/routes/_app.extensions._index.tsx +3 -1
  1055. package/corpus/templates/forms/app/routes/_app.forms.$id.tsx +2 -1
  1056. package/corpus/templates/forms/app/routes/_app.forms.$id_.responses.tsx +2 -1
  1057. package/corpus/templates/forms/app/routes/_app.forms._index.tsx +3 -4
  1058. package/corpus/templates/forms/app/routes/_app.response-insights.tsx +3 -2
  1059. package/corpus/templates/forms/app/routes/_app.settings.tsx +2 -1
  1060. package/corpus/templates/forms/app/routes/_index.tsx +3 -4
  1061. package/corpus/templates/forms/app/routes/form-preview.tsx +25 -26
  1062. package/corpus/templates/macros/app/components/AddExerciseDialog.tsx +18 -15
  1063. package/corpus/templates/macros/app/components/AddMealDialog.tsx +22 -19
  1064. package/corpus/templates/macros/app/components/AddWeightDialog.tsx +17 -16
  1065. package/corpus/templates/macros/app/components/DailyProgress.tsx +24 -18
  1066. package/corpus/templates/macros/app/components/ExerciseCard.tsx +5 -3
  1067. package/corpus/templates/macros/app/components/MealCard.tsx +5 -3
  1068. package/corpus/templates/macros/app/components/VoiceDictation.tsx +14 -13
  1069. package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +37 -20
  1070. package/corpus/templates/macros/app/components/WeightCard.tsx +16 -9
  1071. package/corpus/templates/macros/app/components/WeightTracker.tsx +13 -6
  1072. package/corpus/templates/macros/app/i18n/ar-SA.ts +154 -2
  1073. package/corpus/templates/macros/app/i18n/de-DE.ts +158 -2
  1074. package/corpus/templates/macros/app/i18n/en-US.ts +152 -0
  1075. package/corpus/templates/macros/app/i18n/es-ES.ts +154 -0
  1076. package/corpus/templates/macros/app/i18n/fr-FR.ts +157 -2
  1077. package/corpus/templates/macros/app/i18n/hi-IN.ts +154 -3
  1078. package/corpus/templates/macros/app/i18n/ja-JP.ts +153 -2
  1079. package/corpus/templates/macros/app/i18n/ko-KR.ts +153 -2
  1080. package/corpus/templates/macros/app/i18n/pt-BR.ts +155 -0
  1081. package/corpus/templates/macros/app/i18n/zh-CN.ts +152 -2
  1082. package/corpus/templates/macros/app/routes/_index.tsx +20 -16
  1083. package/corpus/templates/macros/app/routes/analytics.tsx +3 -3
  1084. package/corpus/templates/macros/app/routes/extensions.$id.tsx +3 -1
  1085. package/corpus/templates/macros/app/routes/extensions._index.tsx +3 -1
  1086. package/corpus/templates/macros/app/routes/settings.tsx +2 -1
  1087. package/corpus/templates/macros/app/routes/team.tsx +6 -3
  1088. package/corpus/templates/mail/app/components/GoogleConnectBanner.tsx +69 -62
  1089. package/corpus/templates/mail/app/components/ThemeToggle.tsx +10 -3
  1090. package/corpus/templates/mail/app/components/agent-engine-picker.tsx +6 -5
  1091. package/corpus/templates/mail/app/components/email/CodeBlockLangPicker.tsx +1 -1
  1092. package/corpus/templates/mail/app/components/email/ComposeModal.tsx +6 -8
  1093. package/corpus/templates/mail/app/components/email/ComposeSlashMenu.tsx +45 -34
  1094. package/corpus/templates/mail/app/components/email/EmailThread.tsx +5 -3
  1095. package/corpus/templates/mail/app/components/email/InlineReplyComposer.tsx +4 -6
  1096. package/corpus/templates/mail/app/components/email/IntegrationsSidebar.tsx +16 -10
  1097. package/corpus/templates/mail/app/components/email/MobileActionBar.tsx +28 -20
  1098. package/corpus/templates/mail/app/components/email/SendLaterButton.tsx +12 -7
  1099. package/corpus/templates/mail/app/components/email/SnoozeModal.tsx +9 -6
  1100. package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +9 -9
  1101. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +2 -2
  1102. package/corpus/templates/mail/app/components/settings/GmailFiltersSection.tsx +40 -30
  1103. package/corpus/templates/mail/app/i18n/ar-SA.ts +435 -134
  1104. package/corpus/templates/mail/app/i18n/de-DE.ts +441 -131
  1105. package/corpus/templates/mail/app/i18n/en-US.ts +300 -1
  1106. package/corpus/templates/mail/app/i18n/es-ES.ts +443 -134
  1107. package/corpus/templates/mail/app/i18n/fr-FR.ts +444 -134
  1108. package/corpus/templates/mail/app/i18n/hi-IN.ts +441 -138
  1109. package/corpus/templates/mail/app/i18n/ja-JP.ts +437 -134
  1110. package/corpus/templates/mail/app/i18n/ko-KR.ts +437 -134
  1111. package/corpus/templates/mail/app/i18n/pt-BR.ts +440 -133
  1112. package/corpus/templates/mail/app/i18n/zh-CN.ts +361 -70
  1113. package/corpus/templates/mail/app/pages/DraftQueuePage.tsx +66 -41
  1114. package/corpus/templates/mail/app/pages/InboxPage.tsx +5 -1
  1115. package/corpus/templates/mail/app/pages/SettingsPage.tsx +125 -108
  1116. package/corpus/templates/mail/app/routes/$.tsx +2 -1
  1117. package/corpus/templates/mail/app/routes/draft-queue.$id.tsx +2 -1
  1118. package/corpus/templates/mail/app/routes/draft-queue.tsx +2 -1
  1119. package/corpus/templates/mail/app/routes/email.tsx +10 -7
  1120. package/corpus/templates/mail/app/routes/settings.tsx +2 -1
  1121. package/corpus/templates/mail/app/routes/team.tsx +2 -1
  1122. package/corpus/templates/plan/app/components/editor/PlanDocumentEditor.tsx +7 -4
  1123. package/corpus/templates/plan/app/components/editor/planSlashCommands.ts +51 -26
  1124. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +2 -2
  1125. package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +7 -4
  1126. package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +19 -15
  1127. package/corpus/templates/plan/app/components/plan/LocalCodebasePicker.tsx +34 -17
  1128. package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +9 -5
  1129. package/corpus/templates/plan/app/components/plan/PlanImageNode.tsx +9 -4
  1130. package/corpus/templates/plan/app/components/plan/PlanImageViewer.tsx +47 -20
  1131. package/corpus/templates/plan/app/components/plan/PlanMarkdownReader.tsx +4 -2
  1132. package/corpus/templates/plan/app/components/plan/PlanTableOfContents.tsx +6 -1
  1133. package/corpus/templates/plan/app/components/plan/PlanVisualSurface.tsx +10 -5
  1134. package/corpus/templates/plan/app/components/plan/PrototypeViewer.tsx +3 -1
  1135. package/corpus/templates/plan/app/components/plan/image-actions.ts +29 -7
  1136. package/corpus/templates/plan/app/components/plan/planBlocks.tsx +16 -8
  1137. package/corpus/templates/plan/app/components/plan/wireframe/LegacyRegionWireframe.tsx +27 -18
  1138. package/corpus/templates/plan/app/components/plan/wireframe/Wireframe.tsx +3 -1
  1139. package/corpus/templates/plan/app/components/plan/wireframe/wireframe-icons.ts +1 -0
  1140. package/corpus/templates/plan/app/i18n/ar-SA.ts +663 -1
  1141. package/corpus/templates/plan/app/i18n/de-DE.ts +670 -0
  1142. package/corpus/templates/plan/app/i18n/en-US.ts +643 -0
  1143. package/corpus/templates/plan/app/i18n/es-ES.ts +667 -0
  1144. package/corpus/templates/plan/app/i18n/fr-FR.ts +672 -2
  1145. package/corpus/templates/plan/app/i18n/hi-IN.ts +641 -1
  1146. package/corpus/templates/plan/app/i18n/ja-JP.ts +633 -1
  1147. package/corpus/templates/plan/app/i18n/ko-KR.ts +623 -1
  1148. package/corpus/templates/plan/app/i18n/pt-BR.ts +671 -3
  1149. package/corpus/templates/plan/app/i18n/zh-CN.ts +620 -1
  1150. package/corpus/templates/plan/app/pages/PlansPage.tsx +697 -488
  1151. package/corpus/templates/slides/app/components/CloudUpgrade.tsx +16 -13
  1152. package/corpus/templates/slides/app/components/ThemeToggle.tsx +3 -1
  1153. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +37 -25
  1154. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +3 -2
  1155. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +3 -1
  1156. package/corpus/templates/slides/app/components/design-system/DesignSystemPreview.tsx +6 -4
  1157. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +104 -73
  1158. package/corpus/templates/slides/app/components/editor/AnimationsPanel.tsx +21 -17
  1159. package/corpus/templates/slides/app/components/editor/AssetLibraryPanel.tsx +6 -3
  1160. package/corpus/templates/slides/app/components/editor/BlockBubbleMenu.tsx +4 -2
  1161. package/corpus/templates/slides/app/components/editor/CodeEditor.tsx +7 -4
  1162. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +26 -18
  1163. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +116 -91
  1164. package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +21 -21
  1165. package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +16 -16
  1166. package/corpus/templates/slides/app/components/editor/GeneratingOverlay.tsx +4 -2
  1167. package/corpus/templates/slides/app/components/editor/GoogleDocImportHint.tsx +9 -5
  1168. package/corpus/templates/slides/app/components/editor/HistoryPanel.tsx +44 -54
  1169. package/corpus/templates/slides/app/components/editor/ImageDropPromptPopover.tsx +10 -11
  1170. package/corpus/templates/slides/app/components/editor/ImageGenPanel.tsx +4 -2
  1171. package/corpus/templates/slides/app/components/editor/ImageOverlay.tsx +3 -1
  1172. package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +8 -5
  1173. package/corpus/templates/slides/app/components/editor/ImportButton.tsx +3 -2
  1174. package/corpus/templates/slides/app/components/editor/LogoSearchPanel.tsx +20 -10
  1175. package/corpus/templates/slides/app/components/editor/MermaidToExcalidrawPanel.tsx +3 -1
  1176. package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +5 -4
  1177. package/corpus/templates/slides/app/components/editor/ShareDialog.tsx +22 -21
  1178. package/corpus/templates/slides/app/components/editor/SlideBubbleMenu.tsx +32 -21
  1179. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +19 -34
  1180. package/corpus/templates/slides/app/components/editor/SlideInlineEditor.tsx +9 -8
  1181. package/corpus/templates/slides/app/components/editor/SlideSlashMenu.tsx +32 -27
  1182. package/corpus/templates/slides/app/components/editor/SpeakerNotesPanel.tsx +7 -2
  1183. package/corpus/templates/slides/app/components/layout/AgentWorkIndicator.tsx +6 -3
  1184. package/corpus/templates/slides/app/components/presentation/PresentationView.tsx +11 -8
  1185. package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +6 -5
  1186. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +8 -6
  1187. package/corpus/templates/slides/app/components/visual-editor/MultiSelectChip.tsx +7 -3
  1188. package/corpus/templates/slides/app/components/visual-editor/SaveStatusIndicator.tsx +4 -2
  1189. package/corpus/templates/slides/app/i18n/ar-SA.ts +525 -3
  1190. package/corpus/templates/slides/app/i18n/de-DE.ts +504 -4
  1191. package/corpus/templates/slides/app/i18n/en-US.ts +490 -0
  1192. package/corpus/templates/slides/app/i18n/es-ES.ts +514 -4
  1193. package/corpus/templates/slides/app/i18n/fr-FR.ts +519 -5
  1194. package/corpus/templates/slides/app/i18n/hi-IN.ts +489 -4
  1195. package/corpus/templates/slides/app/i18n/ja-JP.ts +485 -3
  1196. package/corpus/templates/slides/app/i18n/ko-KR.ts +481 -3
  1197. package/corpus/templates/slides/app/i18n/pt-BR.ts +507 -2
  1198. package/corpus/templates/slides/app/i18n/zh-CN.ts +475 -3
  1199. package/corpus/templates/slides/app/pages/DeckEditor.tsx +25 -21
  1200. package/corpus/templates/slides/app/pages/Index.tsx +47 -45
  1201. package/corpus/templates/slides/app/pages/SharedPresentation.tsx +4 -3
  1202. package/corpus/templates/slides/app/routes/$.tsx +2 -1
  1203. package/corpus/templates/slides/app/routes/deck.$id.tsx +2 -1
  1204. package/corpus/templates/slides/app/routes/design-systems.tsx +2 -1
  1205. package/corpus/templates/slides/app/routes/settings.tsx +2 -1
  1206. package/corpus/templates/slides/app/routes/share.$token.tsx +2 -1
  1207. package/corpus/templates/slides/app/routes/slide.tsx +11 -5
  1208. package/corpus/templates/slides/app/routes/team.tsx +6 -3
  1209. package/corpus/templates/videos/app/components/CameraControls.tsx +11 -7
  1210. package/corpus/templates/videos/app/components/CameraToolbar.tsx +13 -11
  1211. package/corpus/templates/videos/app/components/CloudUpgrade.tsx +19 -16
  1212. package/corpus/templates/videos/app/components/CompSettingsEditor.tsx +6 -1
  1213. package/corpus/templates/videos/app/components/ComponentLibrarySidebar.tsx +29 -29
  1214. package/corpus/templates/videos/app/components/ComponentPropsPanel.tsx +37 -17
  1215. package/corpus/templates/videos/app/components/ComponentsSidebar.tsx +8 -3
  1216. package/corpus/templates/videos/app/components/CompositionCard.tsx +11 -3
  1217. package/corpus/templates/videos/app/components/CurrentElementPanel.tsx +45 -42
  1218. package/corpus/templates/videos/app/components/CursorControls.tsx +37 -18
  1219. package/corpus/templates/videos/app/components/CursorPositioningOverlay.tsx +3 -1
  1220. package/corpus/templates/videos/app/components/LibraryFolderRow.tsx +8 -4
  1221. package/corpus/templates/videos/app/components/MotionCurveSelect.tsx +9 -6
  1222. package/corpus/templates/videos/app/components/PropsEditor.tsx +6 -2
  1223. package/corpus/templates/videos/app/components/Sidebar.tsx +7 -7
  1224. package/corpus/templates/videos/app/components/Timeline.tsx +8 -6
  1225. package/corpus/templates/videos/app/components/TrackPropertiesPanel.tsx +50 -33
  1226. package/corpus/templates/videos/app/components/TweaksPanel.tsx +18 -9
  1227. package/corpus/templates/videos/app/components/VideoPlayer.tsx +9 -5
  1228. package/corpus/templates/videos/app/components/design-system/DesignSystemPreview.tsx +14 -12
  1229. package/corpus/templates/videos/app/components/design-system/DesignSystemSetup.tsx +31 -29
  1230. package/corpus/templates/videos/app/components/keyframes/KeyframeActionButtons.tsx +11 -7
  1231. package/corpus/templates/videos/app/i18n/ar-SA.ts +358 -1
  1232. package/corpus/templates/videos/app/i18n/de-DE.ts +378 -0
  1233. package/corpus/templates/videos/app/i18n/en-US.ts +362 -0
  1234. package/corpus/templates/videos/app/i18n/es-ES.ts +377 -1
  1235. package/corpus/templates/videos/app/i18n/fr-FR.ts +379 -2
  1236. package/corpus/templates/videos/app/i18n/hi-IN.ts +359 -1
  1237. package/corpus/templates/videos/app/i18n/ja-JP.ts +371 -1
  1238. package/corpus/templates/videos/app/i18n/ko-KR.ts +364 -1
  1239. package/corpus/templates/videos/app/i18n/pt-BR.ts +371 -1
  1240. package/corpus/templates/videos/app/i18n/zh-CN.ts +351 -1
  1241. package/corpus/templates/videos/app/pages/ComponentLibrary.tsx +6 -2
  1242. package/corpus/templates/videos/app/pages/ComponentLibraryView.tsx +45 -24
  1243. package/corpus/templates/videos/app/pages/CompositionView.tsx +61 -34
  1244. package/corpus/templates/videos/app/routes/$.tsx +2 -1
  1245. package/corpus/templates/videos/app/routes/c.$compositionId.tsx +2 -1
  1246. package/corpus/templates/videos/app/routes/components.tsx +2 -1
  1247. package/corpus/templates/videos/app/routes/design-systems.tsx +2 -1
  1248. package/corpus/templates/videos/app/routes/settings.tsx +2 -1
  1249. package/corpus/templates/videos/app/routes/team.tsx +2 -1
  1250. package/dist/agent/production-agent.d.ts.map +1 -1
  1251. package/dist/agent/production-agent.js +40 -2
  1252. package/dist/agent/production-agent.js.map +1 -1
  1253. package/dist/agent/run-store.d.ts +2 -0
  1254. package/dist/agent/run-store.d.ts.map +1 -1
  1255. package/dist/agent/run-store.js +2 -0
  1256. package/dist/agent/run-store.js.map +1 -1
  1257. package/dist/client/i18n.d.ts.map +1 -1
  1258. package/dist/client/i18n.js +12 -1
  1259. package/dist/client/i18n.js.map +1 -1
  1260. package/dist/collab/awareness.d.ts +2 -2
  1261. package/dist/collab/awareness.d.ts.map +1 -1
  1262. package/dist/collab/routes.d.ts +2 -2
  1263. package/dist/notifications/routes.d.ts +2 -2
  1264. package/dist/observability/routes.d.ts +3 -3
  1265. package/dist/progress/routes.d.ts +1 -1
  1266. package/dist/resources/handlers.d.ts +1 -1
  1267. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  1268. package/dist/templates/default/app/i18n/ar-SA.ts +275 -274
  1269. package/dist/templates/default/app/i18n/de-DE.ts +270 -260
  1270. package/dist/templates/default/app/i18n/es-ES.ts +282 -270
  1271. package/dist/templates/default/app/i18n/fr-FR.ts +275 -266
  1272. package/dist/templates/default/app/i18n/hi-IN.ts +274 -276
  1273. package/dist/templates/default/app/i18n/ja-JP.ts +280 -273
  1274. package/dist/templates/default/app/i18n/ko-KR.ts +274 -274
  1275. package/dist/templates/default/app/i18n/pt-BR.ts +273 -266
  1276. package/dist/templates/default/app/i18n/zh-CN.ts +273 -285
  1277. package/docs/content/locales/ar-SA/a2a-protocol.md +2 -2
  1278. package/docs/content/locales/ar-SA/actions.md +6 -6
  1279. package/docs/content/locales/ar-SA/agent-surfaces.md +5 -5
  1280. package/docs/content/locales/ar-SA/agent-teams.md +4 -4
  1281. package/docs/content/locales/ar-SA/agent-web-surfaces.md +2 -2
  1282. package/docs/content/locales/ar-SA/authentication.md +4 -4
  1283. package/docs/content/locales/ar-SA/automations.md +3 -3
  1284. package/docs/content/locales/ar-SA/blueprint-installer.md +2 -2
  1285. package/docs/content/locales/ar-SA/cli-adapters.md +1 -1
  1286. package/docs/content/locales/ar-SA/code-agents-ui.md +2 -2
  1287. package/docs/content/locales/ar-SA/components.md +14 -14
  1288. package/docs/content/locales/ar-SA/context-awareness.md +3 -3
  1289. package/docs/content/locales/ar-SA/creating-templates.md +12 -12
  1290. package/docs/content/locales/ar-SA/cross-app-sso.md +3 -3
  1291. package/docs/content/locales/ar-SA/database.md +7 -7
  1292. package/docs/content/locales/ar-SA/deployment.md +4 -4
  1293. package/docs/content/locales/ar-SA/dispatch.md +3 -3
  1294. package/docs/content/locales/ar-SA/drop-in-agent.md +8 -8
  1295. package/docs/content/locales/ar-SA/durable-resume.md +1 -1
  1296. package/docs/content/locales/ar-SA/embedding-sdk.md +2 -2
  1297. package/docs/content/locales/ar-SA/evals.md +3 -3
  1298. package/docs/content/locales/ar-SA/extensions.md +2 -2
  1299. package/docs/content/locales/ar-SA/external-agents.md +8 -8
  1300. package/docs/content/locales/ar-SA/faq.md +3 -3
  1301. package/docs/content/locales/ar-SA/file-uploads.md +4 -4
  1302. package/docs/content/locales/ar-SA/frames.md +1 -1
  1303. package/docs/content/locales/ar-SA/getting-started.md +13 -13
  1304. package/docs/content/locales/ar-SA/harness-agents.md +3 -3
  1305. package/docs/content/locales/ar-SA/human-approval.md +3 -3
  1306. package/docs/content/locales/ar-SA/key-concepts.md +14 -14
  1307. package/docs/content/locales/ar-SA/local-file-mode.md +5 -5
  1308. package/docs/content/locales/ar-SA/mcp-apps.md +9 -9
  1309. package/docs/content/locales/ar-SA/mcp-clients.md +9 -9
  1310. package/docs/content/locales/ar-SA/mcp-protocol.md +5 -5
  1311. package/docs/content/locales/ar-SA/messaging.md +5 -5
  1312. package/docs/content/locales/ar-SA/migration-workbench.md +1 -1
  1313. package/docs/content/locales/ar-SA/multi-app-workspace.md +1 -1
  1314. package/docs/content/locales/ar-SA/multi-tenancy.md +2 -2
  1315. package/docs/content/locales/ar-SA/native-chat-ui.md +4 -4
  1316. package/docs/content/locales/ar-SA/notifications.md +5 -5
  1317. package/docs/content/locales/ar-SA/observability.md +1 -1
  1318. package/docs/content/locales/ar-SA/observational-memory.md +2 -2
  1319. package/docs/content/locales/ar-SA/onboarding.md +8 -8
  1320. package/docs/content/locales/ar-SA/plan-plugin.md +3 -3
  1321. package/docs/content/locales/ar-SA/pr-visual-recap.md +11 -11
  1322. package/docs/content/locales/ar-SA/processors.md +2 -2
  1323. package/docs/content/locales/ar-SA/progress.md +3 -3
  1324. package/docs/content/locales/ar-SA/pure-agent-apps.md +1 -1
  1325. package/docs/content/locales/ar-SA/real-time-collaboration.md +6 -6
  1326. package/docs/content/locales/ar-SA/recurring-jobs.md +5 -5
  1327. package/docs/content/locales/ar-SA/routing.md +1 -1
  1328. package/docs/content/locales/ar-SA/sandbox-adapters.md +3 -3
  1329. package/docs/content/locales/ar-SA/security.md +10 -10
  1330. package/docs/content/locales/ar-SA/server.md +9 -9
  1331. package/docs/content/locales/ar-SA/sharing.md +7 -7
  1332. package/docs/content/locales/ar-SA/skills-guide.md +16 -16
  1333. package/docs/content/locales/ar-SA/template-analytics.md +10 -10
  1334. package/docs/content/locales/ar-SA/template-assets.md +19 -19
  1335. package/docs/content/locales/ar-SA/template-brain.md +11 -11
  1336. package/docs/content/locales/ar-SA/template-calendar.md +9 -9
  1337. package/docs/content/locales/ar-SA/template-chat.md +3 -3
  1338. package/docs/content/locales/ar-SA/template-clips.md +13 -13
  1339. package/docs/content/locales/ar-SA/template-content.md +15 -15
  1340. package/docs/content/locales/ar-SA/template-design.md +7 -7
  1341. package/docs/content/locales/ar-SA/template-dispatch.md +8 -8
  1342. package/docs/content/locales/ar-SA/template-forms.md +9 -9
  1343. package/docs/content/locales/ar-SA/template-mail.md +7 -7
  1344. package/docs/content/locales/ar-SA/template-plan.md +3 -3
  1345. package/docs/content/locales/ar-SA/template-slides.md +8 -8
  1346. package/docs/content/locales/ar-SA/template-videos.md +5 -5
  1347. package/docs/content/locales/ar-SA/tracking.md +6 -6
  1348. package/docs/content/locales/ar-SA/using-your-agent.md +4 -4
  1349. package/docs/content/locales/ar-SA/voice-input.md +4 -4
  1350. package/docs/content/locales/ar-SA/what-is-agent-native.md +4 -4
  1351. package/docs/content/locales/ar-SA/workspace-connections.md +8 -8
  1352. package/docs/content/locales/ar-SA/workspace-management.md +4 -4
  1353. package/docs/content/locales/ar-SA/workspace.md +24 -24
  1354. package/docs/content/locales/ar-SA/writing-agent-instructions.md +18 -18
  1355. package/docs/content/locales/de-DE/a2a-protocol.md +7 -7
  1356. package/docs/content/locales/de-DE/actions.md +5 -5
  1357. package/docs/content/locales/de-DE/agent-mentions.md +4 -4
  1358. package/docs/content/locales/de-DE/agent-surfaces.md +22 -22
  1359. package/docs/content/locales/de-DE/agent-teams.md +4 -4
  1360. package/docs/content/locales/de-DE/agent-web-surfaces.md +4 -4
  1361. package/docs/content/locales/de-DE/authentication.md +6 -6
  1362. package/docs/content/locales/de-DE/automations.md +8 -8
  1363. package/docs/content/locales/de-DE/blueprint-installer.md +2 -2
  1364. package/docs/content/locales/de-DE/client.md +6 -6
  1365. package/docs/content/locales/de-DE/cloneable-saas.md +2 -2
  1366. package/docs/content/locales/de-DE/code-agents-ui.md +9 -9
  1367. package/docs/content/locales/de-DE/components.md +15 -15
  1368. package/docs/content/locales/de-DE/context-awareness.md +8 -8
  1369. package/docs/content/locales/de-DE/creating-templates.md +13 -13
  1370. package/docs/content/locales/de-DE/cross-app-sso.md +3 -3
  1371. package/docs/content/locales/de-DE/database.md +5 -5
  1372. package/docs/content/locales/de-DE/deployment.md +6 -6
  1373. package/docs/content/locales/de-DE/dispatch.md +3 -3
  1374. package/docs/content/locales/de-DE/drop-in-agent.md +14 -14
  1375. package/docs/content/locales/de-DE/durable-resume.md +1 -1
  1376. package/docs/content/locales/de-DE/embedding-sdk.md +2 -2
  1377. package/docs/content/locales/de-DE/evals.md +2 -2
  1378. package/docs/content/locales/de-DE/extensions.md +2 -2
  1379. package/docs/content/locales/de-DE/external-agents.md +6 -6
  1380. package/docs/content/locales/de-DE/faq.md +5 -5
  1381. package/docs/content/locales/de-DE/file-uploads.md +4 -4
  1382. package/docs/content/locales/de-DE/frames.md +2 -2
  1383. package/docs/content/locales/de-DE/getting-started.md +16 -16
  1384. package/docs/content/locales/de-DE/harness-agents.md +3 -3
  1385. package/docs/content/locales/de-DE/human-approval.md +4 -4
  1386. package/docs/content/locales/de-DE/key-concepts.md +14 -14
  1387. package/docs/content/locales/de-DE/local-file-mode.md +8 -8
  1388. package/docs/content/locales/de-DE/mcp-apps.md +4 -4
  1389. package/docs/content/locales/de-DE/mcp-clients.md +7 -7
  1390. package/docs/content/locales/de-DE/mcp-protocol.md +3 -3
  1391. package/docs/content/locales/de-DE/messaging.md +5 -5
  1392. package/docs/content/locales/de-DE/migration-workbench.md +1 -1
  1393. package/docs/content/locales/de-DE/multi-app-workspace.md +2 -2
  1394. package/docs/content/locales/de-DE/multi-tenancy.md +1 -1
  1395. package/docs/content/locales/de-DE/native-chat-ui.md +8 -8
  1396. package/docs/content/locales/de-DE/notifications.md +3 -3
  1397. package/docs/content/locales/de-DE/observability.md +2 -2
  1398. package/docs/content/locales/de-DE/observational-memory.md +2 -2
  1399. package/docs/content/locales/de-DE/onboarding.md +8 -8
  1400. package/docs/content/locales/de-DE/plan-plugin.md +3 -3
  1401. package/docs/content/locales/de-DE/pr-visual-recap.md +11 -11
  1402. package/docs/content/locales/de-DE/processors.md +1 -1
  1403. package/docs/content/locales/de-DE/progress.md +2 -2
  1404. package/docs/content/locales/de-DE/pure-agent-apps.md +1 -1
  1405. package/docs/content/locales/de-DE/real-time-collaboration.md +8 -8
  1406. package/docs/content/locales/de-DE/recurring-jobs.md +5 -5
  1407. package/docs/content/locales/de-DE/routing.md +1 -1
  1408. package/docs/content/locales/de-DE/sandbox-adapters.md +2 -2
  1409. package/docs/content/locales/de-DE/security.md +10 -10
  1410. package/docs/content/locales/de-DE/server.md +10 -10
  1411. package/docs/content/locales/de-DE/sharing.md +6 -6
  1412. package/docs/content/locales/de-DE/skills-guide.md +17 -17
  1413. package/docs/content/locales/de-DE/template-analytics.md +10 -10
  1414. package/docs/content/locales/de-DE/template-assets.md +21 -21
  1415. package/docs/content/locales/de-DE/template-brain.md +11 -11
  1416. package/docs/content/locales/de-DE/template-calendar.md +10 -10
  1417. package/docs/content/locales/de-DE/template-chat.md +5 -5
  1418. package/docs/content/locales/de-DE/template-clips.md +14 -14
  1419. package/docs/content/locales/de-DE/template-content.md +14 -14
  1420. package/docs/content/locales/de-DE/template-design.md +7 -7
  1421. package/docs/content/locales/de-DE/template-dispatch.md +12 -12
  1422. package/docs/content/locales/de-DE/template-forms.md +9 -9
  1423. package/docs/content/locales/de-DE/template-mail.md +6 -6
  1424. package/docs/content/locales/de-DE/template-plan.md +3 -3
  1425. package/docs/content/locales/de-DE/template-slides.md +8 -8
  1426. package/docs/content/locales/de-DE/template-videos.md +6 -6
  1427. package/docs/content/locales/de-DE/tracking.md +3 -3
  1428. package/docs/content/locales/de-DE/using-your-agent.md +6 -6
  1429. package/docs/content/locales/de-DE/voice-input.md +9 -9
  1430. package/docs/content/locales/de-DE/what-is-agent-native.md +6 -6
  1431. package/docs/content/locales/de-DE/workspace-connections.md +9 -9
  1432. package/docs/content/locales/de-DE/workspace-management.md +5 -5
  1433. package/docs/content/locales/de-DE/workspace.md +23 -23
  1434. package/docs/content/locales/de-DE/writing-agent-instructions.md +30 -30
  1435. package/docs/content/locales/es-ES/a2a-protocol.md +7 -7
  1436. package/docs/content/locales/es-ES/actions.md +2 -2
  1437. package/docs/content/locales/es-ES/agent-mentions.md +3 -3
  1438. package/docs/content/locales/es-ES/agent-surfaces.md +7 -7
  1439. package/docs/content/locales/es-ES/agent-teams.md +3 -3
  1440. package/docs/content/locales/es-ES/agent-web-surfaces.md +5 -5
  1441. package/docs/content/locales/es-ES/authentication.md +6 -6
  1442. package/docs/content/locales/es-ES/automations.md +8 -8
  1443. package/docs/content/locales/es-ES/blueprint-installer.md +2 -2
  1444. package/docs/content/locales/es-ES/client.md +1 -1
  1445. package/docs/content/locales/es-ES/cloneable-saas.md +2 -2
  1446. package/docs/content/locales/es-ES/code-agents-ui.md +4 -4
  1447. package/docs/content/locales/es-ES/components.md +5 -5
  1448. package/docs/content/locales/es-ES/context-awareness.md +8 -8
  1449. package/docs/content/locales/es-ES/creating-templates.md +12 -12
  1450. package/docs/content/locales/es-ES/cross-app-sso.md +3 -3
  1451. package/docs/content/locales/es-ES/database.md +5 -5
  1452. package/docs/content/locales/es-ES/deployment.md +4 -4
  1453. package/docs/content/locales/es-ES/dispatch.md +3 -3
  1454. package/docs/content/locales/es-ES/drop-in-agent.md +8 -8
  1455. package/docs/content/locales/es-ES/durable-resume.md +1 -1
  1456. package/docs/content/locales/es-ES/embedding-sdk.md +2 -2
  1457. package/docs/content/locales/es-ES/evals.md +2 -2
  1458. package/docs/content/locales/es-ES/extensions.md +2 -2
  1459. package/docs/content/locales/es-ES/external-agents.md +5 -5
  1460. package/docs/content/locales/es-ES/faq.md +3 -3
  1461. package/docs/content/locales/es-ES/file-uploads.md +4 -4
  1462. package/docs/content/locales/es-ES/frames.md +1 -1
  1463. package/docs/content/locales/es-ES/getting-started.md +13 -13
  1464. package/docs/content/locales/es-ES/harness-agents.md +3 -3
  1465. package/docs/content/locales/es-ES/human-approval.md +3 -3
  1466. package/docs/content/locales/es-ES/key-concepts.md +14 -14
  1467. package/docs/content/locales/es-ES/local-file-mode.md +6 -6
  1468. package/docs/content/locales/es-ES/mcp-apps.md +4 -4
  1469. package/docs/content/locales/es-ES/mcp-clients.md +8 -8
  1470. package/docs/content/locales/es-ES/mcp-protocol.md +3 -3
  1471. package/docs/content/locales/es-ES/messaging.md +4 -4
  1472. package/docs/content/locales/es-ES/migration-workbench.md +1 -1
  1473. package/docs/content/locales/es-ES/multi-app-workspace.md +1 -1
  1474. package/docs/content/locales/es-ES/multi-tenancy.md +1 -1
  1475. package/docs/content/locales/es-ES/native-chat-ui.md +3 -3
  1476. package/docs/content/locales/es-ES/notifications.md +3 -3
  1477. package/docs/content/locales/es-ES/observability.md +2 -2
  1478. package/docs/content/locales/es-ES/observational-memory.md +2 -2
  1479. package/docs/content/locales/es-ES/onboarding.md +8 -8
  1480. package/docs/content/locales/es-ES/plan-plugin.md +3 -3
  1481. package/docs/content/locales/es-ES/pr-visual-recap.md +11 -11
  1482. package/docs/content/locales/es-ES/processors.md +1 -1
  1483. package/docs/content/locales/es-ES/progress.md +2 -2
  1484. package/docs/content/locales/es-ES/pure-agent-apps.md +1 -1
  1485. package/docs/content/locales/es-ES/real-time-collaboration.md +6 -6
  1486. package/docs/content/locales/es-ES/recurring-jobs.md +5 -5
  1487. package/docs/content/locales/es-ES/routing.md +1 -1
  1488. package/docs/content/locales/es-ES/sandbox-adapters.md +2 -2
  1489. package/docs/content/locales/es-ES/security.md +8 -8
  1490. package/docs/content/locales/es-ES/server.md +11 -11
  1491. package/docs/content/locales/es-ES/sharing.md +6 -6
  1492. package/docs/content/locales/es-ES/skills-guide.md +16 -16
  1493. package/docs/content/locales/es-ES/template-analytics.md +10 -10
  1494. package/docs/content/locales/es-ES/template-assets.md +19 -19
  1495. package/docs/content/locales/es-ES/template-brain.md +11 -11
  1496. package/docs/content/locales/es-ES/template-calendar.md +9 -9
  1497. package/docs/content/locales/es-ES/template-chat.md +3 -3
  1498. package/docs/content/locales/es-ES/template-clips.md +14 -14
  1499. package/docs/content/locales/es-ES/template-content.md +13 -13
  1500. package/docs/content/locales/es-ES/template-design.md +7 -7
  1501. package/docs/content/locales/es-ES/template-dispatch.md +8 -8
  1502. package/docs/content/locales/es-ES/template-forms.md +9 -9
  1503. package/docs/content/locales/es-ES/template-mail.md +6 -6
  1504. package/docs/content/locales/es-ES/template-plan.md +3 -3
  1505. package/docs/content/locales/es-ES/template-slides.md +8 -8
  1506. package/docs/content/locales/es-ES/template-videos.md +5 -5
  1507. package/docs/content/locales/es-ES/tracking.md +3 -3
  1508. package/docs/content/locales/es-ES/using-your-agent.md +5 -5
  1509. package/docs/content/locales/es-ES/voice-input.md +4 -4
  1510. package/docs/content/locales/es-ES/what-is-agent-native.md +6 -6
  1511. package/docs/content/locales/es-ES/workspace-connections.md +8 -8
  1512. package/docs/content/locales/es-ES/workspace-management.md +4 -4
  1513. package/docs/content/locales/es-ES/workspace.md +23 -23
  1514. package/docs/content/locales/es-ES/writing-agent-instructions.md +18 -18
  1515. package/docs/content/locales/fr-FR/a2a-protocol.md +7 -7
  1516. package/docs/content/locales/fr-FR/actions.md +2 -2
  1517. package/docs/content/locales/fr-FR/agent-mentions.md +3 -3
  1518. package/docs/content/locales/fr-FR/agent-surfaces.md +7 -7
  1519. package/docs/content/locales/fr-FR/agent-teams.md +3 -3
  1520. package/docs/content/locales/fr-FR/agent-web-surfaces.md +5 -5
  1521. package/docs/content/locales/fr-FR/authentication.md +6 -6
  1522. package/docs/content/locales/fr-FR/automations.md +8 -8
  1523. package/docs/content/locales/fr-FR/blueprint-installer.md +2 -2
  1524. package/docs/content/locales/fr-FR/client.md +1 -1
  1525. package/docs/content/locales/fr-FR/cloneable-saas.md +2 -2
  1526. package/docs/content/locales/fr-FR/code-agents-ui.md +4 -4
  1527. package/docs/content/locales/fr-FR/components.md +5 -5
  1528. package/docs/content/locales/fr-FR/context-awareness.md +8 -8
  1529. package/docs/content/locales/fr-FR/creating-templates.md +12 -12
  1530. package/docs/content/locales/fr-FR/cross-app-sso.md +4 -4
  1531. package/docs/content/locales/fr-FR/database.md +5 -5
  1532. package/docs/content/locales/fr-FR/deployment.md +5 -5
  1533. package/docs/content/locales/fr-FR/dispatch.md +3 -3
  1534. package/docs/content/locales/fr-FR/drop-in-agent.md +9 -9
  1535. package/docs/content/locales/fr-FR/durable-resume.md +1 -1
  1536. package/docs/content/locales/fr-FR/embedding-sdk.md +7 -7
  1537. package/docs/content/locales/fr-FR/evals.md +2 -2
  1538. package/docs/content/locales/fr-FR/extensions.md +2 -2
  1539. package/docs/content/locales/fr-FR/external-agents.md +5 -5
  1540. package/docs/content/locales/fr-FR/faq.md +3 -3
  1541. package/docs/content/locales/fr-FR/file-uploads.md +5 -5
  1542. package/docs/content/locales/fr-FR/frames.md +1 -1
  1543. package/docs/content/locales/fr-FR/getting-started.md +13 -13
  1544. package/docs/content/locales/fr-FR/harness-agents.md +3 -3
  1545. package/docs/content/locales/fr-FR/human-approval.md +3 -3
  1546. package/docs/content/locales/fr-FR/key-concepts.md +15 -15
  1547. package/docs/content/locales/fr-FR/local-file-mode.md +5 -5
  1548. package/docs/content/locales/fr-FR/mcp-apps.md +4 -4
  1549. package/docs/content/locales/fr-FR/mcp-clients.md +8 -8
  1550. package/docs/content/locales/fr-FR/mcp-protocol.md +3 -3
  1551. package/docs/content/locales/fr-FR/messaging.md +4 -4
  1552. package/docs/content/locales/fr-FR/migration-workbench.md +1 -1
  1553. package/docs/content/locales/fr-FR/multi-app-workspace.md +1 -1
  1554. package/docs/content/locales/fr-FR/multi-tenancy.md +1 -1
  1555. package/docs/content/locales/fr-FR/native-chat-ui.md +3 -3
  1556. package/docs/content/locales/fr-FR/notifications.md +3 -3
  1557. package/docs/content/locales/fr-FR/observability.md +2 -2
  1558. package/docs/content/locales/fr-FR/observational-memory.md +2 -2
  1559. package/docs/content/locales/fr-FR/onboarding.md +8 -8
  1560. package/docs/content/locales/fr-FR/plan-plugin.md +3 -3
  1561. package/docs/content/locales/fr-FR/pr-visual-recap.md +11 -11
  1562. package/docs/content/locales/fr-FR/processors.md +1 -1
  1563. package/docs/content/locales/fr-FR/progress.md +2 -2
  1564. package/docs/content/locales/fr-FR/pure-agent-apps.md +1 -1
  1565. package/docs/content/locales/fr-FR/real-time-collaboration.md +8 -8
  1566. package/docs/content/locales/fr-FR/recurring-jobs.md +5 -5
  1567. package/docs/content/locales/fr-FR/routing.md +1 -1
  1568. package/docs/content/locales/fr-FR/sandbox-adapters.md +2 -2
  1569. package/docs/content/locales/fr-FR/security.md +8 -8
  1570. package/docs/content/locales/fr-FR/server.md +10 -10
  1571. package/docs/content/locales/fr-FR/sharing.md +6 -6
  1572. package/docs/content/locales/fr-FR/skills-guide.md +16 -16
  1573. package/docs/content/locales/fr-FR/template-analytics.md +10 -10
  1574. package/docs/content/locales/fr-FR/template-assets.md +20 -20
  1575. package/docs/content/locales/fr-FR/template-brain.md +11 -11
  1576. package/docs/content/locales/fr-FR/template-calendar.md +9 -9
  1577. package/docs/content/locales/fr-FR/template-chat.md +3 -3
  1578. package/docs/content/locales/fr-FR/template-clips.md +15 -15
  1579. package/docs/content/locales/fr-FR/template-content.md +13 -13
  1580. package/docs/content/locales/fr-FR/template-design.md +8 -8
  1581. package/docs/content/locales/fr-FR/template-dispatch.md +8 -8
  1582. package/docs/content/locales/fr-FR/template-forms.md +10 -10
  1583. package/docs/content/locales/fr-FR/template-mail.md +6 -6
  1584. package/docs/content/locales/fr-FR/template-plan.md +3 -3
  1585. package/docs/content/locales/fr-FR/template-slides.md +9 -9
  1586. package/docs/content/locales/fr-FR/template-videos.md +5 -5
  1587. package/docs/content/locales/fr-FR/tracking.md +3 -3
  1588. package/docs/content/locales/fr-FR/using-your-agent.md +5 -5
  1589. package/docs/content/locales/fr-FR/voice-input.md +4 -4
  1590. package/docs/content/locales/fr-FR/what-is-agent-native.md +6 -6
  1591. package/docs/content/locales/fr-FR/workspace-connections.md +8 -8
  1592. package/docs/content/locales/fr-FR/workspace-management.md +5 -5
  1593. package/docs/content/locales/fr-FR/workspace.md +23 -23
  1594. package/docs/content/locales/fr-FR/writing-agent-instructions.md +18 -18
  1595. package/docs/content/locales/hi-IN/a2a-protocol.md +7 -7
  1596. package/docs/content/locales/hi-IN/actions.md +3 -3
  1597. package/docs/content/locales/hi-IN/agent-mentions.md +3 -3
  1598. package/docs/content/locales/hi-IN/agent-surfaces.md +7 -7
  1599. package/docs/content/locales/hi-IN/agent-teams.md +3 -3
  1600. package/docs/content/locales/hi-IN/agent-web-surfaces.md +5 -5
  1601. package/docs/content/locales/hi-IN/authentication.md +6 -6
  1602. package/docs/content/locales/hi-IN/automations.md +8 -8
  1603. package/docs/content/locales/hi-IN/blueprint-installer.md +2 -2
  1604. package/docs/content/locales/hi-IN/client.md +1 -1
  1605. package/docs/content/locales/hi-IN/cloneable-saas.md +2 -2
  1606. package/docs/content/locales/hi-IN/code-agents-ui.md +4 -4
  1607. package/docs/content/locales/hi-IN/components.md +5 -5
  1608. package/docs/content/locales/hi-IN/context-awareness.md +8 -8
  1609. package/docs/content/locales/hi-IN/creating-templates.md +14 -14
  1610. package/docs/content/locales/hi-IN/cross-app-sso.md +3 -3
  1611. package/docs/content/locales/hi-IN/database.md +5 -5
  1612. package/docs/content/locales/hi-IN/deployment.md +5 -5
  1613. package/docs/content/locales/hi-IN/dispatch.md +4 -4
  1614. package/docs/content/locales/hi-IN/drop-in-agent.md +8 -8
  1615. package/docs/content/locales/hi-IN/durable-resume.md +1 -1
  1616. package/docs/content/locales/hi-IN/embedding-sdk.md +2 -2
  1617. package/docs/content/locales/hi-IN/evals.md +2 -2
  1618. package/docs/content/locales/hi-IN/extensions.md +2 -2
  1619. package/docs/content/locales/hi-IN/external-agents.md +5 -5
  1620. package/docs/content/locales/hi-IN/faq.md +3 -3
  1621. package/docs/content/locales/hi-IN/file-uploads.md +4 -4
  1622. package/docs/content/locales/hi-IN/frames.md +1 -1
  1623. package/docs/content/locales/hi-IN/getting-started.md +14 -14
  1624. package/docs/content/locales/hi-IN/harness-agents.md +3 -3
  1625. package/docs/content/locales/hi-IN/human-approval.md +3 -3
  1626. package/docs/content/locales/hi-IN/key-concepts.md +14 -14
  1627. package/docs/content/locales/hi-IN/local-file-mode.md +5 -5
  1628. package/docs/content/locales/hi-IN/mcp-apps.md +4 -4
  1629. package/docs/content/locales/hi-IN/mcp-clients.md +7 -7
  1630. package/docs/content/locales/hi-IN/mcp-protocol.md +3 -3
  1631. package/docs/content/locales/hi-IN/messaging.md +6 -6
  1632. package/docs/content/locales/hi-IN/migration-workbench.md +1 -1
  1633. package/docs/content/locales/hi-IN/multi-app-workspace.md +1 -1
  1634. package/docs/content/locales/hi-IN/multi-tenancy.md +1 -1
  1635. package/docs/content/locales/hi-IN/native-chat-ui.md +3 -3
  1636. package/docs/content/locales/hi-IN/notifications.md +3 -3
  1637. package/docs/content/locales/hi-IN/observability.md +2 -2
  1638. package/docs/content/locales/hi-IN/observational-memory.md +2 -2
  1639. package/docs/content/locales/hi-IN/onboarding.md +8 -8
  1640. package/docs/content/locales/hi-IN/plan-plugin.md +3 -3
  1641. package/docs/content/locales/hi-IN/pr-visual-recap.md +11 -11
  1642. package/docs/content/locales/hi-IN/processors.md +1 -1
  1643. package/docs/content/locales/hi-IN/progress.md +2 -2
  1644. package/docs/content/locales/hi-IN/pure-agent-apps.md +1 -1
  1645. package/docs/content/locales/hi-IN/real-time-collaboration.md +6 -6
  1646. package/docs/content/locales/hi-IN/recurring-jobs.md +5 -5
  1647. package/docs/content/locales/hi-IN/routing.md +1 -1
  1648. package/docs/content/locales/hi-IN/sandbox-adapters.md +2 -2
  1649. package/docs/content/locales/hi-IN/security.md +8 -8
  1650. package/docs/content/locales/hi-IN/server.md +10 -10
  1651. package/docs/content/locales/hi-IN/sharing.md +6 -6
  1652. package/docs/content/locales/hi-IN/skills-guide.md +16 -16
  1653. package/docs/content/locales/hi-IN/template-analytics.md +10 -10
  1654. package/docs/content/locales/hi-IN/template-assets.md +19 -19
  1655. package/docs/content/locales/hi-IN/template-brain.md +11 -11
  1656. package/docs/content/locales/hi-IN/template-calendar.md +9 -9
  1657. package/docs/content/locales/hi-IN/template-chat.md +3 -3
  1658. package/docs/content/locales/hi-IN/template-clips.md +14 -14
  1659. package/docs/content/locales/hi-IN/template-content.md +13 -13
  1660. package/docs/content/locales/hi-IN/template-design.md +7 -7
  1661. package/docs/content/locales/hi-IN/template-dispatch.md +9 -9
  1662. package/docs/content/locales/hi-IN/template-forms.md +9 -9
  1663. package/docs/content/locales/hi-IN/template-mail.md +6 -6
  1664. package/docs/content/locales/hi-IN/template-plan.md +3 -3
  1665. package/docs/content/locales/hi-IN/template-slides.md +8 -8
  1666. package/docs/content/locales/hi-IN/template-videos.md +5 -5
  1667. package/docs/content/locales/hi-IN/tracking.md +3 -3
  1668. package/docs/content/locales/hi-IN/using-your-agent.md +1 -1
  1669. package/docs/content/locales/hi-IN/voice-input.md +4 -4
  1670. package/docs/content/locales/hi-IN/what-is-agent-native.md +4 -4
  1671. package/docs/content/locales/hi-IN/workspace-connections.md +8 -8
  1672. package/docs/content/locales/hi-IN/workspace-management.md +4 -4
  1673. package/docs/content/locales/hi-IN/workspace.md +23 -23
  1674. package/docs/content/locales/hi-IN/writing-agent-instructions.md +18 -18
  1675. package/docs/content/locales/ja-JP/a2a-protocol.md +7 -7
  1676. package/docs/content/locales/ja-JP/actions.md +3 -3
  1677. package/docs/content/locales/ja-JP/agent-mentions.md +3 -3
  1678. package/docs/content/locales/ja-JP/agent-surfaces.md +7 -7
  1679. package/docs/content/locales/ja-JP/agent-teams.md +3 -3
  1680. package/docs/content/locales/ja-JP/agent-web-surfaces.md +5 -5
  1681. package/docs/content/locales/ja-JP/authentication.md +6 -6
  1682. package/docs/content/locales/ja-JP/automations.md +8 -8
  1683. package/docs/content/locales/ja-JP/blueprint-installer.md +2 -2
  1684. package/docs/content/locales/ja-JP/client.md +1 -1
  1685. package/docs/content/locales/ja-JP/cloneable-saas.md +2 -2
  1686. package/docs/content/locales/ja-JP/code-agents-ui.md +4 -4
  1687. package/docs/content/locales/ja-JP/components.md +5 -5
  1688. package/docs/content/locales/ja-JP/context-awareness.md +8 -8
  1689. package/docs/content/locales/ja-JP/creating-templates.md +12 -12
  1690. package/docs/content/locales/ja-JP/cross-app-sso.md +3 -3
  1691. package/docs/content/locales/ja-JP/database.md +7 -7
  1692. package/docs/content/locales/ja-JP/deployment.md +4 -4
  1693. package/docs/content/locales/ja-JP/dispatch.md +4 -4
  1694. package/docs/content/locales/ja-JP/drop-in-agent.md +8 -8
  1695. package/docs/content/locales/ja-JP/durable-resume.md +1 -1
  1696. package/docs/content/locales/ja-JP/embedding-sdk.md +2 -2
  1697. package/docs/content/locales/ja-JP/evals.md +2 -2
  1698. package/docs/content/locales/ja-JP/extensions.md +2 -2
  1699. package/docs/content/locales/ja-JP/external-agents.md +5 -5
  1700. package/docs/content/locales/ja-JP/faq.md +3 -3
  1701. package/docs/content/locales/ja-JP/file-uploads.md +4 -4
  1702. package/docs/content/locales/ja-JP/frames.md +1 -1
  1703. package/docs/content/locales/ja-JP/getting-started.md +13 -13
  1704. package/docs/content/locales/ja-JP/harness-agents.md +3 -3
  1705. package/docs/content/locales/ja-JP/human-approval.md +3 -3
  1706. package/docs/content/locales/ja-JP/key-concepts.md +14 -14
  1707. package/docs/content/locales/ja-JP/local-file-mode.md +5 -5
  1708. package/docs/content/locales/ja-JP/mcp-apps.md +4 -4
  1709. package/docs/content/locales/ja-JP/mcp-clients.md +8 -8
  1710. package/docs/content/locales/ja-JP/mcp-protocol.md +3 -3
  1711. package/docs/content/locales/ja-JP/messaging.md +6 -6
  1712. package/docs/content/locales/ja-JP/migration-workbench.md +1 -1
  1713. package/docs/content/locales/ja-JP/multi-app-workspace.md +1 -1
  1714. package/docs/content/locales/ja-JP/multi-tenancy.md +1 -1
  1715. package/docs/content/locales/ja-JP/native-chat-ui.md +3 -3
  1716. package/docs/content/locales/ja-JP/notifications.md +3 -3
  1717. package/docs/content/locales/ja-JP/observability.md +2 -2
  1718. package/docs/content/locales/ja-JP/observational-memory.md +2 -2
  1719. package/docs/content/locales/ja-JP/onboarding.md +8 -8
  1720. package/docs/content/locales/ja-JP/plan-plugin.md +3 -3
  1721. package/docs/content/locales/ja-JP/pr-visual-recap.md +11 -11
  1722. package/docs/content/locales/ja-JP/processors.md +1 -1
  1723. package/docs/content/locales/ja-JP/progress.md +2 -2
  1724. package/docs/content/locales/ja-JP/pure-agent-apps.md +1 -1
  1725. package/docs/content/locales/ja-JP/real-time-collaboration.md +6 -6
  1726. package/docs/content/locales/ja-JP/recurring-jobs.md +5 -5
  1727. package/docs/content/locales/ja-JP/routing.md +1 -1
  1728. package/docs/content/locales/ja-JP/sandbox-adapters.md +2 -2
  1729. package/docs/content/locales/ja-JP/security.md +8 -8
  1730. package/docs/content/locales/ja-JP/server.md +10 -10
  1731. package/docs/content/locales/ja-JP/sharing.md +6 -6
  1732. package/docs/content/locales/ja-JP/skills-guide.md +16 -16
  1733. package/docs/content/locales/ja-JP/template-analytics.md +10 -10
  1734. package/docs/content/locales/ja-JP/template-assets.md +19 -19
  1735. package/docs/content/locales/ja-JP/template-brain.md +11 -11
  1736. package/docs/content/locales/ja-JP/template-calendar.md +9 -9
  1737. package/docs/content/locales/ja-JP/template-chat.md +3 -3
  1738. package/docs/content/locales/ja-JP/template-clips.md +14 -14
  1739. package/docs/content/locales/ja-JP/template-content.md +13 -13
  1740. package/docs/content/locales/ja-JP/template-design.md +7 -7
  1741. package/docs/content/locales/ja-JP/template-dispatch.md +12 -12
  1742. package/docs/content/locales/ja-JP/template-forms.md +9 -9
  1743. package/docs/content/locales/ja-JP/template-mail.md +6 -6
  1744. package/docs/content/locales/ja-JP/template-plan.md +3 -3
  1745. package/docs/content/locales/ja-JP/template-slides.md +8 -8
  1746. package/docs/content/locales/ja-JP/template-videos.md +5 -5
  1747. package/docs/content/locales/ja-JP/tracking.md +3 -3
  1748. package/docs/content/locales/ja-JP/using-your-agent.md +4 -4
  1749. package/docs/content/locales/ja-JP/voice-input.md +4 -4
  1750. package/docs/content/locales/ja-JP/what-is-agent-native.md +4 -4
  1751. package/docs/content/locales/ja-JP/workspace-connections.md +8 -8
  1752. package/docs/content/locales/ja-JP/workspace-management.md +5 -5
  1753. package/docs/content/locales/ja-JP/workspace.md +23 -23
  1754. package/docs/content/locales/ja-JP/writing-agent-instructions.md +18 -18
  1755. package/docs/content/locales/ko-KR/a2a-protocol.md +7 -7
  1756. package/docs/content/locales/ko-KR/actions.md +3 -3
  1757. package/docs/content/locales/ko-KR/agent-mentions.md +3 -3
  1758. package/docs/content/locales/ko-KR/agent-surfaces.md +15 -15
  1759. package/docs/content/locales/ko-KR/agent-teams.md +3 -3
  1760. package/docs/content/locales/ko-KR/agent-web-surfaces.md +5 -5
  1761. package/docs/content/locales/ko-KR/authentication.md +13 -13
  1762. package/docs/content/locales/ko-KR/automations.md +8 -8
  1763. package/docs/content/locales/ko-KR/blueprint-installer.md +2 -2
  1764. package/docs/content/locales/ko-KR/client.md +1 -1
  1765. package/docs/content/locales/ko-KR/cloneable-saas.md +2 -2
  1766. package/docs/content/locales/ko-KR/code-agents-ui.md +4 -4
  1767. package/docs/content/locales/ko-KR/components.md +5 -5
  1768. package/docs/content/locales/ko-KR/context-awareness.md +8 -8
  1769. package/docs/content/locales/ko-KR/creating-templates.md +12 -12
  1770. package/docs/content/locales/ko-KR/cross-app-sso.md +3 -3
  1771. package/docs/content/locales/ko-KR/database.md +7 -7
  1772. package/docs/content/locales/ko-KR/deployment.md +4 -4
  1773. package/docs/content/locales/ko-KR/dispatch.md +4 -4
  1774. package/docs/content/locales/ko-KR/drop-in-agent.md +8 -8
  1775. package/docs/content/locales/ko-KR/durable-resume.md +1 -1
  1776. package/docs/content/locales/ko-KR/embedding-sdk.md +2 -2
  1777. package/docs/content/locales/ko-KR/evals.md +2 -2
  1778. package/docs/content/locales/ko-KR/extensions.md +2 -2
  1779. package/docs/content/locales/ko-KR/external-agents.md +5 -5
  1780. package/docs/content/locales/ko-KR/faq.md +3 -3
  1781. package/docs/content/locales/ko-KR/file-uploads.md +4 -4
  1782. package/docs/content/locales/ko-KR/frames.md +1 -1
  1783. package/docs/content/locales/ko-KR/getting-started.md +13 -13
  1784. package/docs/content/locales/ko-KR/harness-agents.md +3 -3
  1785. package/docs/content/locales/ko-KR/human-approval.md +3 -3
  1786. package/docs/content/locales/ko-KR/key-concepts.md +14 -14
  1787. package/docs/content/locales/ko-KR/local-file-mode.md +5 -5
  1788. package/docs/content/locales/ko-KR/mcp-apps.md +4 -4
  1789. package/docs/content/locales/ko-KR/mcp-clients.md +8 -8
  1790. package/docs/content/locales/ko-KR/mcp-protocol.md +3 -3
  1791. package/docs/content/locales/ko-KR/messaging.md +6 -6
  1792. package/docs/content/locales/ko-KR/migration-workbench.md +1 -1
  1793. package/docs/content/locales/ko-KR/multi-app-workspace.md +1 -1
  1794. package/docs/content/locales/ko-KR/multi-tenancy.md +1 -1
  1795. package/docs/content/locales/ko-KR/native-chat-ui.md +3 -3
  1796. package/docs/content/locales/ko-KR/notifications.md +3 -3
  1797. package/docs/content/locales/ko-KR/observability.md +2 -2
  1798. package/docs/content/locales/ko-KR/observational-memory.md +2 -2
  1799. package/docs/content/locales/ko-KR/onboarding.md +8 -8
  1800. package/docs/content/locales/ko-KR/plan-plugin.md +3 -3
  1801. package/docs/content/locales/ko-KR/pr-visual-recap.md +11 -11
  1802. package/docs/content/locales/ko-KR/processors.md +1 -1
  1803. package/docs/content/locales/ko-KR/progress.md +2 -2
  1804. package/docs/content/locales/ko-KR/pure-agent-apps.md +1 -1
  1805. package/docs/content/locales/ko-KR/real-time-collaboration.md +6 -6
  1806. package/docs/content/locales/ko-KR/recurring-jobs.md +5 -5
  1807. package/docs/content/locales/ko-KR/routing.md +1 -1
  1808. package/docs/content/locales/ko-KR/sandbox-adapters.md +2 -2
  1809. package/docs/content/locales/ko-KR/security.md +8 -8
  1810. package/docs/content/locales/ko-KR/server.md +10 -10
  1811. package/docs/content/locales/ko-KR/sharing.md +6 -6
  1812. package/docs/content/locales/ko-KR/skills-guide.md +16 -16
  1813. package/docs/content/locales/ko-KR/template-analytics.md +10 -10
  1814. package/docs/content/locales/ko-KR/template-assets.md +19 -19
  1815. package/docs/content/locales/ko-KR/template-brain.md +11 -11
  1816. package/docs/content/locales/ko-KR/template-calendar.md +9 -9
  1817. package/docs/content/locales/ko-KR/template-chat.md +3 -3
  1818. package/docs/content/locales/ko-KR/template-clips.md +14 -14
  1819. package/docs/content/locales/ko-KR/template-content.md +13 -13
  1820. package/docs/content/locales/ko-KR/template-design.md +7 -7
  1821. package/docs/content/locales/ko-KR/template-dispatch.md +11 -11
  1822. package/docs/content/locales/ko-KR/template-forms.md +9 -9
  1823. package/docs/content/locales/ko-KR/template-mail.md +6 -6
  1824. package/docs/content/locales/ko-KR/template-plan.md +3 -3
  1825. package/docs/content/locales/ko-KR/template-slides.md +8 -8
  1826. package/docs/content/locales/ko-KR/template-videos.md +5 -5
  1827. package/docs/content/locales/ko-KR/tracking.md +3 -3
  1828. package/docs/content/locales/ko-KR/using-your-agent.md +5 -5
  1829. package/docs/content/locales/ko-KR/voice-input.md +4 -4
  1830. package/docs/content/locales/ko-KR/what-is-agent-native.md +6 -6
  1831. package/docs/content/locales/ko-KR/workspace-connections.md +8 -8
  1832. package/docs/content/locales/ko-KR/workspace-management.md +4 -4
  1833. package/docs/content/locales/ko-KR/workspace.md +23 -23
  1834. package/docs/content/locales/ko-KR/writing-agent-instructions.md +18 -18
  1835. package/docs/content/locales/pt-BR/a2a-protocol.md +7 -7
  1836. package/docs/content/locales/pt-BR/actions.md +2 -2
  1837. package/docs/content/locales/pt-BR/agent-mentions.md +3 -3
  1838. package/docs/content/locales/pt-BR/agent-surfaces.md +7 -7
  1839. package/docs/content/locales/pt-BR/agent-teams.md +3 -3
  1840. package/docs/content/locales/pt-BR/agent-web-surfaces.md +5 -5
  1841. package/docs/content/locales/pt-BR/authentication.md +6 -6
  1842. package/docs/content/locales/pt-BR/automations.md +8 -8
  1843. package/docs/content/locales/pt-BR/blueprint-installer.md +2 -2
  1844. package/docs/content/locales/pt-BR/client.md +2 -2
  1845. package/docs/content/locales/pt-BR/cloneable-saas.md +2 -2
  1846. package/docs/content/locales/pt-BR/code-agents-ui.md +4 -4
  1847. package/docs/content/locales/pt-BR/components.md +5 -5
  1848. package/docs/content/locales/pt-BR/context-awareness.md +8 -8
  1849. package/docs/content/locales/pt-BR/creating-templates.md +12 -12
  1850. package/docs/content/locales/pt-BR/cross-app-sso.md +3 -3
  1851. package/docs/content/locales/pt-BR/database.md +5 -5
  1852. package/docs/content/locales/pt-BR/deployment.md +5 -5
  1853. package/docs/content/locales/pt-BR/dispatch.md +3 -3
  1854. package/docs/content/locales/pt-BR/drop-in-agent.md +9 -9
  1855. package/docs/content/locales/pt-BR/durable-resume.md +1 -1
  1856. package/docs/content/locales/pt-BR/embedding-sdk.md +2 -2
  1857. package/docs/content/locales/pt-BR/evals.md +2 -2
  1858. package/docs/content/locales/pt-BR/extensions.md +2 -2
  1859. package/docs/content/locales/pt-BR/external-agents.md +5 -5
  1860. package/docs/content/locales/pt-BR/faq.md +3 -3
  1861. package/docs/content/locales/pt-BR/file-uploads.md +4 -4
  1862. package/docs/content/locales/pt-BR/frames.md +2 -2
  1863. package/docs/content/locales/pt-BR/getting-started.md +13 -13
  1864. package/docs/content/locales/pt-BR/harness-agents.md +3 -3
  1865. package/docs/content/locales/pt-BR/human-approval.md +3 -3
  1866. package/docs/content/locales/pt-BR/key-concepts.md +15 -15
  1867. package/docs/content/locales/pt-BR/local-file-mode.md +5 -5
  1868. package/docs/content/locales/pt-BR/mcp-apps.md +4 -4
  1869. package/docs/content/locales/pt-BR/mcp-clients.md +8 -8
  1870. package/docs/content/locales/pt-BR/mcp-protocol.md +3 -3
  1871. package/docs/content/locales/pt-BR/messaging.md +4 -4
  1872. package/docs/content/locales/pt-BR/migration-workbench.md +1 -1
  1873. package/docs/content/locales/pt-BR/multi-app-workspace.md +1 -1
  1874. package/docs/content/locales/pt-BR/multi-tenancy.md +1 -1
  1875. package/docs/content/locales/pt-BR/native-chat-ui.md +3 -3
  1876. package/docs/content/locales/pt-BR/notifications.md +3 -3
  1877. package/docs/content/locales/pt-BR/observability.md +2 -2
  1878. package/docs/content/locales/pt-BR/observational-memory.md +2 -2
  1879. package/docs/content/locales/pt-BR/onboarding.md +8 -8
  1880. package/docs/content/locales/pt-BR/plan-plugin.md +3 -3
  1881. package/docs/content/locales/pt-BR/pr-visual-recap.md +11 -11
  1882. package/docs/content/locales/pt-BR/processors.md +1 -1
  1883. package/docs/content/locales/pt-BR/progress.md +2 -2
  1884. package/docs/content/locales/pt-BR/pure-agent-apps.md +1 -1
  1885. package/docs/content/locales/pt-BR/real-time-collaboration.md +6 -6
  1886. package/docs/content/locales/pt-BR/recurring-jobs.md +5 -5
  1887. package/docs/content/locales/pt-BR/routing.md +1 -1
  1888. package/docs/content/locales/pt-BR/sandbox-adapters.md +2 -2
  1889. package/docs/content/locales/pt-BR/security.md +9 -9
  1890. package/docs/content/locales/pt-BR/server.md +10 -10
  1891. package/docs/content/locales/pt-BR/sharing.md +6 -6
  1892. package/docs/content/locales/pt-BR/skills-guide.md +16 -16
  1893. package/docs/content/locales/pt-BR/template-analytics.md +10 -10
  1894. package/docs/content/locales/pt-BR/template-assets.md +20 -20
  1895. package/docs/content/locales/pt-BR/template-brain.md +11 -11
  1896. package/docs/content/locales/pt-BR/template-calendar.md +9 -9
  1897. package/docs/content/locales/pt-BR/template-chat.md +3 -3
  1898. package/docs/content/locales/pt-BR/template-clips.md +15 -15
  1899. package/docs/content/locales/pt-BR/template-content.md +13 -13
  1900. package/docs/content/locales/pt-BR/template-design.md +8 -8
  1901. package/docs/content/locales/pt-BR/template-dispatch.md +8 -8
  1902. package/docs/content/locales/pt-BR/template-forms.md +10 -10
  1903. package/docs/content/locales/pt-BR/template-mail.md +6 -6
  1904. package/docs/content/locales/pt-BR/template-plan.md +3 -3
  1905. package/docs/content/locales/pt-BR/template-slides.md +9 -9
  1906. package/docs/content/locales/pt-BR/template-videos.md +5 -5
  1907. package/docs/content/locales/pt-BR/tracking.md +3 -3
  1908. package/docs/content/locales/pt-BR/using-your-agent.md +5 -5
  1909. package/docs/content/locales/pt-BR/voice-input.md +4 -4
  1910. package/docs/content/locales/pt-BR/what-is-agent-native.md +5 -5
  1911. package/docs/content/locales/pt-BR/workspace-connections.md +8 -8
  1912. package/docs/content/locales/pt-BR/workspace-management.md +4 -4
  1913. package/docs/content/locales/pt-BR/workspace.md +23 -23
  1914. package/docs/content/locales/pt-BR/writing-agent-instructions.md +18 -18
  1915. package/docs/content/locales/zh-CN/a2a-protocol.md +7 -7
  1916. package/docs/content/locales/zh-CN/actions.md +3 -3
  1917. package/docs/content/locales/zh-CN/agent-mentions.md +3 -3
  1918. package/docs/content/locales/zh-CN/agent-surfaces.md +7 -7
  1919. package/docs/content/locales/zh-CN/agent-teams.md +3 -3
  1920. package/docs/content/locales/zh-CN/agent-web-surfaces.md +5 -5
  1921. package/docs/content/locales/zh-CN/authentication.md +13 -13
  1922. package/docs/content/locales/zh-CN/automations.md +8 -8
  1923. package/docs/content/locales/zh-CN/blueprint-installer.md +2 -2
  1924. package/docs/content/locales/zh-CN/client.md +1 -1
  1925. package/docs/content/locales/zh-CN/cloneable-saas.md +2 -2
  1926. package/docs/content/locales/zh-CN/code-agents-ui.md +4 -4
  1927. package/docs/content/locales/zh-CN/components.md +7 -7
  1928. package/docs/content/locales/zh-CN/context-awareness.md +8 -8
  1929. package/docs/content/locales/zh-CN/creating-templates.md +12 -12
  1930. package/docs/content/locales/zh-CN/cross-app-sso.md +3 -3
  1931. package/docs/content/locales/zh-CN/database.md +7 -7
  1932. package/docs/content/locales/zh-CN/deployment.md +4 -4
  1933. package/docs/content/locales/zh-CN/dispatch.md +4 -4
  1934. package/docs/content/locales/zh-CN/drop-in-agent.md +8 -8
  1935. package/docs/content/locales/zh-CN/durable-resume.md +1 -1
  1936. package/docs/content/locales/zh-CN/embedding-sdk.md +2 -2
  1937. package/docs/content/locales/zh-CN/evals.md +2 -2
  1938. package/docs/content/locales/zh-CN/extensions.md +2 -2
  1939. package/docs/content/locales/zh-CN/external-agents.md +5 -5
  1940. package/docs/content/locales/zh-CN/faq.md +3 -3
  1941. package/docs/content/locales/zh-CN/file-uploads.md +4 -4
  1942. package/docs/content/locales/zh-CN/frames.md +2 -2
  1943. package/docs/content/locales/zh-CN/getting-started.md +13 -13
  1944. package/docs/content/locales/zh-CN/harness-agents.md +3 -3
  1945. package/docs/content/locales/zh-CN/human-approval.md +3 -3
  1946. package/docs/content/locales/zh-CN/key-concepts.md +14 -14
  1947. package/docs/content/locales/zh-CN/local-file-mode.md +5 -5
  1948. package/docs/content/locales/zh-CN/mcp-apps.md +4 -4
  1949. package/docs/content/locales/zh-CN/mcp-clients.md +7 -7
  1950. package/docs/content/locales/zh-CN/mcp-protocol.md +3 -3
  1951. package/docs/content/locales/zh-CN/messaging.md +6 -6
  1952. package/docs/content/locales/zh-CN/migration-workbench.md +1 -1
  1953. package/docs/content/locales/zh-CN/multi-app-workspace.md +1 -1
  1954. package/docs/content/locales/zh-CN/multi-tenancy.md +1 -1
  1955. package/docs/content/locales/zh-CN/native-chat-ui.md +3 -3
  1956. package/docs/content/locales/zh-CN/notifications.md +3 -3
  1957. package/docs/content/locales/zh-CN/observability.md +2 -2
  1958. package/docs/content/locales/zh-CN/observational-memory.md +2 -2
  1959. package/docs/content/locales/zh-CN/onboarding.md +8 -8
  1960. package/docs/content/locales/zh-CN/plan-plugin.md +3 -3
  1961. package/docs/content/locales/zh-CN/pr-visual-recap.md +11 -11
  1962. package/docs/content/locales/zh-CN/processors.md +1 -1
  1963. package/docs/content/locales/zh-CN/progress.md +2 -2
  1964. package/docs/content/locales/zh-CN/pure-agent-apps.md +1 -1
  1965. package/docs/content/locales/zh-CN/real-time-collaboration.md +6 -6
  1966. package/docs/content/locales/zh-CN/recurring-jobs.md +5 -5
  1967. package/docs/content/locales/zh-CN/routing.md +1 -1
  1968. package/docs/content/locales/zh-CN/sandbox-adapters.md +2 -2
  1969. package/docs/content/locales/zh-CN/security.md +8 -8
  1970. package/docs/content/locales/zh-CN/server.md +10 -10
  1971. package/docs/content/locales/zh-CN/sharing.md +6 -6
  1972. package/docs/content/locales/zh-CN/skills-guide.md +16 -16
  1973. package/docs/content/locales/zh-CN/template-analytics.md +10 -10
  1974. package/docs/content/locales/zh-CN/template-assets.md +20 -20
  1975. package/docs/content/locales/zh-CN/template-brain.md +11 -11
  1976. package/docs/content/locales/zh-CN/template-calendar.md +9 -9
  1977. package/docs/content/locales/zh-CN/template-chat.md +3 -3
  1978. package/docs/content/locales/zh-CN/template-clips.md +14 -14
  1979. package/docs/content/locales/zh-CN/template-content.md +13 -13
  1980. package/docs/content/locales/zh-CN/template-design.md +7 -7
  1981. package/docs/content/locales/zh-CN/template-dispatch.md +11 -11
  1982. package/docs/content/locales/zh-CN/template-forms.md +9 -9
  1983. package/docs/content/locales/zh-CN/template-mail.md +6 -6
  1984. package/docs/content/locales/zh-CN/template-plan.md +3 -3
  1985. package/docs/content/locales/zh-CN/template-slides.md +8 -8
  1986. package/docs/content/locales/zh-CN/template-videos.md +5 -5
  1987. package/docs/content/locales/zh-CN/tracking.md +3 -3
  1988. package/docs/content/locales/zh-CN/using-your-agent.md +5 -5
  1989. package/docs/content/locales/zh-CN/voice-input.md +4 -4
  1990. package/docs/content/locales/zh-CN/what-is-agent-native.md +5 -5
  1991. package/docs/content/locales/zh-CN/workspace-connections.md +8 -8
  1992. package/docs/content/locales/zh-CN/workspace-management.md +5 -5
  1993. package/docs/content/locales/zh-CN/workspace.md +23 -23
  1994. package/docs/content/locales/zh-CN/writing-agent-instructions.md +18 -18
  1995. package/package.json +1 -1
  1996. package/src/templates/default/app/i18n/ar-SA.ts +275 -274
  1997. package/src/templates/default/app/i18n/de-DE.ts +270 -260
  1998. package/src/templates/default/app/i18n/es-ES.ts +282 -270
  1999. package/src/templates/default/app/i18n/fr-FR.ts +275 -266
  2000. package/src/templates/default/app/i18n/hi-IN.ts +274 -276
  2001. package/src/templates/default/app/i18n/ja-JP.ts +280 -273
  2002. package/src/templates/default/app/i18n/ko-KR.ts +274 -274
  2003. package/src/templates/default/app/i18n/pt-BR.ts +273 -266
  2004. package/src/templates/default/app/i18n/zh-CN.ts +273 -285
@@ -4,6 +4,7 @@ import {
4
4
  agentNativePath,
5
5
  getBrowserTabId,
6
6
  sendToAgentChat,
7
+ useT,
7
8
  useActionMutation,
8
9
  useActionQuery,
9
10
  } from "@agent-native/core/client";
@@ -356,6 +357,7 @@ function libraryTabFromValue(value: unknown): LibraryTab | null {
356
357
  }
357
358
 
358
359
  export default function LibraryPage() {
360
+ const t = useT();
359
361
  const { id } = useParams();
360
362
  const navigate = useNavigate();
361
363
  const [searchParams] = useSearchParams();
@@ -647,10 +649,12 @@ export default function LibraryPage() {
647
649
  queryKey: ["app-state", "asset-variants"],
648
650
  refetchType: "active",
649
651
  });
650
- toast.success("Saved to Generated.");
652
+ toast.success(t("brandKitDetail.savedToGenerated"));
651
653
  } catch (error) {
652
654
  toast.error(
653
- error instanceof Error ? error.message : "Could not save candidate.",
655
+ error instanceof Error
656
+ ? error.message
657
+ : t("brandKitDetail.couldNotSaveCandidate"),
654
658
  );
655
659
  } finally {
656
660
  setCandidateSaving(key, false);
@@ -683,12 +687,12 @@ export default function LibraryPage() {
683
687
  queryKey: ["app-state", "asset-variants"],
684
688
  refetchType: "active",
685
689
  });
686
- toast.success("Added to References.");
690
+ toast.success(t("brandKitDetail.addedToReferences"));
687
691
  } catch (error) {
688
692
  toast.error(
689
693
  error instanceof Error
690
694
  ? error.message
691
- : "Could not add asset to References.",
695
+ : t("brandKitDetail.couldNotAddToReferences"),
692
696
  );
693
697
  } finally {
694
698
  setReferencePromoting(key, false);
@@ -710,12 +714,12 @@ export default function LibraryPage() {
710
714
  queryKey: ["action", "get-library", { id: libraryId }],
711
715
  refetchType: "active",
712
716
  });
713
- toast.success("Removed from References.");
717
+ toast.success(t("brandKitDetail.removedFromReferences"));
714
718
  } catch (error) {
715
719
  toast.error(
716
720
  error instanceof Error
717
721
  ? error.message
718
- : "Could not remove asset from References.",
722
+ : t("brandKitDetail.couldNotRemoveFromReferences"),
719
723
  );
720
724
  } finally {
721
725
  setReferencePromoting(key, false);
@@ -843,12 +847,14 @@ export default function LibraryPage() {
843
847
  setUploading(true);
844
848
  let keepPending = false;
845
849
  const toastId = toast.loading(
846
- `Uploading ${selectedFiles.length} asset${selectedFiles.length === 1 ? "" : "s"}...`,
850
+ t("brandKitDetail.uploadProgress", { count: selectedFiles.length }),
847
851
  {
848
852
  description:
849
853
  uploadChunks.length > 1
850
- ? `Processing in ${uploadChunks.length} batches.`
851
- : "Processing previews and saving them to the brand kit.",
854
+ ? t("brandKitDetail.processingBatches", {
855
+ count: uploadChunks.length,
856
+ })
857
+ : t("brandKitDetail.processingPreviews"),
852
858
  },
853
859
  );
854
860
  try {
@@ -883,23 +889,35 @@ export default function LibraryPage() {
883
889
  }
884
890
  if (failedCount > 0) {
885
891
  toast.warning(
886
- `Uploaded ${uploadedCount} asset${uploadedCount === 1 ? "" : "s"}; ${failedCount} failed.`,
892
+ t("brandKitDetail.uploadedSomeFailed", {
893
+ uploaded: uploadedCount,
894
+ uploadedPlural: uploadedCount === 1 ? "" : "s",
895
+ failed: failedCount,
896
+ }),
887
897
  {
888
898
  id: toastId,
889
899
  description:
890
900
  skippedCount > 0
891
- ? `Skipped ${skippedCount} duplicate${skippedCount === 1 ? "" : "s"}.`
901
+ ? t("brandKitDetail.skippedDuplicates", {
902
+ count: skippedCount,
903
+ plural: skippedCount === 1 ? "" : "s",
904
+ })
892
905
  : null,
893
906
  },
894
907
  );
895
908
  } else if (uploadedCount > 0 && skippedCount > 0) {
896
909
  toast.success(
897
- `Uploaded ${uploadedCount} asset${uploadedCount === 1 ? "" : "s"}; skipped ${skippedCount} duplicate${skippedCount === 1 ? "" : "s"}.`,
910
+ t("brandKitDetail.uploadedSkipped", {
911
+ uploaded: uploadedCount,
912
+ uploadedPlural: uploadedCount === 1 ? "" : "s",
913
+ skipped: skippedCount,
914
+ skippedPlural: skippedCount === 1 ? "" : "s",
915
+ }),
898
916
  { id: toastId, description: null },
899
917
  );
900
918
  } else if (uploadedCount > 0) {
901
919
  toast.success(
902
- `Uploaded ${uploadedCount} asset${uploadedCount === 1 ? "" : "s"}.`,
920
+ t("brandKitDetail.uploadedCount", { count: uploadedCount }),
903
921
  {
904
922
  id: toastId,
905
923
  description: null,
@@ -907,23 +925,22 @@ export default function LibraryPage() {
907
925
  );
908
926
  } else if (skippedCount > 0) {
909
927
  toast.warning(
910
- `Skipped ${skippedCount} duplicate asset${
911
- skippedCount === 1 ? "" : "s"
912
- }.`,
928
+ t("brandKitDetail.skippedDuplicateAssets", { count: skippedCount }),
913
929
  {
914
930
  id: toastId,
915
- description: "Already in this brand kit.",
931
+ description: t("brandKitDetail.alreadyInBrandKit"),
916
932
  },
917
933
  );
918
934
  } else {
919
- toast.warning("No new assets were uploaded.", {
935
+ toast.warning(t("brandKitDetail.noNewAssetsUploaded"), {
920
936
  id: toastId,
921
937
  description: null,
922
938
  });
923
939
  }
924
940
  await refreshLibrary();
925
941
  } catch (e) {
926
- const message = e instanceof Error ? e.message : "Upload failed";
942
+ const message =
943
+ e instanceof Error ? e.message : t("brandKitDetail.uploadFailed");
927
944
  const indeterminate =
928
945
  /(?:\b408\b|\b504\b|timeout|timed out|network|failed to fetch|load failed)/i.test(
929
946
  message,
@@ -933,10 +950,9 @@ export default function LibraryPage() {
933
950
  setPendingUploads(
934
951
  pending.map((upload) => ({ ...upload, status: "checking" })),
935
952
  );
936
- toast.warning("Upload is taking longer than expected.", {
953
+ toast.warning(t("brandKitDetail.uploadTakingLonger"), {
937
954
  id: toastId,
938
- description:
939
- "The server may still finish saving these assets. We will keep checking this brand kit.",
955
+ description: t("brandKitDetail.uploadMayFinish"),
940
956
  });
941
957
  void refreshLibrary();
942
958
  window.setTimeout(() => void refreshLibrary(), 4_000);
@@ -958,11 +974,13 @@ export default function LibraryPage() {
958
974
  if (!library || archiveLibrary.isPending) return;
959
975
  try {
960
976
  await archiveLibrary.mutateAsync({ id: library.id });
961
- toast.success("Brand kit archived.");
977
+ toast.success(t("brandKitDetail.brandKitArchived"));
962
978
  navigate("/brand-kits");
963
979
  } catch (error) {
964
980
  toast.error(
965
- error instanceof Error ? error.message : "Could not archive brand kit.",
981
+ error instanceof Error
982
+ ? error.message
983
+ : t("brandKitDetail.couldNotArchiveBrandKit"),
966
984
  );
967
985
  }
968
986
  }
@@ -973,13 +991,13 @@ export default function LibraryPage() {
973
991
  const copy = (await duplicateLibrary.mutateAsync({
974
992
  id: library.id,
975
993
  })) as any;
976
- toast.success("Private brand kit copy created");
994
+ toast.success(t("brandKitDetail.privateCopyCreated"));
977
995
  navigate(`/brand-kits/${copy.id}`);
978
996
  } catch (error) {
979
997
  toast.error(
980
998
  error instanceof Error
981
999
  ? error.message
982
- : "Could not duplicate brand kit.",
1000
+ : t("brandKitDetail.couldNotDuplicateBrandKit"),
983
1001
  );
984
1002
  }
985
1003
  }
@@ -1015,7 +1033,7 @@ export default function LibraryPage() {
1015
1033
  "## Selected library",
1016
1034
  `Library: ${library.title} (${library.id})`,
1017
1035
  `Description: ${library.description || ""}`,
1018
- `Folder: ${activeFolderId && activeFolderId !== "all" ? folders.find((folder) => folder.id === activeFolderId)?.title : "All assets"}`,
1036
+ `Folder: ${activeFolderId && activeFolderId !== "all" ? folders.find((folder) => folder.id === activeFolderId)?.title : "All assets"}`, // i18n-ignore: agent prompt context, not UI
1019
1037
  `References: ${references.length}`,
1020
1038
  `Saved assets: ${saved.length}`,
1021
1039
  `Style brief: ${JSON.stringify(library.styleBrief ?? {})}`,
@@ -1052,7 +1070,9 @@ export default function LibraryPage() {
1052
1070
  });
1053
1071
  },
1054
1072
  onError: (error: Error) => {
1055
- toast.error(error.message || "Could not prepare handoff.");
1073
+ toast.error(
1074
+ error.message || t("brandKitDetail.couldNotPrepareHandoff"),
1075
+ );
1056
1076
  },
1057
1077
  },
1058
1078
  );
@@ -1061,10 +1081,11 @@ export default function LibraryPage() {
1061
1081
  function createHandoffFromRun(run: any) {
1062
1082
  const outputIds = outputAssetIds(run);
1063
1083
  if (!outputIds.length) {
1064
- toast.error("This run does not have generated assets to hand off.");
1084
+ toast.error(t("brandKitDetail.runNoGeneratedAssets"));
1065
1085
  return;
1066
1086
  }
1067
- const prompt = run.originalPrompt || run.prompt || "Generated asset";
1087
+ const prompt =
1088
+ run.originalPrompt || run.prompt || t("brandKitDetail.generatedAsset");
1068
1089
  createSession.mutate(
1069
1090
  {
1070
1091
  libraryId,
@@ -1075,12 +1096,15 @@ export default function LibraryPage() {
1075
1096
  activeAssetId: outputIds[0],
1076
1097
  assetIds: outputIds,
1077
1098
  runIds: [run.id],
1078
- feedback: "Needs design refinement.",
1099
+ feedback: t("brandKitDetail.needsDesignRefinement"),
1079
1100
  },
1080
1101
  {
1081
- onSuccess: () => toast.success("Handoff session created."),
1102
+ onSuccess: () =>
1103
+ toast.success(t("brandKitDetail.handoffSessionCreated")),
1082
1104
  onError: (error: Error) => {
1083
- toast.error(error.message || "Could not create handoff.");
1105
+ toast.error(
1106
+ error.message || t("brandKitDetail.couldNotCreateHandoff"),
1107
+ );
1084
1108
  },
1085
1109
  },
1086
1110
  );
@@ -1089,7 +1113,7 @@ export default function LibraryPage() {
1089
1113
  if (!library) {
1090
1114
  return (
1091
1115
  <div className="p-6 text-sm text-muted-foreground">
1092
- Loading brand kit...
1116
+ {t("brandKitDetail.loadingBrandKit")}
1093
1117
  </div>
1094
1118
  );
1095
1119
  }
@@ -1114,14 +1138,13 @@ export default function LibraryPage() {
1114
1138
  size="icon"
1115
1139
  className="h-8 w-8 text-muted-foreground hover:text-foreground"
1116
1140
  onClick={() => setEditOpen(true)}
1117
- aria-label="Edit brand kit name and description"
1141
+ aria-label={t("brandKitDetail.editBrandKit")}
1118
1142
  >
1119
1143
  <IconPencil className="h-4 w-4" />
1120
1144
  </Button>
1121
1145
  </div>
1122
1146
  <p className="mt-1 max-w-3xl text-sm text-muted-foreground">
1123
- {library.description ||
1124
- "Upload, generate, describe, and organize reusable assets across agents."}
1147
+ {library.description || t("brandKitDetail.defaultDescription")}
1125
1148
  </p>
1126
1149
  </div>
1127
1150
  <div className="flex w-full flex-wrap items-center gap-2 sm:w-auto sm:flex-nowrap lg:shrink-0">
@@ -1141,7 +1164,11 @@ export default function LibraryPage() {
1141
1164
  ) : (
1142
1165
  <IconUpload className="h-4 w-4" />
1143
1166
  )}
1144
- {uploading ? `Uploading ${pendingUploads.length}` : "Upload"}
1167
+ {uploading
1168
+ ? t("brandKitDetail.uploadingCount", {
1169
+ count: pendingUploads.length,
1170
+ })
1171
+ : t("brandKitDetail.upload")}
1145
1172
  </Button>
1146
1173
  <Button
1147
1174
  variant="outline"
@@ -1149,7 +1176,7 @@ export default function LibraryPage() {
1149
1176
  onClick={() => setFolderOpen(true)}
1150
1177
  >
1151
1178
  <IconFolderPlus className="h-4 w-4" />
1152
- Folder
1179
+ {t("brandKitDetail.folder")}
1153
1180
  </Button>
1154
1181
  <GeneratePopover
1155
1182
  open={generateOpen}
@@ -1163,7 +1190,7 @@ export default function LibraryPage() {
1163
1190
  <Button
1164
1191
  variant="outline"
1165
1192
  size="icon"
1166
- aria-label="Brand kit actions"
1193
+ aria-label={t("brandKitDetail.brandKitActions")}
1167
1194
  disabled={
1168
1195
  archiveLibrary.isPending || duplicateLibrary.isPending
1169
1196
  }
@@ -1180,7 +1207,7 @@ export default function LibraryPage() {
1180
1207
  }}
1181
1208
  >
1182
1209
  <IconFolderPlus className="mr-2 h-4 w-4 shrink-0" />
1183
- New folder
1210
+ {t("brandKitDetail.newFolder")}
1184
1211
  </DropdownMenuItem>
1185
1212
  <DropdownMenuSeparator className="xl:hidden" />
1186
1213
  <DropdownMenuItem
@@ -1191,7 +1218,9 @@ export default function LibraryPage() {
1191
1218
  }}
1192
1219
  >
1193
1220
  <IconCopy className="mr-2 h-4 w-4 shrink-0" />
1194
- {duplicateLibrary.isPending ? "Duplicating..." : "Duplicate"}
1221
+ {duplicateLibrary.isPending
1222
+ ? t("brandKitDetail.duplicating")
1223
+ : t("brandKitDetail.duplicate")}
1195
1224
  </DropdownMenuItem>
1196
1225
  <DropdownMenuSeparator />
1197
1226
  <DropdownMenuItem
@@ -1201,7 +1230,7 @@ export default function LibraryPage() {
1201
1230
  }}
1202
1231
  >
1203
1232
  <IconArchive className="mr-2 h-4 w-4 shrink-0" />
1204
- Archive brand kit
1233
+ {t("brandKitDetail.archiveBrandKit")}
1205
1234
  </DropdownMenuItem>
1206
1235
  </DropdownMenuContent>
1207
1236
  </DropdownMenu>
@@ -1226,21 +1255,24 @@ export default function LibraryPage() {
1226
1255
  <AlertDialog open={archiveOpen} onOpenChange={setArchiveOpen}>
1227
1256
  <AlertDialogContent>
1228
1257
  <AlertDialogHeader>
1229
- <AlertDialogTitle>Archive this brand kit?</AlertDialogTitle>
1258
+ <AlertDialogTitle>
1259
+ {t("brandKitDetail.archiveThisBrandKit")}
1260
+ </AlertDialogTitle>
1230
1261
  <AlertDialogDescription>
1231
- This removes the brand kit from the main Brand Kits list. Its
1232
- assets and generation history stay stored.
1262
+ {t("brandKitDetail.archiveDescription")}
1233
1263
  </AlertDialogDescription>
1234
1264
  </AlertDialogHeader>
1235
1265
  <AlertDialogFooter>
1236
- <AlertDialogCancel>Cancel</AlertDialogCancel>
1266
+ <AlertDialogCancel>{t("brandKitDetail.cancel")}</AlertDialogCancel>
1237
1267
  <AlertDialogAction
1238
1268
  disabled={archiveLibrary.isPending}
1239
1269
  onClick={() => {
1240
1270
  void archiveCurrentLibrary();
1241
1271
  }}
1242
1272
  >
1243
- {archiveLibrary.isPending ? "Archiving..." : "Archive"}
1273
+ {archiveLibrary.isPending
1274
+ ? t("brandKitDetail.archiving")
1275
+ : t("brandKitDetail.archive")}
1244
1276
  </AlertDialogAction>
1245
1277
  </AlertDialogFooter>
1246
1278
  </AlertDialogContent>
@@ -1292,7 +1324,7 @@ export default function LibraryPage() {
1292
1324
  <div className="pointer-events-none absolute inset-0 z-50 flex flex-col items-center justify-center gap-3 rounded-lg border-2 border-dashed border-primary bg-primary/5 backdrop-blur-[1px]">
1293
1325
  <IconUpload className="h-10 w-10 text-primary" />
1294
1326
  <span className="text-base font-semibold text-primary">
1295
- Drop to upload
1327
+ {t("brandKitDetail.dropToUpload")}
1296
1328
  </span>
1297
1329
  </div>
1298
1330
  )}
@@ -1306,9 +1338,13 @@ export default function LibraryPage() {
1306
1338
  className="space-y-4"
1307
1339
  >
1308
1340
  <TabsList>
1309
- <TabsTrigger value="assets">Assets</TabsTrigger>
1310
- <TabsTrigger value="runs">Runs</TabsTrigger>
1311
- <TabsTrigger value="settings">Settings</TabsTrigger>
1341
+ <TabsTrigger value="assets">
1342
+ {t("brandKitDetail.assets")}
1343
+ </TabsTrigger>
1344
+ <TabsTrigger value="runs">{t("brandKitDetail.runs")}</TabsTrigger>
1345
+ <TabsTrigger value="settings">
1346
+ {t("brandKitDetail.settings")}
1347
+ </TabsTrigger>
1312
1348
  </TabsList>
1313
1349
 
1314
1350
  <TabsContent value="assets" className="space-y-5">
@@ -1327,13 +1363,13 @@ export default function LibraryPage() {
1327
1363
  <div className="flex min-w-0 flex-wrap items-center gap-2">
1328
1364
  <FolderChip
1329
1365
  active={activeFolderId === "all"}
1330
- label="All assets"
1366
+ label={t("brandKitDetail.allAssets")}
1331
1367
  count={libraryAssets.length}
1332
1368
  onClick={() => setActiveFolderId("all")}
1333
1369
  />
1334
1370
  <FolderChip
1335
1371
  active={activeFolderId === null}
1336
- label="Unfiled"
1372
+ label={t("brandKitDetail.unfiled")}
1337
1373
  count={unfiledCount}
1338
1374
  onClick={() => setActiveFolderId(null)}
1339
1375
  />
@@ -1357,13 +1393,13 @@ export default function LibraryPage() {
1357
1393
  <Input
1358
1394
  value={search}
1359
1395
  onChange={(event) => setSearch(event.target.value)}
1360
- placeholder="Search assets"
1396
+ placeholder={t("brandKitDetail.searchAssets")}
1361
1397
  className="h-9 w-full pl-8 pr-8 sm:w-64"
1362
1398
  />
1363
1399
  {search && (
1364
1400
  <button
1365
1401
  type="button"
1366
- aria-label="Clear search"
1402
+ aria-label={t("brandKitDetail.clearSearch")}
1367
1403
  className="absolute right-2 top-1/2 flex h-5 w-5 -translate-y-1/2 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground"
1368
1404
  onClick={() => setSearch("")}
1369
1405
  >
@@ -1381,9 +1417,15 @@ export default function LibraryPage() {
1381
1417
  <SelectValue />
1382
1418
  </SelectTrigger>
1383
1419
  <SelectContent>
1384
- <SelectItem value="all">All media</SelectItem>
1385
- <SelectItem value="image">Images</SelectItem>
1386
- <SelectItem value="video">Videos</SelectItem>
1420
+ <SelectItem value="all">
1421
+ {t("brandKitDetail.allMedia")}
1422
+ </SelectItem>
1423
+ <SelectItem value="image">
1424
+ {t("brandKitDetail.images")}
1425
+ </SelectItem>
1426
+ <SelectItem value="video">
1427
+ {t("brandKitDetail.videos")}
1428
+ </SelectItem>
1387
1429
  </SelectContent>
1388
1430
  </Select>
1389
1431
  </div>
@@ -1423,11 +1465,10 @@ export default function LibraryPage() {
1423
1465
  <div className="mb-3 flex items-center justify-between gap-3">
1424
1466
  <div className="min-w-0">
1425
1467
  <h3 className="text-sm font-semibold">
1426
- Handoff sessions
1468
+ {t("brandKitDetail.handoffSessions")}
1427
1469
  </h3>
1428
1470
  <p className="text-xs text-muted-foreground">
1429
- Shared context for designers to continue a candidate
1430
- without the original chat thread.
1471
+ {t("brandKitDetail.handoffSessionsDescription")}
1431
1472
  </p>
1432
1473
  </div>
1433
1474
  </div>
@@ -1467,10 +1508,11 @@ export default function LibraryPage() {
1467
1508
  ) : (
1468
1509
  <div className="flex min-h-[260px] flex-col items-center justify-center rounded-lg border border-dashed border-border bg-muted/20 p-8 text-center">
1469
1510
  <IconMessageCircle className="h-10 w-10 text-muted-foreground" />
1470
- <h3 className="mt-4 text-base font-semibold">No runs yet</h3>
1511
+ <h3 className="mt-4 text-base font-semibold">
1512
+ {t("brandKitDetail.noRunsYet")}
1513
+ </h3>
1471
1514
  <p className="mt-2 max-w-md text-sm text-muted-foreground">
1472
- Generate from this brand kit to capture prompt, output,
1473
- references, and settings.
1515
+ {t("brandKitDetail.noRunsDescription")}
1474
1516
  </p>
1475
1517
  </div>
1476
1518
  )}
@@ -1479,7 +1521,7 @@ export default function LibraryPage() {
1479
1521
  <TabsContent value="settings">
1480
1522
  <div className="grid gap-4 lg:grid-cols-[minmax(0,1fr)_320px]">
1481
1523
  <div className="space-y-4 rounded-lg border border-border p-4">
1482
- <Label>Style description</Label>
1524
+ <Label>{t("brandKitDetail.styleDescription")}</Label>
1483
1525
  <Textarea
1484
1526
  value={styleDescriptionDraft}
1485
1527
  onChange={(event) =>
@@ -1497,7 +1539,7 @@ export default function LibraryPage() {
1497
1539
  className="min-h-40"
1498
1540
  />
1499
1541
  <Separator />
1500
- <Label>Custom instructions</Label>
1542
+ <Label>{t("brandKitDetail.customInstructions")}</Label>
1501
1543
  <Textarea
1502
1544
  value={customInstructionsDraft}
1503
1545
  onChange={(event) =>
@@ -1509,13 +1551,17 @@ export default function LibraryPage() {
1509
1551
  customInstructions: customInstructionsDraft,
1510
1552
  })
1511
1553
  }
1512
- placeholder="Preferences the agent should apply whenever it uses this brand kit."
1554
+ placeholder={t(
1555
+ "brandKitDetail.customInstructionsPlaceholder",
1556
+ )}
1513
1557
  className="min-h-28"
1514
1558
  />
1515
1559
  <Separator />
1516
1560
  <div className="flex items-center justify-between">
1517
1561
  <div>
1518
- <div className="text-sm font-medium">Palette</div>
1562
+ <div className="text-sm font-medium">
1563
+ {t("brandKitDetail.palette")}
1564
+ </div>
1519
1565
  <div className="mt-2 flex flex-wrap gap-2">
1520
1566
  {(library.styleBrief?.palette ?? []).map(
1521
1567
  (color: string) => (
@@ -1542,14 +1588,14 @@ export default function LibraryPage() {
1542
1588
  },
1543
1589
  });
1544
1590
  }}
1545
- placeholder="#111827, #f8fafc, #2563eb"
1591
+ placeholder={"#111827, #f8fafc, #2563eb"}
1546
1592
  className="mt-3 h-9 max-w-md text-xs"
1547
1593
  />
1548
1594
  </div>
1549
1595
  <Button variant="outline" onClick={analyzeBrand}>
1550
1596
  {library.settings?.brandAnalysis?.analyzedAt
1551
- ? "Refresh brand"
1552
- : "Analyze brand"}
1597
+ ? t("brandKitDetail.refreshBrand")
1598
+ : t("brandKitDetail.analyzeBrand")}
1553
1599
  </Button>
1554
1600
  </div>
1555
1601
  </div>
@@ -1559,10 +1605,11 @@ export default function LibraryPage() {
1559
1605
  presets={generationPresets}
1560
1606
  />
1561
1607
  <div className="rounded-lg border border-border p-4">
1562
- <h3 className="text-sm font-semibold">Agent usage</h3>
1608
+ <h3 className="text-sm font-semibold">
1609
+ {t("brandKitDetail.agentUsage")}
1610
+ </h3>
1563
1611
  <p className="mt-2 text-sm text-muted-foreground">
1564
- Other agents can call Assets over A2A with this brand kit
1565
- ID.
1612
+ {t("brandKitDetail.agentUsageDescription")}
1566
1613
  </p>
1567
1614
  <code className="mt-3 block rounded-md bg-muted p-3 text-xs">
1568
1615
  {library.id}
@@ -1614,7 +1661,7 @@ type LaneGalleryItem = {
1614
1661
  busy?: boolean;
1615
1662
  deleting?: boolean;
1616
1663
  preview: ReactNode;
1617
- thumbnail: ReactNode;
1664
+ thumbnail: ReactNode; // i18n-ignore structural preview slot name
1618
1665
  menu?: ReactNode;
1619
1666
  primaryActions?: ReactNode;
1620
1667
  onToggle?: (checked: boolean) => void;
@@ -1633,6 +1680,7 @@ function RunCard({
1633
1680
  onCreateHandoff: () => void;
1634
1681
  rerunning?: boolean;
1635
1682
  }) {
1683
+ const t = useT();
1636
1684
  const settings = (run.settingsUsed ?? {}) as Record<string, unknown>;
1637
1685
  const referenceSelection = (run.referenceSelection ?? {}) as Record<
1638
1686
  string,
@@ -1682,7 +1730,7 @@ function RunCard({
1682
1730
  </div>
1683
1731
  <div>
1684
1732
  <div className="text-xs font-medium text-muted-foreground">
1685
- Prompt
1733
+ {t("brandKitDetail.prompt")}
1686
1734
  </div>
1687
1735
  <p className="mt-1 line-clamp-3 text-sm leading-relaxed text-foreground">
1688
1736
  {prompt}
@@ -1698,7 +1746,7 @@ function RunCard({
1698
1746
  onClick={onCreateHandoff}
1699
1747
  >
1700
1748
  <IconMessageCircle className="h-4 w-4" />
1701
- Handoff
1749
+ {t("brandKitDetail.handoff")}
1702
1750
  </Button>
1703
1751
  ) : null}
1704
1752
  <Button
@@ -1710,20 +1758,23 @@ function RunCard({
1710
1758
  >
1711
1759
  <IconRefresh className="h-4 w-4" />
1712
1760
  {mediaType === "video" && run.status !== "completed"
1713
- ? "Refresh"
1714
- : "Rerun this"}
1761
+ ? t("brandKitDetail.refresh")
1762
+ : t("brandKitDetail.rerunThis")}
1715
1763
  </Button>
1716
1764
  </div>
1717
1765
  </div>
1718
1766
 
1719
1767
  <div className="mt-4 grid gap-3 md:grid-cols-3 xl:grid-cols-6">
1720
- <RunFact label="Model" value={String(settings.model ?? run.model)} />
1721
1768
  <RunFact
1722
- label="Aspect"
1769
+ label={t("brandKitDetail.model")}
1770
+ value={String(settings.model ?? run.model)}
1771
+ />
1772
+ <RunFact
1773
+ label={t("brandKitDetail.aspect")}
1723
1774
  value={String(settings.aspectRatio ?? run.aspectRatio)}
1724
1775
  />
1725
1776
  <RunFact
1726
- label="Size"
1777
+ label={t("brandKitDetail.size")}
1727
1778
  value={
1728
1779
  mediaType === "video"
1729
1780
  ? `${String(settings.durationSeconds ?? run.durationSeconds ?? "?")}s ${String(settings.resolution ?? run.resolution ?? run.imageSize)}`
@@ -1731,15 +1782,15 @@ function RunCard({
1731
1782
  }
1732
1783
  />
1733
1784
  <RunFact
1734
- label="Refs"
1785
+ label={t("brandKitDetail.refs")}
1735
1786
  value={`${selectedReferenceIds.length} ${String(referenceSelection.mode ?? "selected")}`}
1736
1787
  />
1737
1788
  <RunFact
1738
- label="Grounding"
1789
+ label={t("brandKitDetail.grounding")}
1739
1790
  value={String(settings.groundingMode ?? run.groundingMode)}
1740
1791
  />
1741
1792
  <RunFact
1742
- label="Categories"
1793
+ label={t("brandKitDetail.categories")}
1743
1794
  value={categories.length ? categories.join(", ") : "auto"}
1744
1795
  />
1745
1796
  </div>
@@ -1747,7 +1798,7 @@ function RunCard({
1747
1798
  <div className="mt-4 grid gap-3 lg:grid-cols-2">
1748
1799
  <div className="rounded-md border bg-muted/20 p-3">
1749
1800
  <div className="text-xs font-medium text-muted-foreground">
1750
- Output
1801
+ {t("brandKitDetail.output")}
1751
1802
  </div>
1752
1803
  {outputIds.length ? (
1753
1804
  <div className="mt-2 flex flex-wrap gap-2">
@@ -1770,24 +1821,26 @@ function RunCard({
1770
1821
  </div>
1771
1822
  ) : (
1772
1823
  <p className="mt-2 text-xs text-muted-foreground">
1773
- {run.error || "No output captured yet."}
1824
+ {run.error || t("brandKitDetail.noOutputCaptured")}
1774
1825
  </p>
1775
1826
  )}
1776
1827
  {provider ? (
1777
1828
  <p className="mt-2 text-xs text-muted-foreground">
1778
- Provider: {String(provider)}
1829
+ {t("brandKitDetail.providerLabel", {
1830
+ provider: String(provider),
1831
+ })}
1779
1832
  </p>
1780
1833
  ) : null}
1781
1834
  </div>
1782
1835
 
1783
1836
  <div className="rounded-md border bg-muted/20 p-3">
1784
1837
  <div className="text-xs font-medium text-muted-foreground">
1785
- References
1838
+ {t("brandKitDetail.references")}
1786
1839
  </div>
1787
1840
  <p className="mt-2 line-clamp-2 text-xs text-muted-foreground">
1788
1841
  {selectedReferenceIds.length
1789
1842
  ? selectedReferenceIds.map(shortId).join(", ")
1790
- : "None selected"}
1843
+ : t("brandKitDetail.noneSelected")}
1791
1844
  </p>
1792
1845
  </div>
1793
1846
  </div>
@@ -1795,7 +1848,7 @@ function RunCard({
1795
1848
  {run.compiledPrompt ? (
1796
1849
  <details className="mt-3 rounded-md border bg-background">
1797
1850
  <summary className="cursor-pointer px-3 py-2 text-xs font-medium text-muted-foreground">
1798
- Compiled prompt
1851
+ {t("brandKitDetail.compiledPrompt")}
1799
1852
  </summary>
1800
1853
  <pre className="max-h-64 overflow-auto whitespace-pre-wrap border-t px-3 py-2 text-xs leading-relaxed text-muted-foreground">
1801
1854
  {run.compiledPrompt}
@@ -1883,6 +1936,7 @@ function SessionCard({
1883
1936
  continuing?: boolean;
1884
1937
  onContinue: () => void;
1885
1938
  }) {
1939
+ const t = useT();
1886
1940
  const preset = presets.find((item) => item.id === session.presetId);
1887
1941
  const sessionItems = Array.isArray(session.items) ? session.items : [];
1888
1942
  const assetItems = sessionItems.filter((item: any) => item.assetId);
@@ -1895,7 +1949,9 @@ function SessionCard({
1895
1949
  <Badge variant="outline">{session.status}</Badge>
1896
1950
  </div>
1897
1951
  <p className="mt-1 line-clamp-2 text-xs text-muted-foreground">
1898
- {session.feedbackSummary || session.brief || "No feedback yet."}
1952
+ {session.feedbackSummary ||
1953
+ session.brief ||
1954
+ t("brandKitDetail.noFeedbackYet")}
1899
1955
  </p>
1900
1956
  </div>
1901
1957
  <Button
@@ -1909,7 +1965,7 @@ function SessionCard({
1909
1965
  ) : (
1910
1966
  <IconMessageCircle className="h-4 w-4" />
1911
1967
  )}
1912
- Continue
1968
+ {t("brandKitDetail.continue")}
1913
1969
  </Button>
1914
1970
  </div>
1915
1971
  <div className="mt-3 flex flex-wrap gap-2 text-xs text-muted-foreground">
@@ -1922,7 +1978,7 @@ function SessionCard({
1922
1978
  }
1923
1979
  >
1924
1980
  {item.assetId === session.activeAssetId
1925
- ? `${item.label} active`
1981
+ ? `${item.label} ${t("brandKitDetail.active")}`
1926
1982
  : item.label}
1927
1983
  </Badge>
1928
1984
  ))}
@@ -1931,7 +1987,9 @@ function SessionCard({
1931
1987
  ) : null}
1932
1988
  {!assetItems.length && session.activeAssetId ? (
1933
1989
  <Badge variant="outline">
1934
- active {shortId(session.activeAssetId)}
1990
+ {t("brandKitDetail.activeAsset", {
1991
+ id: shortId(session.activeAssetId),
1992
+ })}
1935
1993
  </Badge>
1936
1994
  ) : null}
1937
1995
  </div>
@@ -1952,6 +2010,7 @@ function GeneratePopover({
1952
2010
  hasLogo: boolean;
1953
2011
  presets: any[];
1954
2012
  }) {
2013
+ const t = useT();
1955
2014
  const [prompt, setPrompt] = useState("");
1956
2015
  const [mediaType, setMediaType] = useState<"image" | "video">("image");
1957
2016
  const [presetId, setPresetId] = useState("none");
@@ -1970,7 +2029,7 @@ function GeneratePopover({
1970
2029
  <PopoverTrigger asChild>
1971
2030
  <Button className="gap-2">
1972
2031
  <IconMessageCircle className="h-4 w-4" />
1973
- Generate
2032
+ {t("brandKitDetail.generate")}
1974
2033
  </Button>
1975
2034
  </PopoverTrigger>
1976
2035
  <PopoverContent
@@ -1979,7 +2038,9 @@ function GeneratePopover({
1979
2038
  >
1980
2039
  <div className="space-y-4">
1981
2040
  <div>
1982
- <div className="text-sm font-semibold">Generate with chat</div>
2041
+ <div className="text-sm font-semibold">
2042
+ {t("brandKitDetail.generateWithChat")}
2043
+ </div>
1983
2044
  </div>
1984
2045
  {presets.length ? (
1985
2046
  <Select
@@ -1996,10 +2057,12 @@ function GeneratePopover({
1996
2057
  }}
1997
2058
  >
1998
2059
  <SelectTrigger>
1999
- <SelectValue placeholder="Preset" />
2060
+ <SelectValue placeholder={t("brandKitDetail.preset")} />
2000
2061
  </SelectTrigger>
2001
2062
  <SelectContent>
2002
- <SelectItem value="none">No preset</SelectItem>
2063
+ <SelectItem value="none">
2064
+ {t("brandKitDetail.noPreset")}
2065
+ </SelectItem>
2003
2066
  {presets.map((preset) => (
2004
2067
  <SelectItem key={preset.id} value={preset.id}>
2005
2068
  {preset.title}
@@ -2031,8 +2094,12 @@ function GeneratePopover({
2031
2094
  <SelectValue />
2032
2095
  </SelectTrigger>
2033
2096
  <SelectContent>
2034
- <SelectItem value="image">Image candidates</SelectItem>
2035
- <SelectItem value="video">Video candidate</SelectItem>
2097
+ <SelectItem value="image">
2098
+ {t("brandKitDetail.imageCandidates")}
2099
+ </SelectItem>
2100
+ <SelectItem value="video">
2101
+ {t("brandKitDetail.videoCandidate")}
2102
+ </SelectItem>
2036
2103
  </SelectContent>
2037
2104
  </Select>
2038
2105
  <Textarea
@@ -2041,8 +2108,8 @@ function GeneratePopover({
2041
2108
  onChange={(event) => setPrompt(event.target.value)}
2042
2109
  placeholder={
2043
2110
  mediaType === "video"
2044
- ? "Eight-second product reveal with slow camera push-in"
2045
- : "Blog hero for an article about cold-start latency"
2111
+ ? t("brandKitDetail.videoPromptPlaceholder")
2112
+ : t("brandKitDetail.imagePromptPlaceholder")
2046
2113
  }
2047
2114
  className="min-h-28 max-h-48 resize-none overflow-y-auto"
2048
2115
  />
@@ -2058,7 +2125,7 @@ function GeneratePopover({
2058
2125
  <SelectContent>
2059
2126
  {[1, 2, 3, 4].map((n) => (
2060
2127
  <SelectItem key={n} value={String(n)}>
2061
- {n} variants
2128
+ {t("brandKitDetail.variants", { count: n })}
2062
2129
  </SelectItem>
2063
2130
  ))}
2064
2131
  </SelectContent>
@@ -2156,7 +2223,7 @@ function GeneratePopover({
2156
2223
  disabled={!hasLogo}
2157
2224
  onCheckedChange={(checked) => setIncludeLogo(checked === true)}
2158
2225
  />
2159
- Composite canonical logo
2226
+ {t("brandKitDetail.compositeCanonicalLogo")}
2160
2227
  </label>
2161
2228
  )}
2162
2229
  <Button
@@ -2177,7 +2244,7 @@ function GeneratePopover({
2177
2244
  })
2178
2245
  }
2179
2246
  >
2180
- Open chat
2247
+ {t("brandKitDetail.openChat")}
2181
2248
  </Button>
2182
2249
  </div>
2183
2250
  </PopoverContent>
@@ -2192,6 +2259,7 @@ function GenerationPresetsPanel({
2192
2259
  libraryId: string;
2193
2260
  presets: any[];
2194
2261
  }) {
2262
+ const t = useT();
2195
2263
  const createPreset = useActionMutation("create-generation-preset");
2196
2264
  const deletePreset = useActionMutation("delete-generation-preset");
2197
2265
  const [open, setOpen] = useState(false);
@@ -2201,7 +2269,7 @@ function GenerationPresetsPanel({
2201
2269
  const [aspectRatio, setAspectRatio] = useState<AspectRatio>("1:1");
2202
2270
  const [promptTemplate, setPromptTemplate] = useState("");
2203
2271
  const [textPolicy, setTextPolicy] = useState(
2204
- "Prefer no embedded text. Keep any requested text short and readable.",
2272
+ t("brandKitDetail.defaultTextPolicy"),
2205
2273
  );
2206
2274
 
2207
2275
  function reset() {
@@ -2209,9 +2277,7 @@ function GenerationPresetsPanel({
2209
2277
  setCategory("social");
2210
2278
  setAspectRatio("1:1");
2211
2279
  setPromptTemplate("");
2212
- setTextPolicy(
2213
- "Prefer no embedded text. Keep any requested text short and readable.",
2214
- );
2280
+ setTextPolicy(t("brandKitDetail.defaultTextPolicy"));
2215
2281
  }
2216
2282
 
2217
2283
  function submit() {
@@ -2230,12 +2296,14 @@ function GenerationPresetsPanel({
2230
2296
  },
2231
2297
  {
2232
2298
  onSuccess: () => {
2233
- toast.success("Generation preset created.");
2299
+ toast.success(t("brandKitDetail.generationPresetCreated"));
2234
2300
  reset();
2235
2301
  setOpen(false);
2236
2302
  },
2237
2303
  onError: (error: Error) => {
2238
- toast.error(error.message || "Could not create preset.");
2304
+ toast.error(
2305
+ error.message || t("brandKitDetail.couldNotCreatePreset"),
2306
+ );
2239
2307
  },
2240
2308
  },
2241
2309
  );
@@ -2245,13 +2313,15 @@ function GenerationPresetsPanel({
2245
2313
  <div className="rounded-lg border border-border p-4">
2246
2314
  <div className="flex items-center justify-between gap-3">
2247
2315
  <div>
2248
- <h3 className="text-sm font-semibold">Generation presets</h3>
2316
+ <h3 className="text-sm font-semibold">
2317
+ {t("brandKitDetail.generationPresets")}
2318
+ </h3>
2249
2319
  <p className="mt-1 text-sm text-muted-foreground">
2250
- Reusable deliverable rules for social images, heroes, and diagrams.
2320
+ {t("brandKitDetail.generationPresetsDescription")}
2251
2321
  </p>
2252
2322
  </div>
2253
2323
  <Button variant="outline" size="sm" onClick={() => setOpen(true)}>
2254
- New
2324
+ {t("brandKitDetail.new")}
2255
2325
  </Button>
2256
2326
  </div>
2257
2327
  <div className="mt-3 space-y-2">
@@ -2275,7 +2345,7 @@ function GenerationPresetsPanel({
2275
2345
  variant="ghost"
2276
2346
  size="icon"
2277
2347
  className="h-8 w-8 shrink-0 text-muted-foreground hover:text-destructive"
2278
- aria-label={`Delete ${preset.title}`}
2348
+ aria-label={`${t("brandKitDetail.delete")} ${preset.title}`}
2279
2349
  onClick={() => setConfirmPresetId(preset.id)}
2280
2350
  >
2281
2351
  <IconTrash className="h-4 w-4" />
@@ -2284,7 +2354,7 @@ function GenerationPresetsPanel({
2284
2354
  ))}
2285
2355
  {!presets.length ? (
2286
2356
  <p className="rounded-md border border-dashed border-border p-3 text-sm text-muted-foreground">
2287
- No presets yet.
2357
+ {t("brandKitDetail.noPresetsYet")}
2288
2358
  </p>
2289
2359
  ) : null}
2290
2360
  </div>
@@ -2297,14 +2367,15 @@ function GenerationPresetsPanel({
2297
2367
  >
2298
2368
  <AlertDialogContent>
2299
2369
  <AlertDialogHeader>
2300
- <AlertDialogTitle>Delete generation preset?</AlertDialogTitle>
2370
+ <AlertDialogTitle>
2371
+ {t("brandKitDetail.deleteGenerationPreset")}
2372
+ </AlertDialogTitle>
2301
2373
  <AlertDialogDescription>
2302
- Existing runs keep their captured prompt and settings. New
2303
- generations will no longer offer this preset.
2374
+ {t("brandKitDetail.deleteGenerationPresetDescription")}
2304
2375
  </AlertDialogDescription>
2305
2376
  </AlertDialogHeader>
2306
2377
  <AlertDialogFooter>
2307
- <AlertDialogCancel>Cancel</AlertDialogCancel>
2378
+ <AlertDialogCancel>{t("brandKitDetail.cancel")}</AlertDialogCancel>
2308
2379
  <AlertDialogAction
2309
2380
  className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
2310
2381
  disabled={!confirmPresetId || deletePreset.isPending}
@@ -2316,16 +2387,21 @@ function GenerationPresetsPanel({
2316
2387
  {
2317
2388
  onSuccess: () => {
2318
2389
  setConfirmPresetId(null);
2319
- toast.success("Generation preset deleted.");
2390
+ toast.success(
2391
+ t("brandKitDetail.generationPresetDeleted"),
2392
+ );
2320
2393
  },
2321
2394
  onError: (error: Error) => {
2322
- toast.error(error.message || "Could not delete preset.");
2395
+ toast.error(
2396
+ error.message ||
2397
+ t("brandKitDetail.couldNotDeletePreset"),
2398
+ );
2323
2399
  },
2324
2400
  },
2325
2401
  );
2326
2402
  }}
2327
2403
  >
2328
- Delete
2404
+ {t("brandKitDetail.delete")}
2329
2405
  </AlertDialogAction>
2330
2406
  </AlertDialogFooter>
2331
2407
  </AlertDialogContent>
@@ -2334,25 +2410,24 @@ function GenerationPresetsPanel({
2334
2410
  <Dialog open={open} onOpenChange={setOpen}>
2335
2411
  <DialogContent className="sm:max-w-lg">
2336
2412
  <DialogHeader>
2337
- <DialogTitle>New generation preset</DialogTitle>
2413
+ <DialogTitle>{t("brandKitDetail.newGenerationPreset")}</DialogTitle>
2338
2414
  <DialogDescription>
2339
- Save the output format, aspect ratio, and text rules for repeated
2340
- image work.
2415
+ {t("brandKitDetail.newGenerationPresetDescription")}
2341
2416
  </DialogDescription>
2342
2417
  </DialogHeader>
2343
2418
  <div className="grid gap-4">
2344
2419
  <div className="grid gap-2">
2345
- <Label htmlFor="preset-title">Name</Label>
2420
+ <Label htmlFor="preset-title">{t("brandKitDetail.name")}</Label>
2346
2421
  <Input
2347
2422
  id="preset-title"
2348
2423
  value={title}
2349
2424
  onChange={(event) => setTitle(event.target.value)}
2350
- placeholder="LinkedIn announcement"
2425
+ placeholder={t("brandKitDetail.campaignLaunch")}
2351
2426
  />
2352
2427
  </div>
2353
2428
  <div className="grid grid-cols-2 gap-3">
2354
2429
  <div className="grid gap-2">
2355
- <Label>Category</Label>
2430
+ <Label>{t("brandKitDetail.category")}</Label>
2356
2431
  <Select
2357
2432
  value={category}
2358
2433
  onValueChange={(value) => setCategory(value as ImageCategory)}
@@ -2370,7 +2445,7 @@ function GenerationPresetsPanel({
2370
2445
  </Select>
2371
2446
  </div>
2372
2447
  <div className="grid gap-2">
2373
- <Label>Aspect ratio</Label>
2448
+ <Label>{t("brandKitDetail.aspectRatio")}</Label>
2374
2449
  <Select
2375
2450
  value={aspectRatio}
2376
2451
  onValueChange={(value) =>
@@ -2391,16 +2466,22 @@ function GenerationPresetsPanel({
2391
2466
  </div>
2392
2467
  </div>
2393
2468
  <div className="grid gap-2">
2394
- <Label htmlFor="preset-template">Prompt template</Label>
2469
+ <Label htmlFor="preset-template">
2470
+ {t("brandKitDetail.promptTemplate")}
2471
+ </Label>
2395
2472
  <Textarea
2396
2473
  id="preset-template"
2397
2474
  value={promptTemplate}
2398
2475
  onChange={(event) => setPromptTemplate(event.target.value)}
2399
- placeholder="Create a social post visual about {{prompt}}..."
2476
+ placeholder={t("brandKitDetail.promptTemplatePlaceholder", {
2477
+ prompt: "{{prompt}}",
2478
+ })}
2400
2479
  />
2401
2480
  </div>
2402
2481
  <div className="grid gap-2">
2403
- <Label htmlFor="preset-text-policy">Text policy</Label>
2482
+ <Label htmlFor="preset-text-policy">
2483
+ {t("brandKitDetail.textPolicy")}
2484
+ </Label>
2404
2485
  <Textarea
2405
2486
  id="preset-text-policy"
2406
2487
  value={textPolicy}
@@ -2410,10 +2491,10 @@ function GenerationPresetsPanel({
2410
2491
  </div>
2411
2492
  <DialogFooter>
2412
2493
  <Button variant="outline" onClick={() => setOpen(false)}>
2413
- Cancel
2494
+ {t("brandKitDetail.cancel")}
2414
2495
  </Button>
2415
2496
  <Button disabled={!title.trim()} onClick={submit}>
2416
- Create
2497
+ {t("brandKitDetail.create")}
2417
2498
  </Button>
2418
2499
  </DialogFooter>
2419
2500
  </DialogContent>
@@ -2460,6 +2541,7 @@ function AssetPreview({
2460
2541
  asset: any;
2461
2542
  fit?: "cover" | "contain";
2462
2543
  }) {
2544
+ const t = useT();
2463
2545
  const [sourceIndex, setSourceIndex] = useState(0);
2464
2546
  const [unavailable, setUnavailable] = useState(false);
2465
2547
  const sources = assetPreviewSources(asset, "thumbnail");
@@ -2485,7 +2567,7 @@ function AssetPreview({
2485
2567
  }
2486
2568
  />
2487
2569
  <div className="absolute bottom-2 left-2 rounded-md bg-background/90 px-2 py-1 text-[11px] font-medium text-foreground shadow-sm">
2488
- Video
2570
+ {t("brandKitDetail.video")}
2489
2571
  </div>
2490
2572
  </div>
2491
2573
  );
@@ -2496,7 +2578,7 @@ function AssetPreview({
2496
2578
  <div className="flex h-full w-full flex-col items-center justify-center gap-2 bg-muted/40 text-muted-foreground">
2497
2579
  <IconPhoto className="h-6 w-6" />
2498
2580
  <span className="px-3 text-center text-xs font-medium">
2499
- Preview unavailable
2581
+ {t("brandKitDetail.previewUnavailable")}
2500
2582
  </span>
2501
2583
  </div>
2502
2584
  );
@@ -2536,6 +2618,7 @@ function CandidateStage({
2536
2618
  savingCandidateKeys: Set<string>;
2537
2619
  onSaveCandidate: (slot: any) => void;
2538
2620
  }) {
2621
+ const t = useT();
2539
2622
  const dismissSlot = useActionMutation("dismiss-variant-slots");
2540
2623
  const deleteAsset = useActionMutation("delete-asset");
2541
2624
  const queryClient = useQueryClient();
@@ -2567,10 +2650,12 @@ function CandidateStage({
2567
2650
  ]);
2568
2651
  }
2569
2652
  setDismissTarget(null);
2570
- toast.success("Dismissed candidate.");
2653
+ toast.success(t("brandKitDetail.dismissedCandidate"));
2571
2654
  } catch (error) {
2572
2655
  toast.error(
2573
- error instanceof Error ? error.message : "Could not dismiss candidate.",
2656
+ error instanceof Error
2657
+ ? error.message
2658
+ : t("brandKitDetail.couldNotDismissCandidate"),
2574
2659
  );
2575
2660
  }
2576
2661
  }
@@ -2582,18 +2667,20 @@ function CandidateStage({
2582
2667
  return {
2583
2668
  id: `slot:${slot.slotId}`,
2584
2669
  title: isFailed
2585
- ? "Failed candidate"
2670
+ ? t("brandKitDetail.failedCandidate")
2586
2671
  : slot.status === "ready"
2587
- ? "Ready candidate"
2588
- : "Generating candidate",
2589
- subtitle: slot.slotId ? shortId(String(slot.slotId)) : "Live slot",
2590
- metadata: "Candidate",
2672
+ ? t("brandKitDetail.readyCandidate")
2673
+ : t("brandKitDetail.generatingCandidate"),
2674
+ subtitle: slot.slotId
2675
+ ? shortId(String(slot.slotId))
2676
+ : t("brandKitDetail.liveSlot"),
2677
+ metadata: t("brandKitDetail.candidate"),
2591
2678
  status: slot.status,
2592
2679
  mediaType: "image",
2593
2680
  href: slot.assetId ? `/asset/${slot.assetId}` : undefined,
2594
2681
  busy,
2595
- preview: <VariantPreview slot={slot} fit="contain" />,
2596
- thumbnail: <VariantPreview slot={slot} />,
2682
+ preview: <VariantPreview slot={slot} fit="contain" />, // i18n-ignore structural preview slot name
2683
+ thumbnail: <VariantPreview slot={slot} />, // i18n-ignore structural preview slot name
2597
2684
  menu: (
2598
2685
  <VariantActionsMenu slot={slot} libraryId={libraryId} busy={busy} />
2599
2686
  ),
@@ -2614,13 +2701,15 @@ function CandidateStage({
2614
2701
  onClick={() =>
2615
2702
  setDismissTarget({
2616
2703
  kind: "slot",
2617
- title: isFailed ? "Failed candidate" : "Ready candidate",
2704
+ title: isFailed
2705
+ ? t("brandKitDetail.failedCandidate")
2706
+ : t("brandKitDetail.readyCandidate"),
2618
2707
  slot,
2619
2708
  })
2620
2709
  }
2621
2710
  disabled={busy || dismissing}
2622
2711
  >
2623
- Dismiss
2712
+ {t("brandKitDetail.dismiss")}
2624
2713
  </Button>
2625
2714
  </div>
2626
2715
  ) : (
@@ -2631,13 +2720,15 @@ function CandidateStage({
2631
2720
  onClick={() =>
2632
2721
  setDismissTarget({
2633
2722
  kind: "slot",
2634
- title: isFailed ? "Failed candidate" : "Generating candidate",
2723
+ title: isFailed
2724
+ ? t("brandKitDetail.failedCandidate")
2725
+ : t("brandKitDetail.generatingCandidate"),
2635
2726
  slot,
2636
2727
  })
2637
2728
  }
2638
2729
  disabled={busy || dismissing}
2639
2730
  >
2640
- Dismiss
2731
+ {t("brandKitDetail.dismiss")}
2641
2732
  </Button>
2642
2733
  ),
2643
2734
  };
@@ -2652,16 +2743,16 @@ function CandidateStage({
2652
2743
  subtitle: assetLineageSourceText(asset) || assetCategoryLabel(asset),
2653
2744
  metadata:
2654
2745
  asset.mediaType === "video"
2655
- ? "Video"
2746
+ ? t("brandKitDetail.video")
2656
2747
  : asset.mimeType?.startsWith("image/")
2657
- ? "Image"
2658
- : "Candidate",
2748
+ ? t("brandKitDetail.image")
2749
+ : t("brandKitDetail.candidate"),
2659
2750
  status: "candidate",
2660
2751
  mediaType: asset.mediaType === "video" ? "video" : "image",
2661
2752
  href: `/asset/${asset.id}`,
2662
2753
  busy,
2663
- preview: <AssetPreview asset={asset} fit="contain" />,
2664
- thumbnail: <AssetPreview asset={asset} />,
2754
+ preview: <AssetPreview asset={asset} fit="contain" />, // i18n-ignore structural preview slot name
2755
+ thumbnail: <AssetPreview asset={asset} />, // i18n-ignore structural preview slot name
2665
2756
  primaryActions: (
2666
2757
  <div className="grid grid-cols-2 gap-2">
2667
2758
  <CandidateSaveMenu
@@ -2686,7 +2777,7 @@ function CandidateStage({
2686
2777
  }
2687
2778
  disabled={busy || dismissing}
2688
2779
  >
2689
- Dismiss
2780
+ {t("brandKitDetail.dismiss")}
2690
2781
  </Button>
2691
2782
  </div>
2692
2783
  ),
@@ -2736,14 +2827,20 @@ function CandidateStage({
2736
2827
  >
2737
2828
  <AlertDialogContent>
2738
2829
  <AlertDialogHeader>
2739
- <AlertDialogTitle>Dismiss this candidate?</AlertDialogTitle>
2830
+ <AlertDialogTitle>
2831
+ {t("brandKitDetail.dismissThisCandidate")}
2832
+ </AlertDialogTitle>
2740
2833
  <AlertDialogDescription>
2741
- This removes {dismissTarget?.title ?? "this candidate"} from the
2742
- candidate stage. Saved library assets stay untouched.
2834
+ {t("brandKitDetail.dismissCandidateDescription", {
2835
+ title:
2836
+ dismissTarget?.title ?? t("brandKitDetail.thisCandidate"),
2837
+ })}
2743
2838
  </AlertDialogDescription>
2744
2839
  </AlertDialogHeader>
2745
2840
  <AlertDialogFooter>
2746
- <AlertDialogCancel disabled={dismissing}>Cancel</AlertDialogCancel>
2841
+ <AlertDialogCancel disabled={dismissing}>
2842
+ {t("brandKitDetail.cancel")}
2843
+ </AlertDialogCancel>
2747
2844
  <AlertDialogAction
2748
2845
  className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
2749
2846
  disabled={dismissing}
@@ -2755,10 +2852,10 @@ function CandidateStage({
2755
2852
  {dismissing ? (
2756
2853
  <>
2757
2854
  <Spinner className="h-4 w-4" />
2758
- Dismissing...
2855
+ {t("brandKitDetail.dismissing")}
2759
2856
  </>
2760
2857
  ) : (
2761
- "Dismiss"
2858
+ t("brandKitDetail.dismiss")
2762
2859
  )}
2763
2860
  </AlertDialogAction>
2764
2861
  </AlertDialogFooter>
@@ -2769,11 +2866,13 @@ function CandidateStage({
2769
2866
  <div className="flex flex-col gap-3 border-b border-border px-4 py-3 sm:flex-row sm:items-center sm:justify-between">
2770
2867
  <div className="min-w-0">
2771
2868
  <div className="flex items-center gap-2">
2772
- <h3 className="truncate text-sm font-semibold">Candidates</h3>
2869
+ <h3 className="truncate text-sm font-semibold">
2870
+ {t("brandKitDetail.candidates")}
2871
+ </h3>
2773
2872
  <Badge variant="outline">{items.length}</Badge>
2774
2873
  </div>
2775
2874
  <p className="mt-1 text-xs text-muted-foreground">
2776
- Generation queue
2875
+ {t("brandKitDetail.generationQueue")}
2777
2876
  </p>
2778
2877
  </div>
2779
2878
  <div className="flex shrink-0 items-center gap-2">
@@ -2827,7 +2926,9 @@ function CandidateStage({
2827
2926
  ? "border-primary ring-2 ring-primary/25"
2828
2927
  : "border-border/80 hover:border-foreground/30",
2829
2928
  ].join(" ")}
2830
- aria-label={`Show ${item.title}`}
2929
+ aria-label={t("brandKitDetail.showItem", {
2930
+ title: item.title,
2931
+ })}
2831
2932
  aria-pressed={active}
2832
2933
  >
2833
2934
  {item.thumbnail}
@@ -2858,7 +2959,7 @@ function CandidateStage({
2858
2959
  {activeItem?.status ? (
2859
2960
  <div className="rounded-md border border-border bg-muted/20 px-2 py-1.5">
2860
2961
  <div className="text-[10px] font-medium uppercase text-muted-foreground">
2861
- Status
2962
+ {t("brandKitDetail.status")}
2862
2963
  </div>
2863
2964
  <div className="mt-0.5 truncate">{activeItem.status}</div>
2864
2965
  </div>
@@ -2866,7 +2967,7 @@ function CandidateStage({
2866
2967
  {activeItem?.metadata ? (
2867
2968
  <div className="rounded-md border border-border bg-muted/20 px-2 py-1.5">
2868
2969
  <div className="text-[10px] font-medium uppercase text-muted-foreground">
2869
- Type
2970
+ {t("brandKitDetail.type")}
2870
2971
  </div>
2871
2972
  <div className="mt-0.5 truncate">{activeItem.metadata}</div>
2872
2973
  </div>
@@ -2878,7 +2979,7 @@ function CandidateStage({
2878
2979
  </div>
2879
2980
  {activeItem?.href ? (
2880
2981
  <Button asChild variant="outline" size="sm">
2881
- <Link to={activeItem.href}>Open</Link>
2982
+ <Link to={activeItem.href}>{t("brandKitDetail.open")}</Link>
2882
2983
  </Button>
2883
2984
  ) : null}
2884
2985
  </aside>
@@ -2901,6 +3002,7 @@ function CandidateSaveMenu({
2901
3002
  disabled?: boolean;
2902
3003
  onSave: (folderId: string | null) => void;
2903
3004
  }) {
3005
+ const t = useT();
2904
3006
  const createFolder = useActionMutation("create-folder");
2905
3007
  const queryClient = useQueryClient();
2906
3008
  const [createOpen, setCreateOpen] = useState(false);
@@ -2929,13 +3031,17 @@ function CandidateSaveMenu({
2929
3031
  <DropdownMenu>
2930
3032
  <DropdownMenuTrigger asChild>
2931
3033
  <Button size="sm" className="h-8 px-2 text-xs" disabled={disabled}>
2932
- {pending ? <Spinner className="h-3.5 w-3.5" /> : "Save to..."}
3034
+ {pending ? (
3035
+ <Spinner className="h-3.5 w-3.5" />
3036
+ ) : (
3037
+ t("brandKitDetail.saveTo")
3038
+ )}
2933
3039
  </Button>
2934
3040
  </DropdownMenuTrigger>
2935
3041
  <DropdownMenuContent align="start">
2936
3042
  <DropdownMenuItem onSelect={() => onSave(null)}>
2937
3043
  <IconFolder className="mr-2 h-4 w-4 shrink-0" />
2938
- Unfiled
3044
+ {t("brandKitDetail.unfiled")}
2939
3045
  </DropdownMenuItem>
2940
3046
  {folders.map((folder) => (
2941
3047
  <DropdownMenuItem
@@ -2943,7 +3049,7 @@ function CandidateSaveMenu({
2943
3049
  onSelect={() => onSave(folder.id)}
2944
3050
  >
2945
3051
  <IconFolder className="mr-2 h-4 w-4 shrink-0" />
2946
- Folder: {folder.title}
3052
+ {t("brandKitDetail.folderLabel", { title: folder.title })}
2947
3053
  </DropdownMenuItem>
2948
3054
  ))}
2949
3055
  <DropdownMenuSeparator />
@@ -2954,7 +3060,7 @@ function CandidateSaveMenu({
2954
3060
  }}
2955
3061
  >
2956
3062
  <IconFolderPlus className="mr-2 h-4 w-4 shrink-0" />
2957
- New folder...
3063
+ {t("brandKitDetail.newFolderEllipsis")}
2958
3064
  </DropdownMenuItem>
2959
3065
  </DropdownMenuContent>
2960
3066
  </DropdownMenu>
@@ -2971,6 +3077,7 @@ function CandidateStageActions({
2971
3077
  detachedCandidates: any[];
2972
3078
  libraryId: string;
2973
3079
  }) {
3080
+ const t = useT();
2974
3081
  const dismissSlots = useActionMutation("dismiss-variant-slots");
2975
3082
  const deleteAssets = useActionMutation("delete-assets");
2976
3083
  const queryClient = useQueryClient();
@@ -2980,8 +3087,14 @@ function CandidateStageActions({
2980
3087
  const detachedCount = detachedCandidates.length;
2981
3088
  const totalCount = slots.length + detachedCount;
2982
3089
  const isClearing = dismissSlots.isPending || deleteAssets.isPending;
2983
- const actionLabel = pending === "failed" ? "Dismiss failed" : "Clear all";
2984
- const busyLabel = pending === "failed" ? "Dismissing..." : "Clearing...";
3090
+ const actionLabel =
3091
+ pending === "failed"
3092
+ ? t("brandKitDetail.dismissFailed")
3093
+ : t("brandKitDetail.clearAll");
3094
+ const busyLabel =
3095
+ pending === "failed"
3096
+ ? t("brandKitDetail.dismissing")
3097
+ : t("brandKitDetail.clearing");
2985
3098
 
2986
3099
  async function handleClear(scope: "failed" | "all") {
2987
3100
  const slotAssetIds = slots
@@ -3027,16 +3140,20 @@ function CandidateStageActions({
3027
3140
  });
3028
3141
  if (scope === "failed") {
3029
3142
  toast.success(
3030
- `Dismissed ${failedCount} failed candidate${failedCount === 1 ? "" : "s"}.`,
3143
+ t("brandKitDetail.dismissedFailedCandidates", {
3144
+ count: failedCount,
3145
+ }),
3031
3146
  );
3032
3147
  } else {
3033
3148
  toast.success(
3034
- `Cleared ${totalCount} candidate${totalCount === 1 ? "" : "s"}.`,
3149
+ t("brandKitDetail.clearedCandidates", { count: totalCount }),
3035
3150
  );
3036
3151
  }
3037
3152
  } catch (error) {
3038
3153
  toast.error(
3039
- error instanceof Error ? error.message : "Could not clear candidates.",
3154
+ error instanceof Error
3155
+ ? error.message
3156
+ : t("brandKitDetail.couldNotClearCandidates"),
3040
3157
  );
3041
3158
  }
3042
3159
  }
@@ -3055,17 +3172,23 @@ function CandidateStageActions({
3055
3172
  <AlertDialogHeader>
3056
3173
  <AlertDialogTitle>
3057
3174
  {pending === "failed"
3058
- ? `Dismiss ${failedCount} failed candidate${failedCount === 1 ? "" : "s"}?`
3059
- : `Clear ${totalCount} candidate${totalCount === 1 ? "" : "s"}?`}
3175
+ ? t("brandKitDetail.dismissFailedCandidatesTitle", {
3176
+ count: failedCount,
3177
+ })
3178
+ : t("brandKitDetail.clearCandidatesTitle", {
3179
+ count: totalCount,
3180
+ })}
3060
3181
  </AlertDialogTitle>
3061
3182
  <AlertDialogDescription>
3062
3183
  {pending === "failed"
3063
- ? "Removes failed live slots from the candidate stage. Ready candidates stay."
3064
- : "Clears the candidate stage and deletes unsaved generated candidates. Saved library assets stay untouched."}
3184
+ ? t("brandKitDetail.dismissFailedDescription")
3185
+ : t("brandKitDetail.clearCandidatesDescription")}
3065
3186
  </AlertDialogDescription>
3066
3187
  </AlertDialogHeader>
3067
3188
  <AlertDialogFooter>
3068
- <AlertDialogCancel disabled={isClearing}>Cancel</AlertDialogCancel>
3189
+ <AlertDialogCancel disabled={isClearing}>
3190
+ {t("brandKitDetail.cancel")}
3191
+ </AlertDialogCancel>
3069
3192
  <AlertDialogAction
3070
3193
  className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
3071
3194
  disabled={isClearing || pending === null}
@@ -3094,11 +3217,11 @@ function CandidateStageActions({
3094
3217
  variant="outline"
3095
3218
  size="sm"
3096
3219
  className="gap-2"
3097
- aria-label="Candidate actions"
3220
+ aria-label={t("brandKitDetail.candidateActions")}
3098
3221
  disabled={isClearing}
3099
3222
  >
3100
3223
  <IconDotsVertical className="h-4 w-4" />
3101
- Clear
3224
+ {t("brandKitDetail.clear")}
3102
3225
  </Button>
3103
3226
  </DropdownMenuTrigger>
3104
3227
  <DropdownMenuContent align="end">
@@ -3110,7 +3233,7 @@ function CandidateStageActions({
3110
3233
  }}
3111
3234
  >
3112
3235
  <IconTrash className="mr-2 h-4 w-4 shrink-0" />
3113
- Dismiss failed ({failedCount})
3236
+ {t("brandKitDetail.dismissFailed")} ({failedCount})
3114
3237
  </DropdownMenuItem>
3115
3238
  <DropdownMenuItem
3116
3239
  className="text-destructive focus:bg-destructive/10 focus:text-destructive"
@@ -3121,7 +3244,7 @@ function CandidateStageActions({
3121
3244
  }}
3122
3245
  >
3123
3246
  <IconTrash className="mr-2 h-4 w-4 shrink-0" />
3124
- Clear all
3247
+ {t("brandKitDetail.clearAll")}
3125
3248
  </DropdownMenuItem>
3126
3249
  </DropdownMenuContent>
3127
3250
  </DropdownMenu>
@@ -3168,6 +3291,7 @@ function AssetSwimlaneBoard({
3168
3291
  onOptimisticDelete?: (ids: string[]) => void;
3169
3292
  onRestoreOptimisticDelete?: (ids: string[]) => void;
3170
3293
  }) {
3294
+ const t = useT();
3171
3295
  const deleteAsset = useActionMutation("delete-asset");
3172
3296
  const deleteAssets = useActionMutation("delete-assets");
3173
3297
  const updateAsset = useActionMutation("update-asset");
@@ -3271,11 +3395,13 @@ function AssetSwimlaneBoard({
3271
3395
  {
3272
3396
  onSuccess: () => {
3273
3397
  finishDeleting(ids);
3274
- toast.success("Deleted asset.");
3398
+ toast.success(t("brandKitDetail.deletedAsset"));
3275
3399
  },
3276
3400
  onError: (error) => {
3277
3401
  restoreAfterDeleteError(ids);
3278
- toast.error(error.message || "Could not delete asset.");
3402
+ toast.error(
3403
+ error.message || t("brandKitDetail.couldNotDeleteAsset"),
3404
+ );
3279
3405
  },
3280
3406
  },
3281
3407
  );
@@ -3290,11 +3416,13 @@ function AssetSwimlaneBoard({
3290
3416
  onSuccess: (result: any) => {
3291
3417
  finishDeleting(ids);
3292
3418
  const count = Number(result?.deletedCount ?? ids.length);
3293
- toast.success(`Deleted ${count} asset${count === 1 ? "" : "s"}.`);
3419
+ toast.success(t("brandKitDetail.deletedAssets", { count }));
3294
3420
  },
3295
3421
  onError: (error) => {
3296
3422
  restoreAfterDeleteError(ids);
3297
- toast.error(error.message || "Could not delete selected assets.");
3423
+ toast.error(
3424
+ error.message || t("brandKitDetail.couldNotDeleteSelectedAssets"),
3425
+ );
3298
3426
  },
3299
3427
  },
3300
3428
  );
@@ -3349,16 +3477,20 @@ function AssetSwimlaneBoard({
3349
3477
  }
3350
3478
  toast.success(
3351
3479
  enabled
3352
- ? `Added ${assetList.length} asset${assetList.length === 1 ? "" : "s"} to References.`
3353
- : `Removed ${assetList.length} asset${assetList.length === 1 ? "" : "s"} from References.`,
3480
+ ? t("brandKitDetail.addedAssetsToReferences", {
3481
+ count: assetList.length,
3482
+ })
3483
+ : t("brandKitDetail.removedAssetsFromReferences", {
3484
+ count: assetList.length,
3485
+ }),
3354
3486
  );
3355
3487
  } catch (error) {
3356
3488
  toast.error(
3357
3489
  error instanceof Error
3358
3490
  ? error.message
3359
3491
  : enabled
3360
- ? "Could not add selected assets to References."
3361
- : "Could not remove selected assets from References.",
3492
+ ? t("brandKitDetail.couldNotAddSelectedToReferences")
3493
+ : t("brandKitDetail.couldNotRemoveSelectedFromReferences"),
3362
3494
  );
3363
3495
  return;
3364
3496
  } finally {
@@ -3371,12 +3503,16 @@ function AssetSwimlaneBoard({
3371
3503
  return {
3372
3504
  id: `upload:${upload.id}`,
3373
3505
  title: upload.name,
3374
- subtitle: isChecking ? "Checking upload" : "Uploading",
3375
- status: isChecking ? "Checking" : "Uploading",
3506
+ subtitle: isChecking
3507
+ ? t("brandKitDetail.checkingUpload")
3508
+ : t("brandKitDetail.uploading"),
3509
+ status: isChecking
3510
+ ? t("brandKitDetail.checking")
3511
+ : t("brandKitDetail.uploading"),
3376
3512
  mediaType: upload.mediaType,
3377
3513
  busy: true,
3378
- preview: <PendingUploadPreview upload={upload} fit="contain" />,
3379
- thumbnail: <PendingUploadPreview upload={upload} />,
3514
+ preview: <PendingUploadPreview upload={upload} fit="contain" />, // i18n-ignore structural preview slot name
3515
+ thumbnail: <PendingUploadPreview upload={upload} />, // i18n-ignore structural preview slot name
3380
3516
  };
3381
3517
  }
3382
3518
 
@@ -3413,18 +3549,20 @@ function AssetSwimlaneBoard({
3413
3549
  subtitle: sourceText || categoryLabel || asset.status,
3414
3550
  metadata:
3415
3551
  asset.mediaType === "video"
3416
- ? "Video"
3552
+ ? t("brandKitDetail.video")
3417
3553
  : asset.mimeType?.startsWith("image/")
3418
- ? "Image"
3419
- : asset.mimeType || "Asset",
3420
- status: isReference ? "Reference" : "Saved",
3554
+ ? t("brandKitDetail.image")
3555
+ : asset.mimeType || t("brandKitDetail.asset"),
3556
+ status: isReference
3557
+ ? t("brandKitDetail.reference")
3558
+ : t("brandKitDetail.saved"),
3421
3559
  mediaType: asset.mediaType === "video" ? "video" : "image",
3422
3560
  href: `/asset/${asset.id}`,
3423
3561
  selected: selectedIds.has(asset.id),
3424
3562
  deleting: deletingIds.has(asset.id),
3425
3563
  busy,
3426
- preview: <AssetPreview asset={asset} fit="contain" />,
3427
- thumbnail: <AssetPreview asset={asset} />,
3564
+ preview: <AssetPreview asset={asset} fit="contain" />, // i18n-ignore structural preview slot name
3565
+ thumbnail: <AssetPreview asset={asset} />, // i18n-ignore structural preview slot name
3428
3566
  onToggle: (checked) => toggleAsset(asset.id, checked),
3429
3567
  menu: (
3430
3568
  <AssetActionsMenu
@@ -3453,7 +3591,11 @@ function AssetSwimlaneBoard({
3453
3591
  onClick={onSave}
3454
3592
  disabled={busy}
3455
3593
  >
3456
- {saving ? <Spinner className="h-3.5 w-3.5" /> : "Save"}
3594
+ {saving ? (
3595
+ <Spinner className="h-3.5 w-3.5" />
3596
+ ) : (
3597
+ t("brandKitDetail.save")
3598
+ )}
3457
3599
  </Button>
3458
3600
  ) : null}
3459
3601
  {canMoveToReferences ? (
@@ -3465,12 +3607,12 @@ function AssetSwimlaneBoard({
3465
3607
  }
3466
3608
  onClick={onMoveToReferences}
3467
3609
  disabled={busy}
3468
- title="Add to References"
3610
+ title={t("brandKitDetail.addToReferences")}
3469
3611
  >
3470
3612
  {promoting ? (
3471
3613
  <Spinner className="h-3.5 w-3.5" />
3472
3614
  ) : (
3473
- "Add to References"
3615
+ t("brandKitDetail.addToReferences")
3474
3616
  )}
3475
3617
  </Button>
3476
3618
  ) : null}
@@ -3483,12 +3625,12 @@ function AssetSwimlaneBoard({
3483
3625
  }
3484
3626
  onClick={onRemoveFromReferences}
3485
3627
  disabled={busy}
3486
- title="Remove from References"
3628
+ title={t("brandKitDetail.removeFromReferences")}
3487
3629
  >
3488
3630
  {promoting ? (
3489
3631
  <Spinner className="h-3.5 w-3.5" />
3490
3632
  ) : (
3491
- "Remove from References"
3633
+ t("brandKitDetail.removeFromReferences")
3492
3634
  )}
3493
3635
  </Button>
3494
3636
  ) : null}
@@ -3523,10 +3665,10 @@ function AssetSwimlaneBoard({
3523
3665
  <div className="flex min-h-[280px] w-full flex-col items-center justify-center rounded-lg border border-dashed border-border bg-muted/15 p-8 text-center">
3524
3666
  <IconSearch className="h-9 w-9 text-muted-foreground" />
3525
3667
  <span className="mt-4 text-base font-semibold">
3526
- No assets match this view
3668
+ {t("brandKitDetail.noAssetsMatch")}
3527
3669
  </span>
3528
3670
  <span className="mt-2 max-w-md text-sm text-muted-foreground">
3529
- Try All assets, a different folder, or a broader search.
3671
+ {t("brandKitDetail.noAssetsMatchDescription")}
3530
3672
  </span>
3531
3673
  </div>
3532
3674
  );
@@ -3545,10 +3687,11 @@ function AssetSwimlaneBoard({
3545
3687
  className="flex min-h-[360px] w-full flex-col items-center justify-center rounded-lg border border-dashed border-border bg-muted/20 p-8 text-center"
3546
3688
  >
3547
3689
  <IconPhotoPlus className="h-10 w-10 text-muted-foreground" />
3548
- <span className="mt-4 text-base font-semibold">Add assets</span>
3690
+ <span className="mt-4 text-base font-semibold">
3691
+ {t("brandKitDetail.addAssets")}
3692
+ </span>
3549
3693
  <span className="mt-2 max-w-md text-sm text-muted-foreground">
3550
- Upload source material or generate candidates, then mark only the
3551
- assets that should guide future generations as references.
3694
+ {t("brandKitDetail.addAssetsDescription")}
3552
3695
  </span>
3553
3696
  </button>
3554
3697
  );
@@ -3566,17 +3709,19 @@ function AssetSwimlaneBoard({
3566
3709
  <AlertDialogHeader>
3567
3710
  <AlertDialogTitle>
3568
3711
  {confirmDeleteIds.length > 1
3569
- ? `Delete ${confirmDeleteIds.length} assets?`
3570
- : "Delete asset?"}
3712
+ ? t("brandKitDetail.deleteAssetsTitle", {
3713
+ count: confirmDeleteIds.length,
3714
+ })
3715
+ : t("brandKitDetail.deleteAssetsTitle", { count: 1 })}
3571
3716
  </AlertDialogTitle>
3572
3717
  <AlertDialogDescription>
3573
3718
  {confirmDeleteIds.length > 1
3574
- ? "This permanently removes the selected assets from the brand kit. To stop using an asset as a reference but keep it, use Remove from References instead."
3575
- : "This permanently removes the asset from the brand kit. To keep it in the library but stop using it as a reference, use Remove from References instead."}
3719
+ ? t("brandKitDetail.deleteManyDescription")
3720
+ : t("brandKitDetail.deleteOneDescription")}
3576
3721
  </AlertDialogDescription>
3577
3722
  </AlertDialogHeader>
3578
3723
  <AlertDialogFooter>
3579
- <AlertDialogCancel>Cancel</AlertDialogCancel>
3724
+ <AlertDialogCancel>{t("brandKitDetail.cancel")}</AlertDialogCancel>
3580
3725
  <AlertDialogAction
3581
3726
  className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
3582
3727
  disabled={!confirmDeleteIds.length || deleting}
@@ -3585,7 +3730,7 @@ function AssetSwimlaneBoard({
3585
3730
  handleDeleteConfirmed();
3586
3731
  }}
3587
3732
  >
3588
- Delete
3733
+ {t("brandKitDetail.delete")}
3589
3734
  </AlertDialogAction>
3590
3735
  </AlertDialogFooter>
3591
3736
  </AlertDialogContent>
@@ -3598,15 +3743,20 @@ function AssetSwimlaneBoard({
3598
3743
  checked={allSelected}
3599
3744
  disabled={!boardAssets.length || deleting}
3600
3745
  onCheckedChange={(checked) => toggleAll(checked === true)}
3601
- aria-label="Select all visible assets"
3746
+ aria-label={t("brandKitDetail.selectAllVisibleAssets")}
3602
3747
  />
3603
- {allSelected ? "Deselect all" : "Select all"}
3748
+ {allSelected
3749
+ ? t("brandKitDetail.deselectAll")
3750
+ : t("brandKitDetail.selectAll")}
3604
3751
  </label>
3605
3752
  <span className="text-xs text-muted-foreground">
3606
- {boardAssets.length} visible asset
3607
- {boardAssets.length === 1 ? "" : "s"}
3753
+ {t("brandKitDetail.visibleAssets", {
3754
+ count: boardAssets.length,
3755
+ })}
3608
3756
  {referenceAssets.length > 0
3609
- ? ` · ${referenceAssets.length} reference${referenceAssets.length === 1 ? "" : "s"}`
3757
+ ? ` · ${t("brandKitDetail.referenceCount", {
3758
+ count: referenceAssets.length,
3759
+ })}`
3610
3760
  : ""}
3611
3761
  </span>
3612
3762
  {selectedCount > 0 ? (
@@ -3616,7 +3766,7 @@ function AssetSwimlaneBoard({
3616
3766
  size="sm"
3617
3767
  onClick={() => onSelectedIdsChange(new Set())}
3618
3768
  >
3619
- Clear
3769
+ {t("brandKitDetail.clear")}
3620
3770
  </Button>
3621
3771
  ) : null}
3622
3772
  </div>
@@ -3637,8 +3787,9 @@ function AssetSwimlaneBoard({
3637
3787
  <div className="flex min-w-0 items-center gap-2 text-sm font-medium">
3638
3788
  <Spinner className="h-4 w-4" />
3639
3789
  <span className="truncate">
3640
- Deleting {pendingDeleteCount} asset
3641
- {pendingDeleteCount === 1 ? "" : "s"}...
3790
+ {t("brandKitDetail.deletingAssets", {
3791
+ count: pendingDeleteCount,
3792
+ })}
3642
3793
  </span>
3643
3794
  </div>
3644
3795
  ) : (
@@ -3646,15 +3797,20 @@ function AssetSwimlaneBoard({
3646
3797
  <Checkbox
3647
3798
  checked={allSelected}
3648
3799
  onCheckedChange={(checked) => toggleAll(checked === true)}
3649
- aria-label="Select all assets in this board"
3800
+ aria-label={t("brandKitDetail.selectAllAssetsBoard")}
3650
3801
  />
3651
3802
  <span className="truncate">
3652
3803
  {selectedCount > 0
3653
- ? `${selectedCount} selected`
3654
- : `${boardAssets.length} asset${boardAssets.length === 1 ? "" : "s"}`}
3804
+ ? t("brandKitDetail.selectedCount", { count: selectedCount })
3805
+ : t("brandKitDetail.boardAssetCount", {
3806
+ count: boardAssets.length,
3807
+ })}
3655
3808
  </span>
3656
3809
  <span className="hidden text-xs text-muted-foreground sm:inline">
3657
- {referenceAssets.length} references · {savedAssets.length} saved
3810
+ {t("brandKitDetail.referencesSavedCounts", {
3811
+ references: referenceAssets.length,
3812
+ saved: savedAssets.length,
3813
+ })}
3658
3814
  </span>
3659
3815
  </div>
3660
3816
  )}
@@ -3675,7 +3831,7 @@ function AssetSwimlaneBoard({
3675
3831
  ) : (
3676
3832
  <IconPhotoPlus className="h-4 w-4" />
3677
3833
  )}
3678
- Add to References
3834
+ {t("brandKitDetail.addToReferences")}
3679
3835
  </Button>
3680
3836
  ) : null}
3681
3837
  {selectedReferenceAssets.length > 0 ? (
@@ -3693,7 +3849,7 @@ function AssetSwimlaneBoard({
3693
3849
  ) : (
3694
3850
  <IconX className="h-4 w-4" />
3695
3851
  )}
3696
- Remove from References
3852
+ {t("brandKitDetail.removeFromReferences")}
3697
3853
  </Button>
3698
3854
  ) : null}
3699
3855
  <Button
@@ -3702,7 +3858,7 @@ function AssetSwimlaneBoard({
3702
3858
  size="sm"
3703
3859
  onClick={() => onSelectedIdsChange(new Set())}
3704
3860
  >
3705
- Clear
3861
+ {t("brandKitDetail.clear")}
3706
3862
  </Button>
3707
3863
  <Button
3708
3864
  type="button"
@@ -3718,7 +3874,7 @@ function AssetSwimlaneBoard({
3718
3874
  ) : (
3719
3875
  <IconTrash className="h-4 w-4" />
3720
3876
  )}
3721
- Delete
3877
+ {t("brandKitDetail.delete")}
3722
3878
  </Button>
3723
3879
  </div>
3724
3880
  ) : null}
@@ -3729,37 +3885,41 @@ function AssetSwimlaneBoard({
3729
3885
  <AssetCardsView items={visibleGalleryItems} />
3730
3886
  ) : (
3731
3887
  <SwimLane
3732
- title={scope === "references" ? "References" : "Library"}
3888
+ title={
3889
+ scope === "references"
3890
+ ? t("brandKitDetail.references")
3891
+ : t("brandKitDetail.library")
3892
+ }
3733
3893
  eyebrow={
3734
3894
  scope === "references"
3735
- ? "Assets currently marked for generation reference."
3736
- : "Saved assets in this filtered view. Mark the ones that should guide future generations."
3895
+ ? t("brandKitDetail.referencesEyebrow")
3896
+ : t("brandKitDetail.libraryEyebrow")
3737
3897
  }
3738
3898
  items={visibleGalleryItems}
3739
3899
  action={
3740
3900
  <Button variant="outline" size="sm" onClick={onUploadClick}>
3741
- Add
3901
+ {t("brandKitDetail.add")}
3742
3902
  </Button>
3743
3903
  }
3744
3904
  empty={
3745
3905
  scope === "references" && assets.length > 0 ? (
3746
3906
  <LaneActionEmpty
3747
- title="No references in this view"
3748
- body="Switch back to all assets and mark the keepers as references."
3907
+ title={t("brandKitDetail.noReferencesTitle")}
3908
+ body={t("brandKitDetail.noReferencesBody")}
3749
3909
  onClick={() => onScopeChange("all")}
3750
- action="Show all"
3910
+ action={t("brandKitDetail.showAll")}
3751
3911
  />
3752
3912
  ) : hideEmptyLanes ? (
3753
3913
  <LaneActionEmpty
3754
- title="No assets match this view"
3755
- body="Try All assets, a different folder, or a broader search."
3914
+ title={t("brandKitDetail.noAssetsMatch")}
3915
+ body={t("brandKitDetail.noAssetsMatchDescription")}
3756
3916
  onClick={() => onScopeChange("all")}
3757
- action="Show all"
3917
+ action={t("brandKitDetail.showAll")}
3758
3918
  />
3759
3919
  ) : (
3760
3920
  <LaneDropTarget
3761
- title="Drop assets here"
3762
- body="Upload source material, generated exports, logos, products, or style boards."
3921
+ title={t("brandKitDetail.dropAssetsHere")}
3922
+ body={t("brandKitDetail.dropAssetsBody")}
3763
3923
  onClick={onUploadClick}
3764
3924
  onDrop={onDrop}
3765
3925
  />
@@ -3778,6 +3938,7 @@ function AssetViewModeToggle({
3778
3938
  value: AssetViewMode;
3779
3939
  onChange: (mode: AssetViewMode) => void;
3780
3940
  }) {
3941
+ const t = useT();
3781
3942
  const options: Array<{
3782
3943
  value: AssetViewMode;
3783
3944
  label: string;
@@ -3785,12 +3946,12 @@ function AssetViewModeToggle({
3785
3946
  }> = [
3786
3947
  {
3787
3948
  value: "lanes",
3788
- label: "Lanes",
3949
+ label: t("brandKitDetail.lanes"),
3789
3950
  icon: <IconLayoutBottombar className="h-4 w-4" />,
3790
3951
  },
3791
3952
  {
3792
3953
  value: "cards",
3793
- label: "Cards",
3954
+ label: t("brandKitDetail.cards"),
3794
3955
  icon: <IconLayoutGrid className="h-4 w-4" />,
3795
3956
  },
3796
3957
  ];
@@ -3799,7 +3960,7 @@ function AssetViewModeToggle({
3799
3960
  <TooltipProvider delayDuration={150}>
3800
3961
  <div
3801
3962
  role="group"
3802
- aria-label="Asset view"
3963
+ aria-label={t("brandKitDetail.assetView")}
3803
3964
  className="inline-flex shrink-0 gap-1 rounded-md border border-border bg-muted/20 p-1"
3804
3965
  >
3805
3966
  {options.map((option) => {
@@ -3816,14 +3977,20 @@ function AssetViewModeToggle({
3816
3977
  ? "bg-background text-foreground shadow-sm"
3817
3978
  : "text-muted-foreground hover:bg-background/60 hover:text-foreground",
3818
3979
  ].join(" ")}
3819
- aria-label={`${option.label} view`}
3980
+ aria-label={t("brandKitDetail.viewModeLabel", {
3981
+ label: option.label,
3982
+ })}
3820
3983
  aria-pressed={active}
3821
- title={`${option.label} view`}
3984
+ title={t("brandKitDetail.viewModeLabel", {
3985
+ label: option.label,
3986
+ })}
3822
3987
  >
3823
3988
  {option.icon}
3824
3989
  </button>
3825
3990
  </TooltipTrigger>
3826
- <TooltipContent side="bottom">{option.label} view</TooltipContent>
3991
+ <TooltipContent side="bottom">
3992
+ {t("brandKitDetail.viewModeLabel", { label: option.label })}
3993
+ </TooltipContent>
3827
3994
  </Tooltip>
3828
3995
  );
3829
3996
  })}
@@ -3843,19 +4010,24 @@ function AssetScopeToggle({
3843
4010
  allCount: number;
3844
4011
  referenceCount: number;
3845
4012
  }) {
4013
+ const t = useT();
3846
4014
  const options: Array<{
3847
4015
  value: AssetLibraryScope;
3848
4016
  label: string;
3849
4017
  count: number;
3850
4018
  }> = [
3851
- { value: "all", label: "All", count: allCount },
3852
- { value: "references", label: "References", count: referenceCount },
4019
+ { value: "all", label: t("brandKitDetail.all"), count: allCount },
4020
+ {
4021
+ value: "references",
4022
+ label: t("brandKitDetail.references"),
4023
+ count: referenceCount,
4024
+ },
3853
4025
  ];
3854
4026
 
3855
4027
  return (
3856
4028
  <div
3857
4029
  role="group"
3858
- aria-label="Asset scope"
4030
+ aria-label={t("brandKitDetail.assetScope")}
3859
4031
  className="inline-flex shrink-0 gap-1 rounded-md border border-border bg-muted/20 p-1"
3860
4032
  >
3861
4033
  {options.map((option) => {
@@ -3892,10 +4064,11 @@ function AssetScopeToggle({
3892
4064
  }
3893
4065
 
3894
4066
  function AssetCardsView({ items }: { items: LaneGalleryItem[] }) {
4067
+ const t = useT();
3895
4068
  if (!items.length) {
3896
4069
  return (
3897
4070
  <div className="flex min-h-[220px] items-center justify-center rounded-lg border border-dashed border-border bg-muted/15 p-8 text-center text-sm text-muted-foreground">
3898
- No assets to show.
4071
+ {t("brandKitDetail.noAssetsToShow")}
3899
4072
  </div>
3900
4073
  );
3901
4074
  }
@@ -3927,7 +4100,9 @@ function AssetCardsView({ items }: { items: LaneGalleryItem[] }) {
3927
4100
  onCheckedChange={(checked) =>
3928
4101
  item.onToggle?.(checked === true)
3929
4102
  }
3930
- aria-label={`Select ${item.title}`}
4103
+ aria-label={t("brandKitDetail.selectItem", {
4104
+ title: item.title,
4105
+ })}
3931
4106
  className="border-background bg-background/90 shadow-sm"
3932
4107
  />
3933
4108
  ) : null}
@@ -3979,6 +4154,7 @@ function SwimLane({
3979
4154
  action?: ReactNode;
3980
4155
  empty: ReactNode;
3981
4156
  }) {
4157
+ const t = useT();
3982
4158
  const [activeItemId, setActiveItemId] = useState<string | null>(null);
3983
4159
  const itemIds = items.map((item) => item.id).join("\n");
3984
4160
  const activeItem =
@@ -4050,7 +4226,9 @@ function SwimLane({
4050
4226
  : "border-border/80 hover:border-foreground/30",
4051
4227
  item.deleting ? "opacity-60" : "",
4052
4228
  ].join(" ")}
4053
- aria-label={`Show ${item.title}`}
4229
+ aria-label={t("brandKitDetail.showItem", {
4230
+ title: item.title,
4231
+ })}
4054
4232
  aria-pressed={active}
4055
4233
  >
4056
4234
  {item.thumbnail}
@@ -4089,7 +4267,9 @@ function SwimLane({
4089
4267
  onCheckedChange={(checked) =>
4090
4268
  activeItem.onToggle?.(checked === true)
4091
4269
  }
4092
- aria-label={`Select ${activeItem.title}`}
4270
+ aria-label={t("brandKitDetail.selectItem", {
4271
+ title: activeItem.title,
4272
+ })}
4093
4273
  className="mt-0.5"
4094
4274
  />
4095
4275
  ) : null}
@@ -4108,7 +4288,7 @@ function SwimLane({
4108
4288
  {activeItem.status ? (
4109
4289
  <div className="rounded-md border border-border bg-muted/20 px-2 py-1.5">
4110
4290
  <div className="text-[10px] font-medium uppercase text-muted-foreground">
4111
- Status
4291
+ {t("brandKitDetail.status")}
4112
4292
  </div>
4113
4293
  <div className="mt-0.5 truncate">{activeItem.status}</div>
4114
4294
  </div>
@@ -4116,7 +4296,7 @@ function SwimLane({
4116
4296
  {activeItem.metadata ? (
4117
4297
  <div className="rounded-md border border-border bg-muted/20 px-2 py-1.5">
4118
4298
  <div className="text-[10px] font-medium uppercase text-muted-foreground">
4119
- Type
4299
+ {t("brandKitDetail.type")}
4120
4300
  </div>
4121
4301
  <div className="mt-0.5 truncate">
4122
4302
  {activeItem.metadata}
@@ -4133,7 +4313,7 @@ function SwimLane({
4133
4313
  <div className="flex shrink-0 items-center gap-2">
4134
4314
  {activeItem?.href ? (
4135
4315
  <Button asChild variant="outline" size="sm" className="flex-1">
4136
- <Link to={activeItem.href}>Open</Link>
4316
+ <Link to={activeItem.href}>{t("brandKitDetail.open")}</Link>
4137
4317
  </Button>
4138
4318
  ) : null}
4139
4319
  {action ? <div className="shrink-0">{action}</div> : null}
@@ -4209,6 +4389,7 @@ function PendingUploadPreview({
4209
4389
  upload: PendingUpload;
4210
4390
  fit?: "cover" | "contain";
4211
4391
  }) {
4392
+ const t = useT();
4212
4393
  const isChecking = upload.status === "checking";
4213
4394
  return (
4214
4395
  <div
@@ -4220,7 +4401,9 @@ function PendingUploadPreview({
4220
4401
  <div className="flex flex-col items-center gap-2 text-muted-foreground">
4221
4402
  <Spinner className={fit === "contain" ? "h-6 w-6" : "h-4 w-4"} />
4222
4403
  <span className="text-xs font-medium">
4223
- {isChecking ? "Checking" : "Uploading"}
4404
+ {isChecking
4405
+ ? t("brandKitDetail.checking")
4406
+ : t("brandKitDetail.uploading")}
4224
4407
  </span>
4225
4408
  </div>
4226
4409
  </div>
@@ -4244,6 +4427,7 @@ function AssetActionsMenu({
4244
4427
  onMoveToReferences?: () => void;
4245
4428
  onRemoveFromReferences?: () => void;
4246
4429
  }) {
4430
+ const t = useT();
4247
4431
  return (
4248
4432
  <DropdownMenu>
4249
4433
  <DropdownMenuTrigger asChild>
@@ -4252,7 +4436,7 @@ function AssetActionsMenu({
4252
4436
  variant="secondary"
4253
4437
  size="icon"
4254
4438
  className="h-8 w-8 shadow-sm"
4255
- aria-label="Asset actions"
4439
+ aria-label={t("brandKitDetail.assetActions")}
4256
4440
  disabled={busy}
4257
4441
  >
4258
4442
  <IconDotsVertical className="h-4 w-4" />
@@ -4260,7 +4444,9 @@ function AssetActionsMenu({
4260
4444
  </DropdownMenuTrigger>
4261
4445
  <DropdownMenuContent align="end">
4262
4446
  <DropdownMenuItem asChild>
4263
- <Link to={`/asset/${asset.id}`}>View details</Link>
4447
+ <Link to={`/asset/${asset.id}`}>
4448
+ {t("brandKitDetail.viewDetails")}
4449
+ </Link>
4264
4450
  </DropdownMenuItem>
4265
4451
  {onMoveToReferences ? (
4266
4452
  <DropdownMenuItem
@@ -4270,7 +4456,7 @@ function AssetActionsMenu({
4270
4456
  }}
4271
4457
  >
4272
4458
  <IconPhotoPlus className="mr-2 h-4 w-4 shrink-0" />
4273
- Add to References
4459
+ {t("brandKitDetail.addToReferences")}
4274
4460
  </DropdownMenuItem>
4275
4461
  ) : null}
4276
4462
  {onRemoveFromReferences ? (
@@ -4281,13 +4467,13 @@ function AssetActionsMenu({
4281
4467
  }}
4282
4468
  >
4283
4469
  <IconX className="mr-2 h-4 w-4 shrink-0" />
4284
- Remove from References
4470
+ {t("brandKitDetail.removeFromReferences")}
4285
4471
  </DropdownMenuItem>
4286
4472
  ) : null}
4287
4473
  <DropdownMenuSub>
4288
4474
  <DropdownMenuSubTrigger>
4289
4475
  <IconFolder className="mr-2 h-4 w-4 shrink-0" />
4290
- Move to
4476
+ {t("brandKitDetail.moveTo")}
4291
4477
  </DropdownMenuSubTrigger>
4292
4478
  <DropdownMenuSubContent>
4293
4479
  <DropdownMenuItem
@@ -4298,7 +4484,7 @@ function AssetActionsMenu({
4298
4484
  })
4299
4485
  }
4300
4486
  >
4301
- Unfiled
4487
+ {t("brandKitDetail.unfiled")}
4302
4488
  </DropdownMenuItem>
4303
4489
  {folders.map((folder) => (
4304
4490
  <DropdownMenuItem
@@ -4321,7 +4507,7 @@ function AssetActionsMenu({
4321
4507
  onSelect={onDelete}
4322
4508
  >
4323
4509
  <IconTrash className="mr-2 h-4 w-4 shrink-0" />
4324
- Delete
4510
+ {t("brandKitDetail.delete")}
4325
4511
  </DropdownMenuItem>
4326
4512
  </DropdownMenuContent>
4327
4513
  </DropdownMenu>
@@ -4335,6 +4521,7 @@ function VariantPreview({
4335
4521
  slot: any;
4336
4522
  fit?: "cover" | "contain";
4337
4523
  }) {
4524
+ const t = useT();
4338
4525
  const [sourceIndex, setSourceIndex] = useState(0);
4339
4526
  const [previewUnavailable, setPreviewUnavailable] = useState(false);
4340
4527
  const previewSources = assetPreviewSources(slot, "thumbnail");
@@ -4372,7 +4559,7 @@ function VariantPreview({
4372
4559
  </div>
4373
4560
  ) : previewUnavailable ? (
4374
4561
  <div className="p-4 text-center text-xs text-muted-foreground">
4375
- Preview unavailable
4562
+ {t("brandKitDetail.previewUnavailable")}
4376
4563
  </div>
4377
4564
  ) : (
4378
4565
  <IconPhoto className="h-8 w-8 animate-pulse text-muted-foreground" />
@@ -4392,11 +4579,14 @@ function VariantActionsMenu({
4392
4579
  busy?: boolean;
4393
4580
  onMoveToReferences?: () => void;
4394
4581
  }) {
4582
+ const t = useT();
4395
4583
  const dismissSlot = useActionMutation("dismiss-variant-slots");
4396
4584
  const queryClient = useQueryClient();
4397
4585
  const [confirmOpen, setConfirmOpen] = useState(false);
4398
4586
  const isFailed = slot.status === "failed";
4399
- const label = isFailed ? "Dismiss" : "Delete";
4587
+ const label = isFailed
4588
+ ? t("brandKitDetail.dismiss")
4589
+ : t("brandKitDetail.delete");
4400
4590
 
4401
4591
  return (
4402
4592
  <>
@@ -4407,7 +4597,7 @@ function VariantActionsMenu({
4407
4597
  variant="secondary"
4408
4598
  size="icon"
4409
4599
  className="h-8 w-8 shadow-sm"
4410
- aria-label="Candidate actions"
4600
+ aria-label={t("brandKitDetail.candidateActions")}
4411
4601
  disabled={busy || dismissSlot.isPending}
4412
4602
  >
4413
4603
  <IconDotsVertical className="h-4 w-4" />
@@ -4422,7 +4612,7 @@ function VariantActionsMenu({
4422
4612
  }}
4423
4613
  >
4424
4614
  <IconPhotoPlus className="mr-2 h-4 w-4 shrink-0" />
4425
- Add to References
4615
+ {t("brandKitDetail.addToReferences")}
4426
4616
  </DropdownMenuItem>
4427
4617
  ) : null}
4428
4618
  <DropdownMenuItem
@@ -4447,17 +4637,19 @@ function VariantActionsMenu({
4447
4637
  <AlertDialogContent>
4448
4638
  <AlertDialogHeader>
4449
4639
  <AlertDialogTitle>
4450
- {isFailed ? "Dismiss this slot?" : "Delete candidate?"}
4640
+ {isFailed
4641
+ ? t("brandKitDetail.dismissThisSlot")
4642
+ : t("brandKitDetail.deleteCandidate")}
4451
4643
  </AlertDialogTitle>
4452
4644
  <AlertDialogDescription>
4453
4645
  {isFailed
4454
- ? "Removes this failed slot from the live candidates panel."
4455
- : "Removes this candidate from the brand kit and clears its slot."}
4646
+ ? t("brandKitDetail.dismissSlotDescription")
4647
+ : t("brandKitDetail.deleteCandidateDescription")}
4456
4648
  </AlertDialogDescription>
4457
4649
  </AlertDialogHeader>
4458
4650
  <AlertDialogFooter>
4459
4651
  <AlertDialogCancel disabled={dismissSlot.isPending}>
4460
- Cancel
4652
+ {t("brandKitDetail.cancel")}
4461
4653
  </AlertDialogCancel>
4462
4654
  <AlertDialogAction
4463
4655
  className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
@@ -4480,7 +4672,8 @@ function VariantActionsMenu({
4480
4672
  },
4481
4673
  onError: (error) =>
4482
4674
  toast.error(
4483
- error.message || "Could not clear candidate.",
4675
+ error.message ||
4676
+ t("brandKitDetail.couldNotClearCandidate"),
4484
4677
  ),
4485
4678
  },
4486
4679
  );
@@ -4489,7 +4682,9 @@ function VariantActionsMenu({
4489
4682
  {dismissSlot.isPending ? (
4490
4683
  <>
4491
4684
  <Spinner className="h-4 w-4" />
4492
- {isFailed ? "Dismissing..." : "Deleting..."}
4685
+ {isFailed
4686
+ ? t("brandKitDetail.dismissing")
4687
+ : t("brandKitDetail.deleting")}
4493
4688
  </>
4494
4689
  ) : (
4495
4690
  label
@@ -4503,6 +4698,7 @@ function VariantActionsMenu({
4503
4698
  }
4504
4699
 
4505
4700
  function PendingUploadLaneTile({ upload }: { upload: PendingUpload }) {
4701
+ const t = useT();
4506
4702
  const isChecking = upload.status === "checking";
4507
4703
  return (
4508
4704
  <div className="w-[144px] shrink-0 overflow-hidden rounded-md border border-dashed border-border bg-background sm:w-[156px]">
@@ -4510,7 +4706,9 @@ function PendingUploadLaneTile({ upload }: { upload: PendingUpload }) {
4510
4706
  <div className="flex flex-col items-center gap-2 text-muted-foreground">
4511
4707
  <Spinner className="h-5 w-5" />
4512
4708
  <span className="text-xs font-medium">
4513
- {isChecking ? "Checking" : "Uploading"}
4709
+ {isChecking
4710
+ ? t("brandKitDetail.checking")
4711
+ : t("brandKitDetail.uploading")}
4514
4712
  </span>
4515
4713
  </div>
4516
4714
  </div>
@@ -4553,6 +4751,7 @@ function AssetLaneTile({
4553
4751
  onSave?: () => void;
4554
4752
  onMoveToReferences?: () => void;
4555
4753
  }) {
4754
+ const t = useT();
4556
4755
  const displayTitle = assetDisplayTitle(asset);
4557
4756
  const sourceText = assetLineageSourceText(asset);
4558
4757
  const canMoveToReferences = Boolean(onMoveToReferences);
@@ -4575,7 +4774,7 @@ function AssetLaneTile({
4575
4774
  <Checkbox
4576
4775
  checked={selected}
4577
4776
  onCheckedChange={(checked) => onToggle(checked === true)}
4578
- aria-label={`Select ${displayTitle}`}
4777
+ aria-label={t("brandKitDetail.selectItem", { title: displayTitle })}
4579
4778
  className={[
4580
4779
  "border-background bg-background/90 shadow-sm opacity-100 transition sm:opacity-0 sm:group-hover:opacity-100 sm:focus-visible:opacity-100",
4581
4780
  selected ? "sm:opacity-100" : "",
@@ -4590,7 +4789,7 @@ function AssetLaneTile({
4590
4789
  variant="secondary"
4591
4790
  size="icon"
4592
4791
  className="h-8 w-8 shadow-sm opacity-100 sm:opacity-0 sm:group-hover:opacity-100 sm:focus-visible:opacity-100 data-[state=open]:opacity-100"
4593
- aria-label="Asset actions"
4792
+ aria-label={t("brandKitDetail.assetActions")}
4594
4793
  disabled={busy}
4595
4794
  >
4596
4795
  <IconDotsVertical className="h-4 w-4" />
@@ -4598,7 +4797,9 @@ function AssetLaneTile({
4598
4797
  </DropdownMenuTrigger>
4599
4798
  <DropdownMenuContent align="end">
4600
4799
  <DropdownMenuItem asChild>
4601
- <Link to={`/asset/${asset.id}`}>View details</Link>
4800
+ <Link to={`/asset/${asset.id}`}>
4801
+ {t("brandKitDetail.viewDetails")}
4802
+ </Link>
4602
4803
  </DropdownMenuItem>
4603
4804
  {canMoveToReferences ? (
4604
4805
  <DropdownMenuItem
@@ -4608,13 +4809,13 @@ function AssetLaneTile({
4608
4809
  }}
4609
4810
  >
4610
4811
  <IconPhotoPlus className="mr-2 h-4 w-4 shrink-0" />
4611
- Add to References
4812
+ {t("brandKitDetail.addToReferences")}
4612
4813
  </DropdownMenuItem>
4613
4814
  ) : null}
4614
4815
  <DropdownMenuSub>
4615
4816
  <DropdownMenuSubTrigger>
4616
4817
  <IconFolder className="mr-2 h-4 w-4 shrink-0" />
4617
- Move to
4818
+ {t("brandKitDetail.moveTo")}
4618
4819
  </DropdownMenuSubTrigger>
4619
4820
  <DropdownMenuSubContent>
4620
4821
  <DropdownMenuItem
@@ -4625,7 +4826,7 @@ function AssetLaneTile({
4625
4826
  })
4626
4827
  }
4627
4828
  >
4628
- Unfiled
4829
+ {t("brandKitDetail.unfiled")}
4629
4830
  </DropdownMenuItem>
4630
4831
  {folders.map((folder) => (
4631
4832
  <DropdownMenuItem
@@ -4648,7 +4849,7 @@ function AssetLaneTile({
4648
4849
  onSelect={onDelete}
4649
4850
  >
4650
4851
  <IconTrash className="mr-2 h-4 w-4 shrink-0" />
4651
- Delete
4852
+ {t("brandKitDetail.delete")}
4652
4853
  </DropdownMenuItem>
4653
4854
  </DropdownMenuContent>
4654
4855
  </DropdownMenu>
@@ -4701,7 +4902,11 @@ function AssetLaneTile({
4701
4902
  onClick={onSave}
4702
4903
  disabled={busy}
4703
4904
  >
4704
- {saving ? <Spinner className="h-3.5 w-3.5" /> : "Save"}
4905
+ {saving ? (
4906
+ <Spinner className="h-3.5 w-3.5" />
4907
+ ) : (
4908
+ t("brandKitDetail.save")
4909
+ )}
4705
4910
  </Button>
4706
4911
  ) : null}
4707
4912
  {canMoveToReferences ? (
@@ -4713,12 +4918,12 @@ function AssetLaneTile({
4713
4918
  }
4714
4919
  onClick={onMoveToReferences}
4715
4920
  disabled={busy}
4716
- title="Add to References"
4921
+ title={t("brandKitDetail.addToReferences")}
4717
4922
  >
4718
4923
  {promoting ? (
4719
4924
  <Spinner className="h-3.5 w-3.5" />
4720
4925
  ) : (
4721
- "Add to References"
4926
+ t("brandKitDetail.addToReferences")
4722
4927
  )}
4723
4928
  </Button>
4724
4929
  ) : null}
@@ -4744,6 +4949,7 @@ function VariantLaneTile({
4744
4949
  saving?: boolean;
4745
4950
  promoting?: boolean;
4746
4951
  }) {
4952
+ const t = useT();
4747
4953
  const dismissSlot = useActionMutation("dismiss-variant-slots");
4748
4954
  const queryClient = useQueryClient();
4749
4955
  const [confirmOpen, setConfirmOpen] = useState(false);
@@ -4752,7 +4958,9 @@ function VariantLaneTile({
4752
4958
  const previewSources = assetPreviewSources(slot, "thumbnail");
4753
4959
  const previewSourcesKey = previewSources.join("\n");
4754
4960
  const isFailed = slot.status === "failed";
4755
- const label = isFailed ? "Dismiss" : "Delete";
4961
+ const label = isFailed
4962
+ ? t("brandKitDetail.dismiss")
4963
+ : t("brandKitDetail.delete");
4756
4964
  const busy = saving || promoting || dismissSlot.isPending;
4757
4965
  const previewSrc = previewSources[sourceIndex];
4758
4966
 
@@ -4774,7 +4982,7 @@ function VariantLaneTile({
4774
4982
  variant="secondary"
4775
4983
  size="icon"
4776
4984
  className="h-8 w-8 shadow-sm opacity-100 sm:opacity-0 sm:group-hover:opacity-100 sm:focus-visible:opacity-100 data-[state=open]:opacity-100"
4777
- aria-label="Candidate actions"
4985
+ aria-label={t("brandKitDetail.candidateActions")}
4778
4986
  disabled={busy}
4779
4987
  >
4780
4988
  <IconDotsVertical className="h-4 w-4" />
@@ -4789,7 +4997,7 @@ function VariantLaneTile({
4789
4997
  }}
4790
4998
  >
4791
4999
  <IconPhotoPlus className="mr-2 h-4 w-4 shrink-0" />
4792
- Add to References
5000
+ {t("brandKitDetail.addToReferences")}
4793
5001
  </DropdownMenuItem>
4794
5002
  ) : null}
4795
5003
  <DropdownMenuItem
@@ -4815,17 +5023,19 @@ function VariantLaneTile({
4815
5023
  <AlertDialogContent>
4816
5024
  <AlertDialogHeader>
4817
5025
  <AlertDialogTitle>
4818
- {isFailed ? "Dismiss this slot?" : "Delete candidate?"}
5026
+ {isFailed
5027
+ ? t("brandKitDetail.dismissThisSlot")
5028
+ : t("brandKitDetail.deleteCandidate")}
4819
5029
  </AlertDialogTitle>
4820
5030
  <AlertDialogDescription>
4821
5031
  {isFailed
4822
- ? "Removes this failed slot from the live candidates panel."
4823
- : "Removes this candidate from the brand kit and clears its slot."}
5032
+ ? t("brandKitDetail.dismissSlotDescription")
5033
+ : t("brandKitDetail.deleteCandidateDescription")}
4824
5034
  </AlertDialogDescription>
4825
5035
  </AlertDialogHeader>
4826
5036
  <AlertDialogFooter>
4827
5037
  <AlertDialogCancel disabled={dismissSlot.isPending}>
4828
- Cancel
5038
+ {t("brandKitDetail.cancel")}
4829
5039
  </AlertDialogCancel>
4830
5040
  <AlertDialogAction
4831
5041
  className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
@@ -4848,7 +5058,8 @@ function VariantLaneTile({
4848
5058
  },
4849
5059
  onError: (error) =>
4850
5060
  toast.error(
4851
- error.message || "Could not clear candidate.",
5061
+ error.message ||
5062
+ t("brandKitDetail.couldNotClearCandidate"),
4852
5063
  ),
4853
5064
  },
4854
5065
  );
@@ -4857,7 +5068,9 @@ function VariantLaneTile({
4857
5068
  {dismissSlot.isPending ? (
4858
5069
  <>
4859
5070
  <Spinner className="h-4 w-4" />
4860
- {isFailed ? "Dismissing..." : "Deleting..."}
5071
+ {isFailed
5072
+ ? t("brandKitDetail.dismissing")
5073
+ : t("brandKitDetail.deleting")}
4861
5074
  </>
4862
5075
  ) : (
4863
5076
  label
@@ -4888,7 +5101,7 @@ function VariantLaneTile({
4888
5101
  </div>
4889
5102
  ) : previewUnavailable ? (
4890
5103
  <div className="p-4 text-center text-xs text-muted-foreground">
4891
- Preview unavailable
5104
+ {t("brandKitDetail.previewUnavailable")}
4892
5105
  </div>
4893
5106
  ) : (
4894
5107
  <IconPhoto className="h-8 w-8 animate-pulse text-muted-foreground" />
@@ -4896,10 +5109,14 @@ function VariantLaneTile({
4896
5109
  <div className="pointer-events-none absolute inset-x-0 bottom-0 bg-gradient-to-t from-background via-background/90 to-transparent px-2 pb-2 pt-8">
4897
5110
  <div className="flex items-center justify-between gap-2">
4898
5111
  <span className="truncate text-xs font-medium">
4899
- {slot.status === "ready" ? "Ready candidate" : "Generating"}
5112
+ {slot.status === "ready"
5113
+ ? t("brandKitDetail.readyCandidate")
5114
+ : t("brandKitDetail.generating")}
4900
5115
  </span>
4901
5116
  <span className="shrink-0 text-[10px] text-muted-foreground">
4902
- {slot.slotId ? shortId(String(slot.slotId)) : "slot"}
5117
+ {slot.slotId
5118
+ ? shortId(String(slot.slotId))
5119
+ : t("brandKitDetail.slot")}
4903
5120
  </span>
4904
5121
  </div>
4905
5122
  </div>
@@ -4919,7 +5136,11 @@ function VariantLaneTile({
4919
5136
  onClick={onSave}
4920
5137
  disabled={busy}
4921
5138
  >
4922
- {saving ? <Spinner className="h-3.5 w-3.5" /> : "Save"}
5139
+ {saving ? (
5140
+ <Spinner className="h-3.5 w-3.5" />
5141
+ ) : (
5142
+ t("brandKitDetail.save")
5143
+ )}
4923
5144
  </Button>
4924
5145
  {onMoveToReferences ? (
4925
5146
  <Button
@@ -4928,12 +5149,12 @@ function VariantLaneTile({
4928
5149
  className="h-8 px-2 text-xs"
4929
5150
  onClick={onMoveToReferences}
4930
5151
  disabled={busy}
4931
- title="Add to References"
5152
+ title={t("brandKitDetail.addToReferences")}
4932
5153
  >
4933
5154
  {promoting ? (
4934
5155
  <Spinner className="h-3.5 w-3.5" />
4935
5156
  ) : (
4936
- "Add to References"
5157
+ t("brandKitDetail.addToReferences")
4937
5158
  )}
4938
5159
  </Button>
4939
5160
  ) : null}
@@ -4955,6 +5176,7 @@ function CreateFolderDialog({
4955
5176
  onSubmit: (title: string) => void | Promise<void>;
4956
5177
  pending?: boolean;
4957
5178
  }) {
5179
+ const t = useT();
4958
5180
  const [title, setTitle] = useState("");
4959
5181
  async function submit() {
4960
5182
  const trimmed = title.trim();
@@ -4964,7 +5186,9 @@ function CreateFolderDialog({
4964
5186
  setTitle("");
4965
5187
  } catch (error) {
4966
5188
  toast.error(
4967
- error instanceof Error ? error.message : "Could not create folder",
5189
+ error instanceof Error
5190
+ ? error.message
5191
+ : t("brandKitDetail.couldNotCreateFolder"),
4968
5192
  );
4969
5193
  }
4970
5194
  }
@@ -4972,14 +5196,13 @@ function CreateFolderDialog({
4972
5196
  <Dialog open={open} onOpenChange={onOpenChange}>
4973
5197
  <DialogContent className="sm:max-w-md">
4974
5198
  <DialogHeader>
4975
- <DialogTitle>New folder</DialogTitle>
5199
+ <DialogTitle>{t("brandKitDetail.newFolder")}</DialogTitle>
4976
5200
  <DialogDescription>
4977
- Group uploaded and generated assets for a campaign, channel, or
4978
- reusable collection.
5201
+ {t("brandKitDetail.newFolderDescription")}
4979
5202
  </DialogDescription>
4980
5203
  </DialogHeader>
4981
5204
  <div className="space-y-2">
4982
- <Label htmlFor="folder-title">Name</Label>
5205
+ <Label htmlFor="folder-title">{t("brandKitDetail.name")}</Label>
4983
5206
  <Input
4984
5207
  id="folder-title"
4985
5208
  value={title}
@@ -4990,13 +5213,13 @@ function CreateFolderDialog({
4990
5213
  void submit();
4991
5214
  }
4992
5215
  }}
4993
- placeholder="Campaign launch"
5216
+ placeholder={t("brandKitDetail.campaignLaunch")}
4994
5217
  autoFocus
4995
5218
  />
4996
5219
  </div>
4997
5220
  <DialogFooter>
4998
5221
  <Button variant="outline" onClick={() => onOpenChange(false)}>
4999
- Cancel
5222
+ {t("brandKitDetail.cancel")}
5000
5223
  </Button>
5001
5224
  <Button
5002
5225
  disabled={!title.trim() || pending}
@@ -5004,7 +5227,7 @@ function CreateFolderDialog({
5004
5227
  void submit();
5005
5228
  }}
5006
5229
  >
5007
- Create
5230
+ {t("brandKitDetail.create")}
5008
5231
  </Button>
5009
5232
  </DialogFooter>
5010
5233
  </DialogContent>
@@ -5019,14 +5242,21 @@ function LiveCandidatesActions({
5019
5242
  slots: any[];
5020
5243
  libraryId: string;
5021
5244
  }) {
5245
+ const t = useT();
5022
5246
  const dismissSlots = useActionMutation("dismiss-variant-slots");
5023
5247
  const queryClient = useQueryClient();
5024
5248
  const [pending, setPending] = useState<"failed" | "all" | null>(null);
5025
5249
  const failedCount = slots.filter((s) => s.status === "failed").length;
5026
5250
  const hasFailed = failedCount > 0;
5027
5251
  const isClearing = dismissSlots.isPending;
5028
- const actionLabel = pending === "failed" ? "Dismiss failed" : "Clear all";
5029
- const busyLabel = pending === "failed" ? "Dismissing..." : "Clearing...";
5252
+ const actionLabel =
5253
+ pending === "failed"
5254
+ ? t("brandKitDetail.dismissFailed")
5255
+ : t("brandKitDetail.clearAll");
5256
+ const busyLabel =
5257
+ pending === "failed"
5258
+ ? t("brandKitDetail.dismissing")
5259
+ : t("brandKitDetail.clearing");
5030
5260
 
5031
5261
  return (
5032
5262
  <>
@@ -5040,17 +5270,21 @@ function LiveCandidatesActions({
5040
5270
  <AlertDialogHeader>
5041
5271
  <AlertDialogTitle>
5042
5272
  {pending === "failed"
5043
- ? `Dismiss ${failedCount} failed ${failedCount === 1 ? "slot" : "slots"}?`
5044
- : "Clear all live candidates?"}
5273
+ ? t("brandKitDetail.dismissFailedSlotsTitle", {
5274
+ count: failedCount,
5275
+ })
5276
+ : t("brandKitDetail.clearLiveCandidates")}
5045
5277
  </AlertDialogTitle>
5046
5278
  <AlertDialogDescription>
5047
5279
  {pending === "failed"
5048
- ? "Removes every failed slot from the panel. Successful candidates stay."
5049
- : "Clears the live candidates panel and deletes any unsaved candidate rows."}
5280
+ ? t("brandKitDetail.dismissFailedSlotsDescription")
5281
+ : t("brandKitDetail.clearLiveCandidatesDescription")}
5050
5282
  </AlertDialogDescription>
5051
5283
  </AlertDialogHeader>
5052
5284
  <AlertDialogFooter>
5053
- <AlertDialogCancel disabled={isClearing}>Cancel</AlertDialogCancel>
5285
+ <AlertDialogCancel disabled={isClearing}>
5286
+ {t("brandKitDetail.cancel")}
5287
+ </AlertDialogCancel>
5054
5288
  <AlertDialogAction
5055
5289
  className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
5056
5290
  disabled={isClearing || pending === null}
@@ -5079,7 +5313,8 @@ function LiveCandidatesActions({
5079
5313
  },
5080
5314
  onError: (error) =>
5081
5315
  toast.error(
5082
- error.message || "Could not clear live candidates.",
5316
+ error.message ||
5317
+ t("brandKitDetail.couldNotClearLiveCandidates"),
5083
5318
  ),
5084
5319
  },
5085
5320
  );
@@ -5105,11 +5340,11 @@ function LiveCandidatesActions({
5105
5340
  variant="outline"
5106
5341
  size="sm"
5107
5342
  className="gap-2"
5108
- aria-label="Live candidates actions"
5343
+ aria-label={t("brandKitDetail.liveCandidatesActions")}
5109
5344
  disabled={isClearing}
5110
5345
  >
5111
5346
  <IconDotsVertical className="h-4 w-4" />
5112
- Clear
5347
+ {t("brandKitDetail.clear")}
5113
5348
  </Button>
5114
5349
  </DropdownMenuTrigger>
5115
5350
  <DropdownMenuContent align="end">
@@ -5121,7 +5356,7 @@ function LiveCandidatesActions({
5121
5356
  }}
5122
5357
  >
5123
5358
  <IconTrash className="mr-2 h-4 w-4 shrink-0" />
5124
- Dismiss failed ({failedCount})
5359
+ {t("brandKitDetail.dismissFailed")} ({failedCount})
5125
5360
  </DropdownMenuItem>
5126
5361
  <DropdownMenuItem
5127
5362
  className="text-destructive focus:bg-destructive/10 focus:text-destructive"
@@ -5132,7 +5367,7 @@ function LiveCandidatesActions({
5132
5367
  }}
5133
5368
  >
5134
5369
  <IconTrash className="mr-2 h-4 w-4 shrink-0" />
5135
- Clear all
5370
+ {t("brandKitDetail.clearAll")}
5136
5371
  </DropdownMenuItem>
5137
5372
  </DropdownMenuContent>
5138
5373
  </DropdownMenu>