@docyrus/ui-pro-ai-assistant 0.0.1

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 (308) hide show
  1. package/dist/index.js +26161 -0
  2. package/dist/index.js.map +1 -0
  3. package/package.json +155 -0
  4. package/src/components/assistant-animations.tsx +29 -0
  5. package/src/components/assistant-dialogs.tsx +235 -0
  6. package/src/components/code-view.tsx +278 -0
  7. package/src/components/create-agent-task.tsx +104 -0
  8. package/src/components/create-new-work-version.tsx +30 -0
  9. package/src/components/extract-web.tsx +160 -0
  10. package/src/components/forward-to-agent.tsx +90 -0
  11. package/src/components/generate-chart.tsx +101 -0
  12. package/src/components/generative-action-button.tsx +122 -0
  13. package/src/components/generative-tool.tsx +685 -0
  14. package/src/components/generative-ui-object.tsx +210 -0
  15. package/src/components/input-area.tsx +1209 -0
  16. package/src/components/json-schema-layout.tsx +326 -0
  17. package/src/components/list-item-card.tsx +92 -0
  18. package/src/components/mermaid-diagram.tsx +192 -0
  19. package/src/components/preview-image.tsx +47 -0
  20. package/src/components/request-approval.tsx +48 -0
  21. package/src/components/request-user-input.tsx +270 -0
  22. package/src/components/search-web.tsx +319 -0
  23. package/src/components/sheet-command.tsx +88 -0
  24. package/src/components/shell-canvas.tsx +122 -0
  25. package/src/components/show-advanced-data-table.tsx +352 -0
  26. package/src/components/show-generated-content-options.tsx +93 -0
  27. package/src/components/show-people-cards.tsx +180 -0
  28. package/src/components/subagent-tool.tsx +180 -0
  29. package/src/components/text-editor-tool.tsx +328 -0
  30. package/src/components/work-canvas.tsx +88 -0
  31. package/src/components/work-card.tsx +42 -0
  32. package/src/declarations.d.ts +1 -0
  33. package/src/docy-assistant.tsx +1962 -0
  34. package/src/hooks/index.ts +7 -0
  35. package/src/hooks/use-assistant-api.ts +507 -0
  36. package/src/hooks/use-deployment-data.ts +162 -0
  37. package/src/hooks/use-project-state.ts +347 -0
  38. package/src/hooks/use-session-state.ts +207 -0
  39. package/src/hooks/use-speech-recognition.ts +137 -0
  40. package/src/hooks/use-ui-state.ts +185 -0
  41. package/src/hooks/use-works-state.ts +146 -0
  42. package/src/i18n/context.tsx +253 -0
  43. package/src/i18n/index.ts +19 -0
  44. package/src/i18n/locales/de.json +198 -0
  45. package/src/i18n/locales/el.json +198 -0
  46. package/src/i18n/locales/en.json +226 -0
  47. package/src/i18n/locales/es.json +198 -0
  48. package/src/i18n/locales/fr.json +198 -0
  49. package/src/i18n/locales/it.json +198 -0
  50. package/src/i18n/locales/pt.json +198 -0
  51. package/src/i18n/locales/sl.json +198 -0
  52. package/src/i18n/locales/tr.json +211 -0
  53. package/src/i18n/types.ts +23 -0
  54. package/src/i18n/use-translation.ts +17 -0
  55. package/src/index.ts +18 -0
  56. package/src/internal/plate-editor/editor/auth-context.ts +11 -0
  57. package/src/internal/plate-editor/editor/editor-base-kit.tsx +39 -0
  58. package/src/internal/plate-editor/editor/editor-kit.tsx +89 -0
  59. package/src/internal/plate-editor/editor/plate-editor.tsx +75 -0
  60. package/src/internal/plate-editor/editor/plate-types.ts +126 -0
  61. package/src/internal/plate-editor/editor/plugins/ai-kit.tsx +172 -0
  62. package/src/internal/plate-editor/editor/plugins/autoformat-kit.tsx +211 -0
  63. package/src/internal/plate-editor/editor/plugins/basic-blocks-base-kit.tsx +26 -0
  64. package/src/internal/plate-editor/editor/plugins/basic-blocks-kit.tsx +51 -0
  65. package/src/internal/plate-editor/editor/plugins/basic-marks-base-kit.tsx +24 -0
  66. package/src/internal/plate-editor/editor/plugins/basic-marks-kit.tsx +38 -0
  67. package/src/internal/plate-editor/editor/plugins/basic-nodes-kit.tsx +6 -0
  68. package/src/internal/plate-editor/editor/plugins/block-menu-kit.tsx +14 -0
  69. package/src/internal/plate-editor/editor/plugins/block-placeholder-kit.tsx +17 -0
  70. package/src/internal/plate-editor/editor/plugins/block-selection-kit.tsx +31 -0
  71. package/src/internal/plate-editor/editor/plugins/callout-base-kit.tsx +5 -0
  72. package/src/internal/plate-editor/editor/plugins/callout-kit.tsx +7 -0
  73. package/src/internal/plate-editor/editor/plugins/code-block-base-kit.tsx +23 -0
  74. package/src/internal/plate-editor/editor/plugins/code-block-kit.tsx +26 -0
  75. package/src/internal/plate-editor/editor/plugins/column-base-kit.tsx +8 -0
  76. package/src/internal/plate-editor/editor/plugins/column-kit.tsx +7 -0
  77. package/src/internal/plate-editor/editor/plugins/comment-base-kit.tsx +5 -0
  78. package/src/internal/plate-editor/editor/plugins/comment-kit.tsx +174 -0
  79. package/src/internal/plate-editor/editor/plugins/copilot-kit.tsx +68 -0
  80. package/src/internal/plate-editor/editor/plugins/cursor-overlay-kit.tsx +13 -0
  81. package/src/internal/plate-editor/editor/plugins/date-base-kit.tsx +5 -0
  82. package/src/internal/plate-editor/editor/plugins/date-kit.tsx +7 -0
  83. package/src/internal/plate-editor/editor/plugins/discussion-kit.tsx +36 -0
  84. package/src/internal/plate-editor/editor/plugins/dnd-kit.tsx +27 -0
  85. package/src/internal/plate-editor/editor/plugins/docx-export-kit.tsx +43 -0
  86. package/src/internal/plate-editor/editor/plugins/docx-kit.tsx +6 -0
  87. package/src/internal/plate-editor/editor/plugins/emoji-kit.tsx +15 -0
  88. package/src/internal/plate-editor/editor/plugins/exit-break-kit.tsx +12 -0
  89. package/src/internal/plate-editor/editor/plugins/floating-toolbar-kit.tsx +19 -0
  90. package/src/internal/plate-editor/editor/plugins/font-base-kit.tsx +36 -0
  91. package/src/internal/plate-editor/editor/plugins/font-kit.tsx +47 -0
  92. package/src/internal/plate-editor/editor/plugins/indent-base-kit.tsx +19 -0
  93. package/src/internal/plate-editor/editor/plugins/indent-kit.tsx +22 -0
  94. package/src/internal/plate-editor/editor/plugins/link-base-kit.tsx +5 -0
  95. package/src/internal/plate-editor/editor/plugins/link-kit.tsx +35 -0
  96. package/src/internal/plate-editor/editor/plugins/list-base-kit.tsx +24 -0
  97. package/src/internal/plate-editor/editor/plugins/list-kit.tsx +27 -0
  98. package/src/internal/plate-editor/editor/plugins/markdown-kit.tsx +18 -0
  99. package/src/internal/plate-editor/editor/plugins/math-base-kit.tsx +8 -0
  100. package/src/internal/plate-editor/editor/plugins/math-kit.tsx +10 -0
  101. package/src/internal/plate-editor/editor/plugins/media-base-kit.tsx +37 -0
  102. package/src/internal/plate-editor/editor/plugins/media-kit.tsx +53 -0
  103. package/src/internal/plate-editor/editor/plugins/mention-base-kit.tsx +5 -0
  104. package/src/internal/plate-editor/editor/plugins/mention-kit.tsx +36 -0
  105. package/src/internal/plate-editor/editor/plugins/slash-kit.tsx +17 -0
  106. package/src/internal/plate-editor/editor/plugins/suggestion-base-kit.tsx +5 -0
  107. package/src/internal/plate-editor/editor/plugins/suggestion-kit.tsx +95 -0
  108. package/src/internal/plate-editor/editor/plugins/table-base-kit.tsx +20 -0
  109. package/src/internal/plate-editor/editor/plugins/table-kit.tsx +22 -0
  110. package/src/internal/plate-editor/editor/plugins/toc-base-kit.tsx +5 -0
  111. package/src/internal/plate-editor/editor/plugins/toc-kit.tsx +14 -0
  112. package/src/internal/plate-editor/editor/plugins/toggle-base-kit.tsx +5 -0
  113. package/src/internal/plate-editor/editor/plugins/toggle-kit.tsx +9 -0
  114. package/src/internal/plate-editor/editor/transforms.ts +165 -0
  115. package/src/internal/plate-editor/editor/use-chat.ts +152 -0
  116. package/src/internal/plate-editor/hooks/index.ts +3 -0
  117. package/src/internal/plate-editor/hooks/use-copy-to-clipboard.ts +31 -0
  118. package/src/internal/plate-editor/hooks/use-is-touch-device.ts +26 -0
  119. package/src/internal/plate-editor/hooks/use-lock-scroll.ts +21 -0
  120. package/src/internal/plate-editor/hooks/use-media-query.ts +44 -0
  121. package/src/internal/plate-editor/hooks/use-mounted.ts +18 -0
  122. package/src/internal/plate-editor/hooks/use-on-click-outside.ts +114 -0
  123. package/src/internal/plate-editor/hooks/use-upload-file.ts +81 -0
  124. package/src/internal/plate-editor/i18n/context.tsx +58 -0
  125. package/src/internal/plate-editor/i18n/index.ts +3 -0
  126. package/src/internal/plate-editor/i18n/locales/de.json +57 -0
  127. package/src/internal/plate-editor/i18n/locales/el.json +57 -0
  128. package/src/internal/plate-editor/i18n/locales/en.json +57 -0
  129. package/src/internal/plate-editor/i18n/locales/es.json +57 -0
  130. package/src/internal/plate-editor/i18n/locales/fr.json +57 -0
  131. package/src/internal/plate-editor/i18n/locales/it.json +57 -0
  132. package/src/internal/plate-editor/i18n/locales/pt.json +57 -0
  133. package/src/internal/plate-editor/i18n/locales/sl.json +57 -0
  134. package/src/internal/plate-editor/i18n/locales/tr.json +57 -0
  135. package/src/internal/plate-editor/i18n/types.ts +59 -0
  136. package/src/internal/plate-editor/i18n/use-translation.ts +22 -0
  137. package/src/internal/plate-editor/index.ts +39 -0
  138. package/src/internal/plate-editor/lib/ai-output-converter.ts +153 -0
  139. package/src/internal/plate-editor/lib/download-file.ts +17 -0
  140. package/src/internal/plate-editor/plate-ui/ai-chat-editor.tsx +26 -0
  141. package/src/internal/plate-editor/plate-ui/ai-menu.tsx +828 -0
  142. package/src/internal/plate-editor/plate-ui/ai-node.tsx +41 -0
  143. package/src/internal/plate-editor/plate-ui/ai-toolbar-button.tsx +27 -0
  144. package/src/internal/plate-editor/plate-ui/alert-dialog.tsx +147 -0
  145. package/src/internal/plate-editor/plate-ui/align-toolbar-button.tsx +90 -0
  146. package/src/internal/plate-editor/plate-ui/avatar.tsx +3 -0
  147. package/src/internal/plate-editor/plate-ui/block-context-menu.tsx +106 -0
  148. package/src/internal/plate-editor/plate-ui/block-discussion.tsx +364 -0
  149. package/src/internal/plate-editor/plate-ui/block-draggable.tsx +556 -0
  150. package/src/internal/plate-editor/plate-ui/block-list-static.tsx +78 -0
  151. package/src/internal/plate-editor/plate-ui/block-list.tsx +85 -0
  152. package/src/internal/plate-editor/plate-ui/block-menu.tsx +557 -0
  153. package/src/internal/plate-editor/plate-ui/block-selection.tsx +47 -0
  154. package/src/internal/plate-editor/plate-ui/block-suggestion.tsx +469 -0
  155. package/src/internal/plate-editor/plate-ui/blockquote-node-static.tsx +10 -0
  156. package/src/internal/plate-editor/plate-ui/blockquote-node.tsx +11 -0
  157. package/src/internal/plate-editor/plate-ui/button.tsx +190 -0
  158. package/src/internal/plate-editor/plate-ui/calendar.tsx +3 -0
  159. package/src/internal/plate-editor/plate-ui/callout-node-static.tsx +76 -0
  160. package/src/internal/plate-editor/plate-ui/callout-node.tsx +54 -0
  161. package/src/internal/plate-editor/plate-ui/caption.tsx +48 -0
  162. package/src/internal/plate-editor/plate-ui/checkbox.tsx +3 -0
  163. package/src/internal/plate-editor/plate-ui/code-block-node-static.tsx +172 -0
  164. package/src/internal/plate-editor/plate-ui/code-block-node.tsx +228 -0
  165. package/src/internal/plate-editor/plate-ui/code-node-static.tsx +11 -0
  166. package/src/internal/plate-editor/plate-ui/code-node.tsx +12 -0
  167. package/src/internal/plate-editor/plate-ui/column-node-static.tsx +65 -0
  168. package/src/internal/plate-editor/plate-ui/column-node.tsx +24 -0
  169. package/src/internal/plate-editor/plate-ui/command.tsx +204 -0
  170. package/src/internal/plate-editor/plate-ui/comment-node-static.tsx +12 -0
  171. package/src/internal/plate-editor/plate-ui/comment-node.tsx +45 -0
  172. package/src/internal/plate-editor/plate-ui/comment-toolbar-button.tsx +24 -0
  173. package/src/internal/plate-editor/plate-ui/comment.tsx +619 -0
  174. package/src/internal/plate-editor/plate-ui/cursor-overlay.tsx +85 -0
  175. package/src/internal/plate-editor/plate-ui/date-node-static.tsx +43 -0
  176. package/src/internal/plate-editor/plate-ui/date-node.tsx +56 -0
  177. package/src/internal/plate-editor/plate-ui/dialog.tsx +426 -0
  178. package/src/internal/plate-editor/plate-ui/dropdown-menu.tsx +266 -0
  179. package/src/internal/plate-editor/plate-ui/editor-static.tsx +40 -0
  180. package/src/internal/plate-editor/plate-ui/editor.tsx +148 -0
  181. package/src/internal/plate-editor/plate-ui/emoji-node.tsx +48 -0
  182. package/src/internal/plate-editor/plate-ui/emoji-toolbar-button.tsx +626 -0
  183. package/src/internal/plate-editor/plate-ui/equation-node-static.tsx +155 -0
  184. package/src/internal/plate-editor/plate-ui/equation-node.tsx +226 -0
  185. package/src/internal/plate-editor/plate-ui/equation-toolbar-button.tsx +26 -0
  186. package/src/internal/plate-editor/plate-ui/export-toolbar-button.tsx +208 -0
  187. package/src/internal/plate-editor/plate-ui/fixed-toolbar-buttons.tsx +157 -0
  188. package/src/internal/plate-editor/plate-ui/fixed-toolbar.tsx +27 -0
  189. package/src/internal/plate-editor/plate-ui/floating-discussion.tsx +1129 -0
  190. package/src/internal/plate-editor/plate-ui/floating-toolbar-buttons.tsx +129 -0
  191. package/src/internal/plate-editor/plate-ui/floating-toolbar.tsx +99 -0
  192. package/src/internal/plate-editor/plate-ui/font-color-toolbar-button.tsx +211 -0
  193. package/src/internal/plate-editor/plate-ui/font-size-toolbar-button.tsx +154 -0
  194. package/src/internal/plate-editor/plate-ui/ghost-text.tsx +20 -0
  195. package/src/internal/plate-editor/plate-ui/heading-node-static.tsx +52 -0
  196. package/src/internal/plate-editor/plate-ui/heading-node.tsx +56 -0
  197. package/src/internal/plate-editor/plate-ui/highlight-node-static.tsx +9 -0
  198. package/src/internal/plate-editor/plate-ui/highlight-node.tsx +11 -0
  199. package/src/internal/plate-editor/plate-ui/history-toolbar-button.tsx +52 -0
  200. package/src/internal/plate-editor/plate-ui/hover-card.tsx +7 -0
  201. package/src/internal/plate-editor/plate-ui/hr-node-static.tsx +18 -0
  202. package/src/internal/plate-editor/plate-ui/hr-node.tsx +28 -0
  203. package/src/internal/plate-editor/plate-ui/import-toolbar-button.tsx +124 -0
  204. package/src/internal/plate-editor/plate-ui/indent-toolbar-button.tsx +34 -0
  205. package/src/internal/plate-editor/plate-ui/inline-combobox.tsx +409 -0
  206. package/src/internal/plate-editor/plate-ui/input.tsx +39 -0
  207. package/src/internal/plate-editor/plate-ui/insert-toolbar-button.tsx +260 -0
  208. package/src/internal/plate-editor/plate-ui/label.tsx +1 -0
  209. package/src/internal/plate-editor/plate-ui/line-height-toolbar-button.tsx +71 -0
  210. package/src/internal/plate-editor/plate-ui/link-node-static.tsx +15 -0
  211. package/src/internal/plate-editor/plate-ui/link-node.tsx +33 -0
  212. package/src/internal/plate-editor/plate-ui/link-toolbar-button.tsx +30 -0
  213. package/src/internal/plate-editor/plate-ui/link-toolbar.tsx +149 -0
  214. package/src/internal/plate-editor/plate-ui/list-toolbar-button.tsx +179 -0
  215. package/src/internal/plate-editor/plate-ui/mark-toolbar-button.tsx +36 -0
  216. package/src/internal/plate-editor/plate-ui/media-audio-node-static.tsx +21 -0
  217. package/src/internal/plate-editor/plate-ui/media-audio-node.tsx +32 -0
  218. package/src/internal/plate-editor/plate-ui/media-embed-node.tsx +103 -0
  219. package/src/internal/plate-editor/plate-ui/media-file-node-static.tsx +30 -0
  220. package/src/internal/plate-editor/plate-ui/media-file-node.tsx +52 -0
  221. package/src/internal/plate-editor/plate-ui/media-image-node-static.tsx +37 -0
  222. package/src/internal/plate-editor/plate-ui/media-image-node.tsx +183 -0
  223. package/src/internal/plate-editor/plate-ui/media-placeholder-node.tsx +441 -0
  224. package/src/internal/plate-editor/plate-ui/media-preview-dialog.tsx +127 -0
  225. package/src/internal/plate-editor/plate-ui/media-toolbar-button.tsx +229 -0
  226. package/src/internal/plate-editor/plate-ui/media-toolbar.tsx +216 -0
  227. package/src/internal/plate-editor/plate-ui/media-upload-toast.tsx +73 -0
  228. package/src/internal/plate-editor/plate-ui/media-video-node-static.tsx +35 -0
  229. package/src/internal/plate-editor/plate-ui/media-video-node.tsx +119 -0
  230. package/src/internal/plate-editor/plate-ui/mention-node-static.tsx +46 -0
  231. package/src/internal/plate-editor/plate-ui/mention-node.tsx +79 -0
  232. package/src/internal/plate-editor/plate-ui/menu.tsx +532 -0
  233. package/src/internal/plate-editor/plate-ui/mode-toolbar-button.tsx +126 -0
  234. package/src/internal/plate-editor/plate-ui/more-toolbar-button.tsx +34 -0
  235. package/src/internal/plate-editor/plate-ui/paragraph-node-static.tsx +15 -0
  236. package/src/internal/plate-editor/plate-ui/paragraph-node.tsx +16 -0
  237. package/src/internal/plate-editor/plate-ui/popover.tsx +77 -0
  238. package/src/internal/plate-editor/plate-ui/progress.tsx +1 -0
  239. package/src/internal/plate-editor/plate-ui/remote-cursor-overlay.tsx +81 -0
  240. package/src/internal/plate-editor/plate-ui/resize-handle.tsx +88 -0
  241. package/src/internal/plate-editor/plate-ui/separator.tsx +43 -0
  242. package/src/internal/plate-editor/plate-ui/slash-node.tsx +435 -0
  243. package/src/internal/plate-editor/plate-ui/spinner.tsx +1 -0
  244. package/src/internal/plate-editor/plate-ui/suggestion-node-static.tsx +35 -0
  245. package/src/internal/plate-editor/plate-ui/suggestion-node.tsx +168 -0
  246. package/src/internal/plate-editor/plate-ui/suggestion-toolbar-button.tsx +24 -0
  247. package/src/internal/plate-editor/plate-ui/table-node-static.tsx +85 -0
  248. package/src/internal/plate-editor/plate-ui/table-node.tsx +285 -0
  249. package/src/internal/plate-editor/plate-ui/table-toolbar-button.tsx +254 -0
  250. package/src/internal/plate-editor/plate-ui/tabs.tsx +3 -0
  251. package/src/internal/plate-editor/plate-ui/textarea.tsx +58 -0
  252. package/src/internal/plate-editor/plate-ui/toc-node-static.tsx +142 -0
  253. package/src/internal/plate-editor/plate-ui/toc-node.tsx +57 -0
  254. package/src/internal/plate-editor/plate-ui/toc-sidebar.tsx +50 -0
  255. package/src/internal/plate-editor/plate-ui/toggle-node-static.tsx +18 -0
  256. package/src/internal/plate-editor/plate-ui/toggle-node.tsx +33 -0
  257. package/src/internal/plate-editor/plate-ui/toggle-toolbar-button.tsx +26 -0
  258. package/src/internal/plate-editor/plate-ui/toggle.tsx +3 -0
  259. package/src/internal/plate-editor/plate-ui/toolbar.tsx +380 -0
  260. package/src/internal/plate-editor/plate-ui/tooltip.tsx +149 -0
  261. package/src/internal/plate-editor/plate-ui/turn-into-toolbar-button.tsx +177 -0
  262. package/src/internal/plate-editor/types/index.ts +22 -0
  263. package/src/internal/plate-editor/vite.ts +284 -0
  264. package/src/internal/sheets/components/univer-sheets.tsx +1104 -0
  265. package/src/internal/sheets/i18n/context.tsx +183 -0
  266. package/src/internal/sheets/i18n/index.ts +19 -0
  267. package/src/internal/sheets/i18n/locales/de.json +21 -0
  268. package/src/internal/sheets/i18n/locales/el.json +21 -0
  269. package/src/internal/sheets/i18n/locales/en.json +21 -0
  270. package/src/internal/sheets/i18n/locales/es.json +21 -0
  271. package/src/internal/sheets/i18n/locales/fr.json +21 -0
  272. package/src/internal/sheets/i18n/locales/it.json +21 -0
  273. package/src/internal/sheets/i18n/locales/pt.json +21 -0
  274. package/src/internal/sheets/i18n/locales/sl.json +21 -0
  275. package/src/internal/sheets/i18n/locales/tr.json +21 -0
  276. package/src/internal/sheets/i18n/types.ts +23 -0
  277. package/src/internal/sheets/i18n/use-translation.ts +17 -0
  278. package/src/internal/sheets/index.ts +14 -0
  279. package/src/internal/sheets/types/css.d.ts +11 -0
  280. package/src/internal/sheets/types/index.ts +260 -0
  281. package/src/internal/sheets/xlsx.ts +1169 -0
  282. package/src/lib/api-client.ts +77 -0
  283. package/src/lib/assistant-api-actions.ts +549 -0
  284. package/src/lib/assistant-config.tsx +71 -0
  285. package/src/lib/class-utils.ts +40 -0
  286. package/src/lib/index.ts +7 -0
  287. package/src/lib/message-utils.ts +131 -0
  288. package/src/tools/tools-schema.json +512 -0
  289. package/src/types/index.ts +235 -0
  290. package/src/views/assistant-view.tsx +1137 -0
  291. package/src/views/canvas-app.tsx +839 -0
  292. package/src/views/canvas-code.tsx +93 -0
  293. package/src/views/canvas-deep-research.tsx +44 -0
  294. package/src/views/canvas-image.tsx +25 -0
  295. package/src/views/canvas-record-view.tsx +285 -0
  296. package/src/views/canvas-spreadsheet.tsx +125 -0
  297. package/src/views/canvas-text.tsx +52 -0
  298. package/src/views/canvas.tsx +274 -0
  299. package/src/views/chat-panel.tsx +149 -0
  300. package/src/views/index.ts +20 -0
  301. package/src/views/memories-panel.tsx +365 -0
  302. package/src/views/message-list.tsx +370 -0
  303. package/src/views/project-detail.tsx +257 -0
  304. package/src/views/projects-panel.tsx +131 -0
  305. package/src/views/sessions-list.tsx +98 -0
  306. package/src/views/sidebar-content.tsx +256 -0
  307. package/src/views/work-detail.tsx +98 -0
  308. package/src/vite.ts +284 -0
