@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,68 @@
1
+ 'use client';
2
+
3
+ import { type TElement } from 'platejs';
4
+
5
+ import { CopilotPlugin } from '@platejs/ai/react';
6
+ import { serializeMd, stripMarkdown } from '@platejs/markdown';
7
+
8
+ import { MarkdownKit } from './markdown-kit';
9
+
10
+ import { GhostText } from '../../plate-ui/ghost-text';
11
+
12
+ export const CopilotKit = [
13
+ ...MarkdownKit,
14
+ CopilotPlugin.configure(({ api }) => ({
15
+ options: {
16
+ completeOptions: {
17
+ api: '/api/ai/copilot',
18
+ fetch: (input, init) => {
19
+ const token = localStorage.getItem('docyrus_access_token');
20
+ const headers = new Headers(init?.headers);
21
+
22
+ if (token) {
23
+ headers.set('Authorization', `Bearer ${token}`);
24
+ }
25
+
26
+ return globalThis.fetch(input, { ...init, headers });
27
+ },
28
+ onFinish: (_, completion) => {
29
+ if (completion === '0') return;
30
+
31
+ api.copilot.setBlockSuggestion({
32
+ text: stripMarkdown(completion)
33
+ });
34
+ }
35
+ },
36
+ debounceDelay: 500,
37
+ renderGhostText: GhostText as any,
38
+ getPrompt: ({ editor }) => {
39
+ const contextEntry = editor.api.block({ highest: true });
40
+
41
+ if (!contextEntry) return '';
42
+
43
+ const prompt = serializeMd(editor, {
44
+ value: [contextEntry[0] as TElement]
45
+ });
46
+
47
+ return `Continue the text up to the next punctuation mark:
48
+ """
49
+ ${prompt}
50
+ """`;
51
+ }
52
+ },
53
+ shortcuts: {
54
+ accept: {
55
+ keys: 'tab'
56
+ },
57
+ acceptNextWord: {
58
+ keys: 'mod+right'
59
+ },
60
+ reject: {
61
+ keys: 'escape'
62
+ },
63
+ triggerSuggestion: {
64
+ keys: 'ctrl+space'
65
+ }
66
+ }
67
+ }))
68
+ ];
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+
3
+ import { CursorOverlayPlugin } from '@platejs/selection/react';
4
+
5
+ import { CursorOverlay } from '../../plate-ui/cursor-overlay';
6
+
7
+ export const CursorOverlayKit = [
8
+ CursorOverlayPlugin.configure({
9
+ render: {
10
+ afterEditable: () => <CursorOverlay />
11
+ }
12
+ })
13
+ ];
@@ -0,0 +1,5 @@
1
+ import { BaseDatePlugin } from '@platejs/date';
2
+
3
+ import { DateElementStatic } from '../../plate-ui/date-node-static';
4
+
5
+ export const BaseDateKit = [BaseDatePlugin.withComponent(DateElementStatic)];
@@ -0,0 +1,7 @@
1
+ 'use client';
2
+
3
+ import { DatePlugin } from '@platejs/date/react';
4
+
5
+ import { DateElement } from '../../plate-ui/date-node';
6
+
7
+ export const DateKit = [DatePlugin.withComponent(DateElement)];
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+
3
+ import { createPlatePlugin } from 'platejs/react';
4
+
5
+ import { type TComment } from '../../plate-ui/comment';
6
+
7
+ import { BlockDiscussion } from '../../plate-ui/block-discussion';
8
+
9
+ export type TDiscussion = {
10
+ id: string;
11
+ comments: TComment[];
12
+ createdAt: Date;
13
+ isResolved: boolean;
14
+ userId: string;
15
+ documentContent?: string;
16
+ };
17
+
18
+ export const discussionPlugin = createPlatePlugin({
19
+ key: 'discussion',
20
+ options: {
21
+ currentUserId: 'default',
22
+ discussions: [] as TDiscussion[],
23
+ users: {} as Record<string, {
24
+ id: string; avatarUrl: string; name: string; hue?: number;
25
+ }>
26
+ }
27
+ })
28
+ .configure({
29
+ render: { aboveNodes: BlockDiscussion }
30
+ })
31
+ .extendSelectors(({ getOption }) => ({
32
+ currentUser: () => getOption('users')[getOption('currentUserId')],
33
+ user: (id: string) => getOption('users')[id]
34
+ }));
35
+
36
+ export const DiscussionKit = [discussionPlugin];
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+
3
+ import { DndPlugin } from '@platejs/dnd';
4
+ import { PlaceholderPlugin } from '@platejs/media/react';
5
+ import { DndProvider } from 'react-dnd';
6
+ import { HTML5Backend } from 'react-dnd-html5-backend';
7
+
8
+ import { BlockDraggable } from '../../plate-ui/block-draggable';
9
+
10
+ export const DndKit = [
11
+ DndPlugin.configure({
12
+ options: {
13
+ enableScroller: true,
14
+ onDropFiles: ({ dragItem, editor, target }) => {
15
+ editor
16
+ .getTransforms(PlaceholderPlugin)
17
+ .insert.media(dragItem.files, { at: target, nextBlock: false });
18
+ }
19
+ },
20
+ render: {
21
+ aboveNodes: BlockDraggable,
22
+ aboveSlate: ({ children }) => (
23
+ <DndProvider backend={HTML5Backend}>{children}</DndProvider>
24
+ )
25
+ }
26
+ })
27
+ ];
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Editor kit for DOCX export.
3
+ *
4
+ * Uses DocxExportPlugin with custom DOCX-compatible components for elements
5
+ * that need inline styles instead of Tailwind classes (which don't work in DOCX).
6
+ */
7
+
8
+ import { DocxExportPlugin } from '@platejs/docx-io';
9
+ import { KEYS } from 'platejs';
10
+
11
+ import { CalloutElementDocx } from '../../plate-ui/callout-node-static';
12
+ import {
13
+ CodeBlockElementDocx,
14
+ CodeLineElementDocx,
15
+ CodeSyntaxLeafDocx
16
+ } from '../../plate-ui/code-block-node-static';
17
+ import {
18
+ ColumnElementDocx,
19
+ ColumnGroupElementDocx
20
+ } from '../../plate-ui/column-node-static';
21
+ import {
22
+ EquationElementDocx,
23
+ InlineEquationElementDocx
24
+ } from '../../plate-ui/equation-node-static';
25
+ import { TocElementDocx } from '../../plate-ui/toc-node-static';
26
+
27
+ export const DocxExportKit = [
28
+ DocxExportPlugin.configure({
29
+ override: {
30
+ components: {
31
+ [KEYS.callout]: CalloutElementDocx,
32
+ [KEYS.codeBlock]: CodeBlockElementDocx,
33
+ [KEYS.codeLine]: CodeLineElementDocx,
34
+ [KEYS.codeSyntax]: CodeSyntaxLeafDocx,
35
+ [KEYS.column]: ColumnElementDocx,
36
+ [KEYS.columnGroup]: ColumnGroupElementDocx,
37
+ [KEYS.equation]: EquationElementDocx,
38
+ [KEYS.inlineEquation]: InlineEquationElementDocx,
39
+ [KEYS.toc]: TocElementDocx
40
+ }
41
+ }
42
+ })
43
+ ];
@@ -0,0 +1,6 @@
1
+ 'use client';
2
+
3
+ import { DocxPlugin } from '@platejs/docx';
4
+ import { JuicePlugin } from '@platejs/juice';
5
+
6
+ export const DocxKit = [DocxPlugin, JuicePlugin];
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+
3
+ import emojiMartData from '@emoji-mart/data';
4
+ import { EmojiInputPlugin, EmojiPlugin } from '@platejs/emoji/react';
5
+
6
+ import { EmojiInputElement } from '../../plate-ui/emoji-node';
7
+
8
+ export const EmojiKit = [
9
+ EmojiPlugin.configure({
10
+ options: {
11
+ data: emojiMartData as any
12
+ }
13
+ }),
14
+ EmojiInputPlugin.withComponent(EmojiInputElement)
15
+ ];
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+
3
+ import { ExitBreakPlugin } from 'platejs';
4
+
5
+ export const ExitBreakKit = [
6
+ ExitBreakPlugin.configure({
7
+ shortcuts: {
8
+ insert: { keys: 'mod+enter' },
9
+ insertBefore: { keys: 'mod+shift+enter' }
10
+ }
11
+ })
12
+ ];
@@ -0,0 +1,19 @@
1
+ 'use client';
2
+
3
+ import { createPlatePlugin } from 'platejs/react';
4
+
5
+ import { FloatingToolbar } from '../../plate-ui/floating-toolbar';
6
+ import { FloatingToolbarButtons } from '../../plate-ui/floating-toolbar-buttons';
7
+
8
+ export const FloatingToolbarKit = [
9
+ createPlatePlugin({
10
+ key: 'floating-toolbar',
11
+ render: {
12
+ afterEditable: () => (
13
+ <FloatingToolbar>
14
+ <FloatingToolbarButtons />
15
+ </FloatingToolbar>
16
+ )
17
+ }
18
+ })
19
+ ];
@@ -0,0 +1,36 @@
1
+ import { type SlatePluginConfig, KEYS } from 'platejs';
2
+
3
+ import {
4
+ BaseFontBackgroundColorPlugin,
5
+ BaseFontColorPlugin,
6
+ BaseFontFamilyPlugin,
7
+ BaseFontSizePlugin
8
+ } from '@platejs/basic-styles';
9
+ import { LineHeightPlugin, TextAlignPlugin } from '@platejs/basic-styles/react';
10
+
11
+ const options = {
12
+ inject: { targetPlugins: [KEYS.p] }
13
+ } satisfies SlatePluginConfig;
14
+
15
+ export const BaseFontKit = [
16
+ BaseFontColorPlugin.configure(options),
17
+ BaseFontBackgroundColorPlugin.configure(options),
18
+ BaseFontSizePlugin.configure(options),
19
+ BaseFontFamilyPlugin.configure(options),
20
+ LineHeightPlugin.configure({
21
+ inject: {
22
+ nodeProps: {
23
+ defaultNodeValue: 1.5,
24
+ validNodeValues: [
25
+ 1,
26
+ 1.2,
27
+ 1.5,
28
+ 2,
29
+ 3
30
+ ]
31
+ },
32
+ targetPlugins: [...KEYS.heading, KEYS.p]
33
+ }
34
+ }),
35
+ TextAlignPlugin
36
+ ];
@@ -0,0 +1,47 @@
1
+ 'use client';
2
+
3
+ import { type PlatePluginConfig } from 'platejs/react';
4
+
5
+ import {
6
+ FontBackgroundColorPlugin,
7
+ FontColorPlugin,
8
+ FontFamilyPlugin,
9
+ FontSizePlugin,
10
+ LineHeightPlugin,
11
+ TextAlignPlugin
12
+ } from '@platejs/basic-styles/react';
13
+ import { KEYS } from 'platejs';
14
+
15
+ const options = {
16
+ inject: { targetPlugins: [KEYS.p] }
17
+ } satisfies PlatePluginConfig;
18
+
19
+ export const FontKit = [
20
+ FontColorPlugin.configure({
21
+ inject: {
22
+ ...options.inject,
23
+ nodeProps: {
24
+ defaultNodeValue: 'black'
25
+ }
26
+ }
27
+ }),
28
+ FontBackgroundColorPlugin.configure(options),
29
+ FontSizePlugin.configure(options),
30
+ FontFamilyPlugin.configure(options),
31
+ LineHeightPlugin.configure({
32
+ inject: {
33
+ nodeProps: {
34
+ defaultNodeValue: 1.5,
35
+ validNodeValues: [
36
+ 1,
37
+ 1.2,
38
+ 1.5,
39
+ 2,
40
+ 3
41
+ ]
42
+ },
43
+ targetPlugins: [...KEYS.heading, KEYS.p]
44
+ }
45
+ }),
46
+ TextAlignPlugin
47
+ ];
@@ -0,0 +1,19 @@
1
+ import { BaseIndentPlugin } from '@platejs/indent';
2
+ import { KEYS } from 'platejs';
3
+
4
+ export const BaseIndentKit = [
5
+ BaseIndentPlugin.configure({
6
+ inject: {
7
+ targetPlugins: [
8
+ ...KEYS.heading,
9
+ KEYS.p,
10
+ KEYS.blockquote,
11
+ KEYS.codeBlock,
12
+ KEYS.toggle
13
+ ]
14
+ },
15
+ options: {
16
+ offset: 24
17
+ }
18
+ })
19
+ ];
@@ -0,0 +1,22 @@
1
+ 'use client';
2
+
3
+ import { IndentPlugin } from '@platejs/indent/react';
4
+ import { KEYS } from 'platejs';
5
+
6
+ export const IndentKit = [
7
+ IndentPlugin.configure({
8
+ inject: {
9
+ targetPlugins: [
10
+ ...KEYS.heading,
11
+ KEYS.p,
12
+ KEYS.blockquote,
13
+ KEYS.codeBlock,
14
+ KEYS.toggle,
15
+ KEYS.img
16
+ ]
17
+ },
18
+ options: {
19
+ offset: 24
20
+ }
21
+ })
22
+ ];
@@ -0,0 +1,5 @@
1
+ import { BaseLinkPlugin } from '@platejs/link';
2
+
3
+ import { LinkElementStatic } from '../../plate-ui/link-node-static';
4
+
5
+ export const BaseLinkKit = [BaseLinkPlugin.withComponent(LinkElementStatic)];
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+
3
+ import { upsertLink } from '@platejs/link';
4
+ import { LinkPlugin } from '@platejs/link/react';
5
+ import { Key } from 'platejs/react';
6
+
7
+ import { LinkElement } from '../../plate-ui/link-node';
8
+ import { LinkFloatingToolbar } from '../../plate-ui/link-toolbar';
9
+
10
+ export const linkPlugin = LinkPlugin.configure({
11
+ options: {
12
+ defaultLinkAttributes: {
13
+ target: '_blank',
14
+ rel: 'noopener noreferrer'
15
+ }
16
+ }
17
+ });
18
+
19
+ export const LinkKit = [
20
+ linkPlugin.extend({
21
+ shortcuts: {
22
+ toggleLink: {
23
+ keys: [[Key.Mod, 'k']],
24
+ preventDefault: true,
25
+ handler: ({ editor }) => {
26
+ upsertLink(editor, { url: '' });
27
+ }
28
+ }
29
+ },
30
+ render: {
31
+ afterEditable: LinkFloatingToolbar,
32
+ node: LinkElement
33
+ }
34
+ })
35
+ ];
@@ -0,0 +1,24 @@
1
+ import { BaseListPlugin } from '@platejs/list';
2
+ import { KEYS } from 'platejs';
3
+
4
+ import { BaseIndentKit } from './indent-base-kit';
5
+
6
+ import { BlockListStatic } from '../../plate-ui/block-list-static';
7
+
8
+ export const BaseListKit = [
9
+ ...BaseIndentKit,
10
+ BaseListPlugin.configure({
11
+ inject: {
12
+ targetPlugins: [
13
+ ...KEYS.heading,
14
+ KEYS.p,
15
+ KEYS.blockquote,
16
+ KEYS.codeBlock,
17
+ KEYS.toggle
18
+ ]
19
+ },
20
+ render: {
21
+ belowNodes: BlockListStatic
22
+ }
23
+ })
24
+ ];
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+
3
+ import { ListPlugin } from '@platejs/list/react';
4
+ import { KEYS } from 'platejs';
5
+
6
+ import { IndentKit } from './indent-kit';
7
+
8
+ import { BlockList } from '../../plate-ui/block-list';
9
+
10
+ export const ListKit = [
11
+ ...IndentKit,
12
+ ListPlugin.configure({
13
+ inject: {
14
+ targetPlugins: [
15
+ ...KEYS.heading,
16
+ KEYS.p,
17
+ KEYS.blockquote,
18
+ KEYS.codeBlock,
19
+ KEYS.toggle,
20
+ KEYS.img
21
+ ]
22
+ },
23
+ render: {
24
+ belowNodes: BlockList
25
+ }
26
+ })
27
+ ];
@@ -0,0 +1,18 @@
1
+ import { MarkdownPlugin, remarkMdx, remarkMention } from '@platejs/markdown';
2
+ import { KEYS } from 'platejs';
3
+ import remarkGfm from 'remark-gfm';
4
+ import remarkMath from 'remark-math';
5
+
6
+ export const MarkdownKit = [
7
+ MarkdownPlugin.configure({
8
+ options: {
9
+ disallowedNodes: [KEYS.suggestion],
10
+ remarkPlugins: [
11
+ remarkMath,
12
+ remarkGfm,
13
+ remarkMdx,
14
+ remarkMention
15
+ ]
16
+ }
17
+ })
18
+ ];
@@ -0,0 +1,8 @@
1
+ import { BaseEquationPlugin, BaseInlineEquationPlugin } from '@platejs/math';
2
+
3
+ import {
4
+ EquationElementStatic,
5
+ InlineEquationElementStatic
6
+ } from '../../plate-ui/equation-node-static';
7
+
8
+ export const BaseMathKit = [BaseInlineEquationPlugin.withComponent(InlineEquationElementStatic), BaseEquationPlugin.withComponent(EquationElementStatic)];
@@ -0,0 +1,10 @@
1
+ 'use client';
2
+
3
+ import { EquationPlugin, InlineEquationPlugin } from '@platejs/math/react';
4
+
5
+ import {
6
+ EquationElement,
7
+ InlineEquationElement
8
+ } from '../../plate-ui/equation-node';
9
+
10
+ export const MathKit = [InlineEquationPlugin.withComponent(InlineEquationElement), EquationPlugin.withComponent(EquationElement)];
@@ -0,0 +1,37 @@
1
+ import { BaseCaptionPlugin } from '@platejs/caption';
2
+ import {
3
+ BaseAudioPlugin,
4
+ BaseFilePlugin,
5
+ BaseImagePlugin,
6
+ BaseMediaEmbedPlugin,
7
+ BasePlaceholderPlugin,
8
+ BaseVideoPlugin
9
+ } from '@platejs/media';
10
+ import { KEYS } from 'platejs';
11
+
12
+ import { MediaAudioElementStatic } from '../../plate-ui/media-audio-node-static';
13
+ import { MediaFileElementStatic } from '../../plate-ui/media-file-node-static';
14
+ import { ImageElementStatic } from '../../plate-ui/media-image-node-static';
15
+ import { MediaVideoElementStatic } from '../../plate-ui/media-video-node-static';
16
+
17
+ export const BaseMediaKit = [
18
+ BaseImagePlugin.withComponent(ImageElementStatic),
19
+ BaseVideoPlugin.withComponent(MediaVideoElementStatic),
20
+ BaseAudioPlugin.withComponent(MediaAudioElementStatic),
21
+ BaseFilePlugin.withComponent(MediaFileElementStatic),
22
+ BaseCaptionPlugin.configure({
23
+ options: {
24
+ query: {
25
+ allow: [
26
+ KEYS.img,
27
+ KEYS.video,
28
+ KEYS.audio,
29
+ KEYS.file,
30
+ KEYS.mediaEmbed
31
+ ]
32
+ }
33
+ }
34
+ }),
35
+ BaseMediaEmbedPlugin,
36
+ BasePlaceholderPlugin
37
+ ];
@@ -0,0 +1,53 @@
1
+ 'use client';
2
+
3
+ import { CaptionPlugin } from '@platejs/caption/react';
4
+ import {
5
+ AudioPlugin,
6
+ FilePlugin,
7
+ ImagePlugin,
8
+ MediaEmbedPlugin,
9
+ PlaceholderPlugin,
10
+ VideoPlugin
11
+ } from '@platejs/media/react';
12
+ import { KEYS } from 'platejs';
13
+
14
+ import { MediaAudioElement } from '../../plate-ui/media-audio-node';
15
+ import { MediaEmbedElement } from '../../plate-ui/media-embed-node';
16
+ import { MediaFileElement } from '../../plate-ui/media-file-node';
17
+ import { ImageElement } from '../../plate-ui/media-image-node';
18
+ import { PlaceholderElement } from '../../plate-ui/media-placeholder-node';
19
+ import { ImagePreview } from '../../plate-ui/media-preview-dialog';
20
+ import { MediaUploadToast } from '../../plate-ui/media-upload-toast';
21
+ import { MediaVideoElement } from '../../plate-ui/media-video-node';
22
+
23
+ export const MediaKit = [
24
+ PlaceholderPlugin.configure({
25
+ render: {
26
+ afterEditable: MediaUploadToast,
27
+ node: PlaceholderElement
28
+ }
29
+ }),
30
+ ImagePlugin.configure({
31
+ options: { disableUploadInsert: true },
32
+ render: {
33
+ afterEditable: ImagePreview,
34
+ node: ImageElement
35
+ }
36
+ }),
37
+ MediaEmbedPlugin.withComponent(MediaEmbedElement),
38
+ VideoPlugin.withComponent(MediaVideoElement),
39
+ AudioPlugin.withComponent(MediaAudioElement),
40
+ FilePlugin.withComponent(MediaFileElement),
41
+ CaptionPlugin.configure({
42
+ options: {
43
+ query: {
44
+ allow: [
45
+ KEYS.img,
46
+ KEYS.video,
47
+ KEYS.audio,
48
+ KEYS.mediaEmbed
49
+ ]
50
+ }
51
+ }
52
+ })
53
+ ];
@@ -0,0 +1,5 @@
1
+ import { BaseMentionPlugin } from '@platejs/mention';
2
+
3
+ import { MentionElementStatic } from '../../plate-ui/mention-node-static';
4
+
5
+ export const BaseMentionKit = [BaseMentionPlugin.withComponent(MentionElementStatic)];
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+
3
+ import { MentionInputPlugin, MentionPlugin } from '@platejs/mention/react';
4
+ import { KEYS } from 'platejs';
5
+
6
+ import { type MyMentionElement } from '../plate-types';
7
+
8
+ import {
9
+ MentionElement,
10
+ MentionInputElement
11
+ } from '../../plate-ui/mention-node';
12
+
13
+ export const MentionKit = [
14
+ MentionPlugin.configure({
15
+ options: {
16
+ triggerPreviousCharPattern: /^$|^[\s"']$/
17
+ }
18
+ })
19
+ .withComponent(MentionElement)
20
+ .overrideEditor(({ api: { isSelectable } }) => ({
21
+ api: {
22
+ isSelectable(element) {
23
+ if (element.type === KEYS.mention) {
24
+ const mentionElement = element as unknown as MyMentionElement;
25
+
26
+ const isDocument = mentionElement.key!.startsWith('/');
27
+
28
+ return !!isDocument;
29
+ }
30
+
31
+ return isSelectable(element);
32
+ }
33
+ }
34
+ })),
35
+ MentionInputPlugin.withComponent(MentionInputElement)
36
+ ];