@@ -0,0 +1,114 @@
1
+ import {
2
+ useEffect, useLayoutEffect, useRef, type RefObject
3
+ } from 'react';
4
+
5
+ /**
6
+ * Determines the appropriate effect hook to use based on the environment. If
7
+ * the code is running on the client-side (browser), it uses the
8
+ * `useLayoutEffect` hook, otherwise, it uses the `useEffect` hook.
9
+ */
10
+ export const useIsomorphicLayoutEffect
11
+ = typeof window === 'undefined' ? useEffect : useLayoutEffect;
12
+
13
+ // MediaQueryList Event based useEventListener interface
14
+ export function useEventListener<K extends keyof MediaQueryListEventMap>(
15
+ eventName: K,
16
+ handler: (event: MediaQueryListEventMap[K]) => void,
17
+ element: RefObject<MediaQueryList>,
18
+ options?: AddEventListenerOptions | boolean
19
+ ): void;
20
+
21
+ // Window Event based useEventListener interface
22
+ export function useEventListener<K extends keyof WindowEventMap>(
23
+ eventName: K,
24
+ handler: (event: WindowEventMap[K]) => void,
25
+ element?: undefined,
26
+ options?: AddEventListenerOptions | boolean
27
+ ): void;
28
+
29
+ // Element Event based useEventListener interface
30
+ export function useEventListener<
31
+ K extends keyof HTMLElementEventMap,
32
+ T extends HTMLElement = HTMLDivElement
33
+ >(
34
+ eventName: K,
35
+ handler: (event: HTMLElementEventMap[K]) => void,
36
+ element: RefObject<T>,
37
+ options?: AddEventListenerOptions | boolean
38
+ ): void;
39
+
40
+ // Document Event based useEventListener interface
41
+ export function useEventListener<K extends keyof DocumentEventMap>(
42
+ eventName: K,
43
+ handler: (event: DocumentEventMap[K]) => void,
44
+ element: RefObject<Document>,
45
+ options?: AddEventListenerOptions | boolean
46
+ ): void;
47
+
48
+ // https://usehooks-ts.com/react-hook/use-event-listener
49
+ export function useEventListener<
50
+ KW extends keyof WindowEventMap,
51
+ KH extends keyof HTMLElementEventMap,
52
+ KM extends keyof MediaQueryListEventMap,
53
+ T extends HTMLElement | MediaQueryList | void = void
54
+ >(
55
+ eventName: KH | KM | KW,
56
+ handler: (
57
+ event:
58
+ | Event
59
+ | HTMLElementEventMap[KH]
60
+ | MediaQueryListEventMap[KM]
61
+ | WindowEventMap[KW]
62
+ ) => void,
63
+ element?: RefObject<T>,
64
+ options?: AddEventListenerOptions | boolean
65
+ ) {
66
+ // Create a ref that stores handler
67
+ const savedHandler = useRef(handler);
68
+
69
+ useIsomorphicLayoutEffect(() => {
70
+ savedHandler.current = handler;
71
+ }, [handler]);
72
+
73
+ useEffect(() => {
74
+ // Define the listening target
75
+ const targetElement: T | Window = element?.current ?? window;
76
+
77
+ if (!targetElement?.addEventListener) return;
78
+
79
+ // Create event listener that calls handler function stored in ref
80
+ const listener: typeof handler = event => savedHandler.current(event);
81
+
82
+ targetElement.addEventListener(eventName, listener, options);
83
+
84
+ // Remove event listener on cleanup
85
+ return () => {
86
+ targetElement.removeEventListener(eventName, listener, options);
87
+ };
88
+ }, [eventName, element, options]);
89
+ }
90
+
91
+ type Handler = (event: MouseEvent) => void;
92
+
93
+ /**
94
+ * Attaches an event listener to detect clicks that occur outside a given
95
+ * element.
96
+ */
97
+ export const useOnClickOutside = <T extends HTMLElement = HTMLElement>(
98
+ ref: RefObject<T | null>,
99
+ handler?: Handler,
100
+ mouseEvent: 'mousedown' | 'mouseup' = 'mousedown'
101
+ ): void => {
102
+ useEventListener(mouseEvent, (event) => {
103
+ if (!handler) return;
104
+
105
+ const el = ref?.current;
106
+
107
+ // Do nothing if clicking ref's element or descendent elements
108
+ if (!el || el.contains(event.target as Node)) {
109
+ return;
110
+ }
111
+
112
+ handler(event);
113
+ });
114
+ };
@@ -0,0 +1,81 @@
1
+ import { useState } from 'react';
2
+
3
+ import { toast } from 'sonner';
4
+
5
+ export interface UploadedFile {
6
+ key: string;
7
+ appUrl: string;
8
+ name: string;
9
+ size: number;
10
+ type: string;
11
+ url: string;
12
+ }
13
+
14
+ interface UseUploadFileProps {
15
+ defaultUploadedFiles?: UploadedFile[];
16
+ onUploadComplete?: (file: UploadedFile) => void;
17
+ onUploadError?: (error: unknown) => void;
18
+ }
19
+
20
+ export function useUploadFile({
21
+ onUploadComplete,
22
+ onUploadError
23
+ }: UseUploadFileProps = {}) {
24
+ const [uploadedFile, setUploadedFile] = useState<UploadedFile>();
25
+ const [uploadingFile, setUploadingFile] = useState<File>();
26
+ const [progress, setProgress] = useState<number>(0);
27
+ const [isUploading, setIsUploading] = useState(false);
28
+
29
+ async function uploadFile(file: File) {
30
+ setIsUploading(true);
31
+ setUploadingFile(file);
32
+
33
+ try {
34
+ // Mock upload - replace with actual upload implementation
35
+ const mockUploadedFile: UploadedFile = {
36
+ key: `mock-key-${Date.now()}`,
37
+ appUrl: `https://mock-app-url.com/${file.name}`,
38
+ name: file.name,
39
+ size: file.size,
40
+ type: file.type,
41
+ url: URL.createObjectURL(file)
42
+ };
43
+
44
+ // Simulate upload progress
45
+ let currentProgress = 0;
46
+
47
+ const simulateProgress = async () => {
48
+ while (currentProgress < 100) {
49
+ await new Promise(resolve => setTimeout(resolve, 50));
50
+ currentProgress += 2;
51
+ setProgress(Math.min(currentProgress, 100));
52
+ }
53
+ };
54
+
55
+ await simulateProgress();
56
+
57
+ setUploadedFile(mockUploadedFile);
58
+ onUploadComplete?.(mockUploadedFile);
59
+
60
+ return mockUploadedFile;
61
+ } catch (error) {
62
+ const errorMessage
63
+ = error instanceof Error ? error.message : 'Something went wrong, please try again later.';
64
+
65
+ toast.error(errorMessage);
66
+ onUploadError?.(error);
67
+ } finally {
68
+ setProgress(0);
69
+ setIsUploading(false);
70
+ setUploadingFile(undefined);
71
+ }
72
+ }
73
+
74
+ return {
75
+ isUploading,
76
+ progress,
77
+ uploadedFile,
78
+ uploadFile,
79
+ uploadingFile
80
+ };
81
+ }
@@ -0,0 +1,58 @@
1
+ 'use client';
2
+
3
+ import { createContext, use, type ReactNode } from 'react';
4
+
5
+ import { type Locale, type PlateEditorTranslations } from './types';
6
+
7
+ // Import all locales
8
+ import de from './locales/de.json';
9
+ import el from './locales/el.json';
10
+ import en from './locales/en.json';
11
+ import es from './locales/es.json';
12
+ import fr from './locales/fr.json';
13
+ import it from './locales/it.json';
14
+ import pt from './locales/pt.json';
15
+ import sl from './locales/sl.json';
16
+ import tr from './locales/tr.json';
17
+
18
+ const localeMap: Record<Locale, PlateEditorTranslations> = {
19
+ de: de as unknown as PlateEditorTranslations,
20
+ el: el as unknown as PlateEditorTranslations,
21
+ en: en as unknown as PlateEditorTranslations,
22
+ es: es as unknown as PlateEditorTranslations,
23
+ fr: fr as unknown as PlateEditorTranslations,
24
+ it: it as unknown as PlateEditorTranslations,
25
+ pt: pt as unknown as PlateEditorTranslations,
26
+ sl: sl as unknown as PlateEditorTranslations,
27
+ tr: tr as unknown as PlateEditorTranslations
28
+ };
29
+
30
+ interface PlateEditorI18nContextValue {
31
+ locale: Locale;
32
+ translations: PlateEditorTranslations;
33
+ }
34
+
35
+ const PlateEditorI18nContext = createContext<PlateEditorI18nContextValue>({
36
+ locale: 'en',
37
+ translations: localeMap.en
38
+ });
39
+
40
+ export function PlateEditorI18nProvider({
41
+ children,
42
+ locale = 'en'
43
+ }: {
44
+ children: ReactNode;
45
+ locale?: Locale;
46
+ }) {
47
+ const translations = localeMap[locale] || localeMap.en;
48
+
49
+ return (
50
+ <PlateEditorI18nContext value={{ locale, translations }}>
51
+ {children}
52
+ </PlateEditorI18nContext>
53
+ );
54
+ }
55
+
56
+ export function usePlateEditorI18n() {
57
+ return use(PlateEditorI18nContext);
58
+ }
@@ -0,0 +1,3 @@
1
+ export { PlateEditorI18nProvider, usePlateEditorI18n } from './context';
2
+ export { usePlateEditorTranslation } from './use-translation';
3
+ export type { Locale, PlateEditorTranslations } from './types';
@@ -0,0 +1,57 @@
1
+ {
2
+ "toolbar": {
3
+ "bold": "Fett",
4
+ "italic": "Kursiv",
5
+ "underline": "Unterstrichen",
6
+ "strikethrough": "Durchgestrichen",
7
+ "code": "Code",
8
+ "heading1": "Überschrift 1",
9
+ "heading2": "Überschrift 2",
10
+ "heading3": "Überschrift 3",
11
+ "bulletList": "Aufzählung",
12
+ "numberedList": "Nummerierte Liste",
13
+ "todoList": "Aufgabenliste",
14
+ "blockquote": "Zitat",
15
+ "codeBlock": "Codeblock",
16
+ "table": "Tabelle",
17
+ "image": "Bild",
18
+ "link": "Link",
19
+ "align_left": "Linksbündig",
20
+ "align_center": "Zentriert",
21
+ "align_right": "Rechtsbündig",
22
+ "undo": "Rückgängig",
23
+ "redo": "Wiederholen"
24
+ },
25
+ "slash": {
26
+ "placeholder": "Befehl eingeben...",
27
+ "noResults": "Keine Ergebnisse",
28
+ "groups": {
29
+ "basic": "Grundbausteine",
30
+ "media": "Medien",
31
+ "advanced": "Erweitert"
32
+ }
33
+ },
34
+ "ai": {
35
+ "placeholder": "KI um Bearbeitung oder Erstellung bitten...",
36
+ "generating": "Wird generiert...",
37
+ "improve": "Text verbessern",
38
+ "simplify": "Vereinfachen",
39
+ "expand": "Verlängern",
40
+ "summarize": "Zusammenfassen",
41
+ "translate": "Übersetzen",
42
+ "fixGrammar": "Grammatik korrigieren"
43
+ },
44
+ "media": {
45
+ "upload": "Hochladen",
46
+ "embedLink": "Link einbetten",
47
+ "maxSize": "Maximale Dateigröße: 5MB",
48
+ "uploadImage": "Bild hochladen",
49
+ "uploadVideo": "Video hochladen",
50
+ "uploadAudio": "Audio hochladen",
51
+ "uploadFile": "Datei hochladen"
52
+ },
53
+ "placeholder": {
54
+ "paragraph": "'/' für Befehle eingeben...",
55
+ "heading": "Überschrift"
56
+ }
57
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "toolbar": {
3
+ "bold": "Έντονα",
4
+ "italic": "Πλάγια",
5
+ "underline": "Υπογράμμιση",
6
+ "strikethrough": "Διαγράμμιση",
7
+ "code": "Κώδικας",
8
+ "heading1": "Επικεφαλίδα 1",
9
+ "heading2": "Επικεφαλίδα 2",
10
+ "heading3": "Επικεφαλίδα 3",
11
+ "bulletList": "Λίστα με κουκκίδες",
12
+ "numberedList": "Αριθμημένη λίστα",
13
+ "todoList": "Λίστα εργασιών",
14
+ "blockquote": "Παράθεση",
15
+ "codeBlock": "Μπλοκ κώδικα",
16
+ "table": "Πίνακας",
17
+ "image": "Εικόνα",
18
+ "link": "Σύνδεσμος",
19
+ "align_left": "Αριστερά",
20
+ "align_center": "Κέντρο",
21
+ "align_right": "Δεξιά",
22
+ "undo": "Αναίρεση",
23
+ "redo": "Επανάληψη"
24
+ },
25
+ "slash": {
26
+ "placeholder": "Πληκτρολογήστε εντολή...",
27
+ "noResults": "Χωρίς αποτελέσματα",
28
+ "groups": {
29
+ "basic": "Βασικά μπλοκ",
30
+ "media": "Πολυμέσα",
31
+ "advanced": "Προηγμένα"
32
+ }
33
+ },
34
+ "ai": {
35
+ "placeholder": "Ζητήστε από το AI να επεξεργαστεί ή να δημιουργήσει...",
36
+ "generating": "Δημιουργία...",
37
+ "improve": "Βελτίωση γραφής",
38
+ "simplify": "Απλοποίηση",
39
+ "expand": "Επέκταση",
40
+ "summarize": "Σύνοψη",
41
+ "translate": "Μετάφραση",
42
+ "fixGrammar": "Διόρθωση γραμματικής"
43
+ },
44
+ "media": {
45
+ "upload": "Μεταφόρτωση",
46
+ "embedLink": "Ενσωμάτωση συνδέσμου",
47
+ "maxSize": "Μέγιστο μέγεθος αρχείου 5MB",
48
+ "uploadImage": "Μεταφόρτωση εικόνας",
49
+ "uploadVideo": "Μεταφόρτωση βίντεο",
50
+ "uploadAudio": "Μεταφόρτωση ήχου",
51
+ "uploadFile": "Μεταφόρτωση αρχείου"
52
+ },
53
+ "placeholder": {
54
+ "paragraph": "Πληκτρολογήστε '/' για εντολές...",
55
+ "heading": "Επικεφαλίδα"
56
+ }
57
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "toolbar": {
3
+ "bold": "Bold",
4
+ "italic": "Italic",
5
+ "underline": "Underline",
6
+ "strikethrough": "Strikethrough",
7
+ "code": "Code",
8
+ "heading1": "Heading 1",
9
+ "heading2": "Heading 2",
10
+ "heading3": "Heading 3",
11
+ "bulletList": "Bullet List",
12
+ "numberedList": "Numbered List",
13
+ "todoList": "To-do List",
14
+ "blockquote": "Blockquote",
15
+ "codeBlock": "Code Block",
16
+ "table": "Table",
17
+ "image": "Image",
18
+ "link": "Link",
19
+ "align_left": "Align Left",
20
+ "align_center": "Align Center",
21
+ "align_right": "Align Right",
22
+ "undo": "Undo",
23
+ "redo": "Redo"
24
+ },
25
+ "slash": {
26
+ "placeholder": "Type a command...",
27
+ "noResults": "No results",
28
+ "groups": {
29
+ "basic": "Basic Blocks",
30
+ "media": "Media",
31
+ "advanced": "Advanced"
32
+ }
33
+ },
34
+ "ai": {
35
+ "placeholder": "Ask AI to edit or generate...",
36
+ "generating": "Generating...",
37
+ "improve": "Improve writing",
38
+ "simplify": "Simplify",
39
+ "expand": "Make longer",
40
+ "summarize": "Summarize",
41
+ "translate": "Translate",
42
+ "fixGrammar": "Fix grammar"
43
+ },
44
+ "media": {
45
+ "upload": "Upload",
46
+ "embedLink": "Embed link",
47
+ "maxSize": "The maximum size per file is 5MB",
48
+ "uploadImage": "Upload image",
49
+ "uploadVideo": "Upload video",
50
+ "uploadAudio": "Upload audio",
51
+ "uploadFile": "Upload file"
52
+ },
53
+ "placeholder": {
54
+ "paragraph": "Type '/' for commands...",
55
+ "heading": "Heading"
56
+ }
57
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "toolbar": {
3
+ "bold": "Negrita",
4
+ "italic": "Cursiva",
5
+ "underline": "Subrayado",
6
+ "strikethrough": "Tachado",
7
+ "code": "Código",
8
+ "heading1": "Encabezado 1",
9
+ "heading2": "Encabezado 2",
10
+ "heading3": "Encabezado 3",
11
+ "bulletList": "Lista con viñetas",
12
+ "numberedList": "Lista numerada",
13
+ "todoList": "Lista de tareas",
14
+ "blockquote": "Cita",
15
+ "codeBlock": "Bloque de código",
16
+ "table": "Tabla",
17
+ "image": "Imagen",
18
+ "link": "Enlace",
19
+ "align_left": "Alinear a la izquierda",
20
+ "align_center": "Centrar",
21
+ "align_right": "Alinear a la derecha",
22
+ "undo": "Deshacer",
23
+ "redo": "Rehacer"
24
+ },
25
+ "slash": {
26
+ "placeholder": "Escribe un comando...",
27
+ "noResults": "Sin resultados",
28
+ "groups": {
29
+ "basic": "Bloques básicos",
30
+ "media": "Medios",
31
+ "advanced": "Avanzado"
32
+ }
33
+ },
34
+ "ai": {
35
+ "placeholder": "Pide a la IA que edite o genere...",
36
+ "generating": "Generando...",
37
+ "improve": "Mejorar escritura",
38
+ "simplify": "Simplificar",
39
+ "expand": "Ampliar",
40
+ "summarize": "Resumir",
41
+ "translate": "Traducir",
42
+ "fixGrammar": "Corregir gramática"
43
+ },
44
+ "media": {
45
+ "upload": "Subir",
46
+ "embedLink": "Enlace incrustado",
47
+ "maxSize": "Tamaño máximo por archivo: 5MB",
48
+ "uploadImage": "Subir imagen",
49
+ "uploadVideo": "Subir video",
50
+ "uploadAudio": "Subir audio",
51
+ "uploadFile": "Subir archivo"
52
+ },
53
+ "placeholder": {
54
+ "paragraph": "Escribe '/' para comandos...",
55
+ "heading": "Encabezado"
56
+ }
57
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "toolbar": {
3
+ "bold": "Gras",
4
+ "italic": "Italique",
5
+ "underline": "Souligné",
6
+ "strikethrough": "Barré",
7
+ "code": "Code",
8
+ "heading1": "Titre 1",
9
+ "heading2": "Titre 2",
10
+ "heading3": "Titre 3",
11
+ "bulletList": "Liste à puces",
12
+ "numberedList": "Liste numérotée",
13
+ "todoList": "Liste de tâches",
14
+ "blockquote": "Citation",
15
+ "codeBlock": "Bloc de code",
16
+ "table": "Tableau",
17
+ "image": "Image",
18
+ "link": "Lien",
19
+ "align_left": "Aligner à gauche",
20
+ "align_center": "Centrer",
21
+ "align_right": "Aligner à droite",
22
+ "undo": "Annuler",
23
+ "redo": "Rétablir"
24
+ },
25
+ "slash": {
26
+ "placeholder": "Tapez une commande...",
27
+ "noResults": "Aucun résultat",
28
+ "groups": {
29
+ "basic": "Blocs de base",
30
+ "media": "Médias",
31
+ "advanced": "Avancé"
32
+ }
33
+ },
34
+ "ai": {
35
+ "placeholder": "Demandez à l'IA de modifier ou générer...",
36
+ "generating": "Génération...",
37
+ "improve": "Améliorer l'écriture",
38
+ "simplify": "Simplifier",
39
+ "expand": "Allonger",
40
+ "summarize": "Résumer",
41
+ "translate": "Traduire",
42
+ "fixGrammar": "Corriger la grammaire"
43
+ },
44
+ "media": {
45
+ "upload": "Télécharger",
46
+ "embedLink": "Intégrer un lien",
47
+ "maxSize": "Taille maximale par fichier : 5 Mo",
48
+ "uploadImage": "Télécharger une image",
49
+ "uploadVideo": "Télécharger une vidéo",
50
+ "uploadAudio": "Télécharger un audio",
51
+ "uploadFile": "Télécharger un fichier"
52
+ },
53
+ "placeholder": {
54
+ "paragraph": "Tapez '/' pour les commandes...",
55
+ "heading": "Titre"
56
+ }
57
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "toolbar": {
3
+ "bold": "Grassetto",
4
+ "italic": "Corsivo",
5
+ "underline": "Sottolineato",
6
+ "strikethrough": "Barrato",
7
+ "code": "Codice",
8
+ "heading1": "Titolo 1",
9
+ "heading2": "Titolo 2",
10
+ "heading3": "Titolo 3",
11
+ "bulletList": "Elenco puntato",
12
+ "numberedList": "Elenco numerato",
13
+ "todoList": "Lista attività",
14
+ "blockquote": "Citazione",
15
+ "codeBlock": "Blocco di codice",
16
+ "table": "Tabella",
17
+ "image": "Immagine",
18
+ "link": "Collegamento",
19
+ "align_left": "Allinea a sinistra",
20
+ "align_center": "Centra",
21
+ "align_right": "Allinea a destra",
22
+ "undo": "Annulla",
23
+ "redo": "Ripeti"
24
+ },
25
+ "slash": {
26
+ "placeholder": "Digita un comando...",
27
+ "noResults": "Nessun risultato",
28
+ "groups": {
29
+ "basic": "Blocchi di base",
30
+ "media": "Media",
31
+ "advanced": "Avanzato"
32
+ }
33
+ },
34
+ "ai": {
35
+ "placeholder": "Chiedi all'IA di modificare o generare...",
36
+ "generating": "Generazione...",
37
+ "improve": "Migliora scrittura",
38
+ "simplify": "Semplifica",
39
+ "expand": "Espandi",
40
+ "summarize": "Riassumi",
41
+ "translate": "Traduci",
42
+ "fixGrammar": "Correggi grammatica"
43
+ },
44
+ "media": {
45
+ "upload": "Carica",
46
+ "embedLink": "Incorpora link",
47
+ "maxSize": "Dimensione massima per file: 5MB",
48
+ "uploadImage": "Carica immagine",
49
+ "uploadVideo": "Carica video",
50
+ "uploadAudio": "Carica audio",
51
+ "uploadFile": "Carica file"
52
+ },
53
+ "placeholder": {
54
+ "paragraph": "Digita '/' per i comandi...",
55
+ "heading": "Titolo"
56
+ }
57
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "toolbar": {
3
+ "bold": "Negrito",
4
+ "italic": "Itálico",
5
+ "underline": "Sublinhado",
6
+ "strikethrough": "Tachado",
7
+ "code": "Código",
8
+ "heading1": "Título 1",
9
+ "heading2": "Título 2",
10
+ "heading3": "Título 3",
11
+ "bulletList": "Lista com marcadores",
12
+ "numberedList": "Lista numerada",
13
+ "todoList": "Lista de tarefas",
14
+ "blockquote": "Citação",
15
+ "codeBlock": "Bloco de código",
16
+ "table": "Tabela",
17
+ "image": "Imagem",
18
+ "link": "Link",
19
+ "align_left": "Alinhar à esquerda",
20
+ "align_center": "Centralizar",
21
+ "align_right": "Alinhar à direita",
22
+ "undo": "Desfazer",
23
+ "redo": "Refazer"
24
+ },
25
+ "slash": {
26
+ "placeholder": "Digite um comando...",
27
+ "noResults": "Sem resultados",
28
+ "groups": {
29
+ "basic": "Blocos básicos",
30
+ "media": "Mídia",
31
+ "advanced": "Avançado"
32
+ }
33
+ },
34
+ "ai": {
35
+ "placeholder": "Peça à IA para editar ou gerar...",
36
+ "generating": "Gerando...",
37
+ "improve": "Melhorar texto",
38
+ "simplify": "Simplificar",
39
+ "expand": "Expandir",
40
+ "summarize": "Resumir",
41
+ "translate": "Traduzir",
42
+ "fixGrammar": "Corrigir gramática"
43
+ },
44
+ "media": {
45
+ "upload": "Carregar",
46
+ "embedLink": "Incorporar link",
47
+ "maxSize": "Tamanho máximo por arquivo: 5MB",
48
+ "uploadImage": "Carregar imagem",
49
+ "uploadVideo": "Carregar vídeo",
50
+ "uploadAudio": "Carregar áudio",
51
+ "uploadFile": "Carregar arquivo"
52
+ },
53
+ "placeholder": {
54
+ "paragraph": "Digite '/' para comandos...",
55
+ "heading": "Título"
56
+ }
57
+ }