@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,11 @@
1
+ 'use client';
2
+
3
+ import { createContext, use } from 'react';
4
+
5
+ interface AuthContextValue {
6
+ getAccessToken?: () => Promise<string | null>;
7
+ }
8
+
9
+ export const AuthContext = createContext<AuthContextValue>({});
10
+
11
+ export const useAuthContext = () => use(AuthContext);
@@ -0,0 +1,39 @@
1
+ import { BaseBasicBlocksKit } from './plugins/basic-blocks-base-kit';
2
+ import { BaseBasicMarksKit } from './plugins/basic-marks-base-kit';
3
+ import { BaseCalloutKit } from './plugins/callout-base-kit';
4
+ import { BaseCodeBlockKit } from './plugins/code-block-base-kit';
5
+ import { BaseColumnKit } from './plugins/column-base-kit';
6
+ import { BaseCommentKit } from './plugins/comment-base-kit';
7
+ import { BaseDateKit } from './plugins/date-base-kit';
8
+ import { BaseFontKit } from './plugins/font-base-kit';
9
+ import { BaseLinkKit } from './plugins/link-base-kit';
10
+ import { BaseListKit } from './plugins/list-base-kit';
11
+ import { MarkdownKit } from './plugins/markdown-kit';
12
+ import { BaseMathKit } from './plugins/math-base-kit';
13
+ import { BaseMediaKit } from './plugins/media-base-kit';
14
+ import { BaseMentionKit } from './plugins/mention-base-kit';
15
+ import { BaseSuggestionKit } from './plugins/suggestion-base-kit';
16
+ import { BaseTableKit } from './plugins/table-base-kit';
17
+ import { BaseTocKit } from './plugins/toc-base-kit';
18
+ import { BaseToggleKit } from './plugins/toggle-base-kit';
19
+
20
+ export const BaseEditorKit = [
21
+ ...BaseBasicBlocksKit,
22
+ ...BaseCodeBlockKit,
23
+ ...BaseTableKit,
24
+ ...BaseToggleKit,
25
+ ...BaseTocKit,
26
+ ...BaseMediaKit,
27
+ ...BaseCalloutKit,
28
+ ...BaseColumnKit,
29
+ ...BaseMathKit,
30
+ ...BaseDateKit,
31
+ ...BaseLinkKit,
32
+ ...BaseMentionKit,
33
+ ...BaseBasicMarksKit,
34
+ ...BaseFontKit,
35
+ ...BaseListKit,
36
+ ...BaseCommentKit,
37
+ ...BaseSuggestionKit,
38
+ ...MarkdownKit
39
+ ];
@@ -0,0 +1,89 @@
1
+ 'use client';
2
+
3
+ import { TrailingBlockPlugin, type Value } from 'platejs';
4
+ import { type TPlateEditor, useEditorRef } from 'platejs/react';
5
+
6
+ import { AIKit } from './plugins/ai-kit';
7
+ import { AutoformatKit } from './plugins/autoformat-kit';
8
+ import { BasicBlocksKit } from './plugins/basic-blocks-kit';
9
+ import { BasicMarksKit } from './plugins/basic-marks-kit';
10
+ import { BlockMenuKit } from './plugins/block-menu-kit';
11
+ import { BlockPlaceholderKit } from './plugins/block-placeholder-kit';
12
+ import { CalloutKit } from './plugins/callout-kit';
13
+ import { CodeBlockKit } from './plugins/code-block-kit';
14
+ import { ColumnKit } from './plugins/column-kit';
15
+ import { CommentKit } from './plugins/comment-kit';
16
+ import { CopilotKit } from './plugins/copilot-kit';
17
+ import { CursorOverlayKit } from './plugins/cursor-overlay-kit';
18
+ import { DateKit } from './plugins/date-kit';
19
+ import { DiscussionKit } from './plugins/discussion-kit';
20
+ import { DndKit } from './plugins/dnd-kit';
21
+ import { DocxKit } from './plugins/docx-kit';
22
+ import { EmojiKit } from './plugins/emoji-kit';
23
+ import { ExitBreakKit } from './plugins/exit-break-kit';
24
+ import { FloatingToolbarKit } from './plugins/floating-toolbar-kit';
25
+ import { FontKit } from './plugins/font-kit';
26
+ import { LinkKit } from './plugins/link-kit';
27
+ import { ListKit } from './plugins/list-kit';
28
+ import { MarkdownKit } from './plugins/markdown-kit';
29
+ import { MathKit } from './plugins/math-kit';
30
+ import { MediaKit } from './plugins/media-kit';
31
+ import { MentionKit } from './plugins/mention-kit';
32
+ import { SlashKit } from './plugins/slash-kit';
33
+ import { SuggestionKit } from './plugins/suggestion-kit';
34
+ import { TableKit } from './plugins/table-kit';
35
+ import { TocKit } from './plugins/toc-kit';
36
+ import { ToggleKit } from './plugins/toggle-kit';
37
+
38
+ export const EditorKit = [
39
+ ...CopilotKit,
40
+ ...AIKit,
41
+ ...BlockMenuKit,
42
+
43
+ // Elements
44
+ ...BasicBlocksKit,
45
+ ...CodeBlockKit,
46
+ ...TableKit,
47
+ ...ToggleKit,
48
+ ...TocKit,
49
+ ...MediaKit,
50
+ ...CalloutKit,
51
+ ...ColumnKit,
52
+ ...MathKit,
53
+ ...DateKit,
54
+ ...LinkKit,
55
+ ...MentionKit,
56
+
57
+ // Marks
58
+ ...BasicMarksKit,
59
+ ...FontKit,
60
+
61
+ // Block Style
62
+ ...ListKit,
63
+
64
+ // Collaboration
65
+ ...DiscussionKit,
66
+ ...CommentKit,
67
+ ...SuggestionKit,
68
+
69
+ // Editing
70
+ ...SlashKit,
71
+ ...AutoformatKit,
72
+ ...CursorOverlayKit,
73
+ ...DndKit,
74
+ ...EmojiKit,
75
+ ...ExitBreakKit,
76
+ TrailingBlockPlugin,
77
+
78
+ // Parsers
79
+ ...DocxKit,
80
+ ...MarkdownKit,
81
+
82
+ // UI
83
+ ...BlockPlaceholderKit,
84
+ ...FloatingToolbarKit
85
+ ];
86
+
87
+ export type MyEditor = TPlateEditor<Value, (typeof EditorKit)[number]>;
88
+
89
+ export const useEditor = () => useEditorRef<MyEditor>();
@@ -0,0 +1,75 @@
1
+ 'use client';
2
+
3
+ import { useImperativeHandle, type RefObject, useMemo } from 'react';
4
+
5
+ import { type Value } from 'platejs';
6
+ import { deserializeMd } from '@platejs/markdown';
7
+
8
+ import { Plate, usePlateEditor } from 'platejs/react';
9
+
10
+ import { AuthContext } from './auth-context';
11
+ import { EditorKit } from './editor-kit';
12
+ import { Editor, EditorContainer } from '../plate-ui/editor';
13
+ import { FixedToolbar } from '../plate-ui/fixed-toolbar';
14
+ import { FixedToolbarButtons } from '../plate-ui/fixed-toolbar-buttons';
15
+
16
+ export interface PlateEditorHandle {
17
+ setValue: (value: Value) => void;
18
+ setMarkdown: (markdown: string) => void;
19
+ }
20
+
21
+ export interface PlateEditorProps {
22
+ value?: Value;
23
+ onChange?: (value: Value) => void;
24
+ onReady?: () => void;
25
+ readOnly?: boolean;
26
+ placeholder?: string;
27
+ hideToolbar?: boolean;
28
+ collabToken?: string;
29
+ documentId?: string;
30
+ getAccessToken?: () => Promise<string | null>;
31
+ }
32
+
33
+ export const PlateEditor = ({
34
+ ref, value, onChange, onReady, readOnly, placeholder = 'Type...', hideToolbar, getAccessToken
35
+ }: PlateEditorProps & { ref?: RefObject<PlateEditorHandle | null> }) => {
36
+ const editor = usePlateEditor({ plugins: EditorKit, value });
37
+ const authValue = useMemo(() => ({ getAccessToken }), [getAccessToken]);
38
+
39
+ useImperativeHandle(ref, () => ({
40
+ setValue(newValue: Value) {
41
+ editor.tf.setValue(newValue);
42
+ editor.tf.focus({ edge: 'start' });
43
+ },
44
+ setMarkdown(markdown: string) {
45
+ const nodes = deserializeMd(editor, markdown);
46
+
47
+ editor.tf.setValue(nodes);
48
+ editor.tf.focus({ edge: 'start' });
49
+ }
50
+ }), [editor]);
51
+
52
+ return (
53
+ <AuthContext value={authValue}>
54
+ <Plate
55
+ editor={editor}
56
+ onChange={({ value }) => onChange?.(value)}>
57
+ <div className="flex h-full flex-col overflow-hidden">
58
+ {!hideToolbar && !readOnly && (
59
+ <FixedToolbar>
60
+ <FixedToolbarButtons />
61
+ </FixedToolbar>
62
+ )}
63
+
64
+ <EditorContainer className="flex-1 min-h-0">
65
+ <Editor
66
+ placeholder={placeholder}
67
+ readOnly={readOnly}
68
+ variant="default"
69
+ onLoad={onReady} />
70
+ </EditorContainer>
71
+ </div>
72
+ </Plate>
73
+ </AuthContext>
74
+ );
75
+ };
@@ -0,0 +1,126 @@
1
+ 'use client';
2
+
3
+ import {
4
+ type EmptyText,
5
+ type KEYS,
6
+ type PlainText,
7
+ type TBasicMarks,
8
+ type TCommentText,
9
+ type TElement,
10
+ type TFontMarks,
11
+ type TImageElement,
12
+ type TLinkElement,
13
+ type TListProps,
14
+ type TMentionElement,
15
+ type TTableElement,
16
+ type TText,
17
+ type TTextAlignProps
18
+ } from 'platejs';
19
+
20
+ export interface MyBlockElement extends TElement, TListProps {
21
+ id?: string;
22
+ }
23
+
24
+ export interface MyBlockquoteElement extends MyTextBlockElement {
25
+ type: typeof KEYS.blockquote;
26
+ }
27
+
28
+ export interface MyCodeBlockElement extends MyBlockElement {
29
+ children: MyCodeLineElement[];
30
+ type: typeof KEYS.codeBlock;
31
+ }
32
+
33
+ export interface MyCodeLineElement extends TElement {
34
+ children: PlainText[];
35
+ type: typeof KEYS.codeLine;
36
+ }
37
+
38
+ export interface MyH1Element extends MyTextBlockElement {
39
+ type: typeof KEYS.h1;
40
+ }
41
+
42
+ export interface MyH2Element extends MyTextBlockElement {
43
+ type: typeof KEYS.h2;
44
+ }
45
+
46
+ export interface MyH3Element extends MyTextBlockElement {
47
+ type: typeof KEYS.h3;
48
+ }
49
+
50
+ export interface MyHrElement extends MyBlockElement {
51
+ children: [EmptyText];
52
+ type: typeof KEYS.hr;
53
+ }
54
+
55
+ export interface MyImageElement
56
+ extends MyBlockElement,
57
+ TImageElement {
58
+ children: [EmptyText];
59
+ type: typeof KEYS.img;
60
+ }
61
+
62
+ export interface MyLinkElement extends TLinkElement {
63
+ id: string;
64
+ children: RichText[];
65
+ type: typeof KEYS.link;
66
+ icon?: string;
67
+ title?: string;
68
+ }
69
+
70
+ export interface MyMentionElement extends TMentionElement {
71
+ children: [EmptyText];
72
+ type: typeof KEYS.mention;
73
+ key?: string;
74
+ }
75
+
76
+ export type MyNestableBlock = MyParagraphElement;
77
+
78
+ export interface MyParagraphElement extends MyTextBlockElement {
79
+ type: typeof KEYS.p;
80
+ }
81
+
82
+ export interface MyTableCellElement extends TElement {
83
+ children: MyNestableBlock[];
84
+ type: typeof KEYS.td;
85
+ }
86
+
87
+ export interface MyTableElement extends MyBlockElement, TTableElement {
88
+ children: MyTableRowElement[];
89
+ type: typeof KEYS.table;
90
+ }
91
+
92
+ export interface MyTableRowElement extends TElement {
93
+ children: MyTableCellElement[];
94
+ type: typeof KEYS.tr;
95
+ }
96
+
97
+ export interface MyTextBlockElement
98
+ extends TElement,
99
+ TTextAlignProps {
100
+ children: (
101
+ | MyLinkElement
102
+ | MyMentionElement
103
+ | RichText
104
+ )[];
105
+ }
106
+
107
+ export interface MyToggleElement extends MyTextBlockElement {
108
+ type: typeof KEYS.toggle;
109
+ }
110
+
111
+ export type MyValue = (
112
+ | MyBlockquoteElement
113
+ | MyCodeBlockElement
114
+ | MyH1Element
115
+ | MyH2Element
116
+ | MyH3Element
117
+ | MyHrElement
118
+ | MyImageElement
119
+ | MyParagraphElement
120
+ | MyTableElement
121
+ | MyToggleElement
122
+ )[];
123
+
124
+ export interface RichText extends TBasicMarks, TCommentText, TFontMarks, TText {
125
+ kbd?: boolean;
126
+ }
@@ -0,0 +1,172 @@
1
+ 'use client';
2
+
3
+ import { type RefCallback, type RefObject, useEffect } from 'react';
4
+
5
+ import { withAIBatch } from '@platejs/ai';
6
+ import {
7
+ AIChatPlugin,
8
+ AIPlugin,
9
+ applyAISuggestions,
10
+ rejectAISuggestions,
11
+ streamInsertChunk,
12
+ useChatChunk
13
+ } from '@platejs/ai/react';
14
+ import { BlockSelectionPlugin } from '@platejs/selection/react';
15
+ import { getPluginType, KEYS, PathApi } from 'platejs';
16
+ import { type PlateEditor, usePluginOption } from 'platejs/react';
17
+
18
+ import { useStickToBottom } from 'use-stick-to-bottom';
19
+
20
+ import { CursorOverlayKit } from './cursor-overlay-kit';
21
+ import { MarkdownKit } from './markdown-kit';
22
+ import { AIMenu } from '../../plate-ui/ai-menu';
23
+ import { AIAnchorElement, AILeaf } from '../../plate-ui/ai-node';
24
+
25
+ import { useChat } from '../use-chat';
26
+
27
+ export const aiChatPlugin = AIChatPlugin.extend({
28
+ options: {
29
+ contentRef: null as
30
+ | (RefObject<HTMLElement | null> & RefCallback<HTMLElement>)
31
+ | null,
32
+ scrollRef: null as
33
+ | (RefObject<HTMLElement | null> & RefCallback<HTMLElement>)
34
+ | null
35
+ }
36
+ }).configure({
37
+ render: {
38
+ afterEditable: AIMenu,
39
+ node: AIAnchorElement
40
+ },
41
+ shortcuts: { show: { keys: 'mod+j' } },
42
+ normalizeInitialValue: ({ editor }) => {
43
+ const anchor = editor.getApi(AIChatPlugin).aiChat.node({ anchor: true });
44
+
45
+ if (anchor) {
46
+ editor.tf.removeNodes({ at: anchor[1] });
47
+ }
48
+
49
+ editor.tf.withoutSaving(() => {
50
+ rejectAISuggestions(editor);
51
+ });
52
+ },
53
+ useHooks: ({
54
+ api, editor, getOption, setOptions
55
+ }) => {
56
+ const { contentRef, scrollRef } = useStickToBottom({
57
+ /** Replace "bottom of the scroll container" with "top of the anchor" */
58
+ targetScrollTop: (_defaultBottom, { scrollElement }) => {
59
+ const anchorNode = api.aiChat.node({ anchor: true });
60
+
61
+ if (!anchorNode) return 0; // fallback: real bottom
62
+
63
+ const anchor = api.toDOMNode(anchorNode[0])?.parentElement
64
+ ?.parentElement as HTMLDivElement;
65
+
66
+ if (!anchor) return 0; // fallback: real bottom
67
+
68
+ const scrollRect = scrollElement.getBoundingClientRect();
69
+ const anchorRect = anchor.getBoundingClientRect();
70
+
71
+ // Add a threshold of 100px from the bottom
72
+ const threshold = 100;
73
+ const isVisible
74
+ = anchorRect.top >= scrollRect.top
75
+ && anchorRect.bottom <= scrollRect.bottom - threshold;
76
+
77
+ const anchorTop = anchor.offsetTop - scrollElement.offsetTop;
78
+
79
+ return isVisible ? 0 : anchorTop;
80
+ }
81
+ });
82
+
83
+ useEffect(() => {
84
+ setOptions({ contentRef, scrollRef });
85
+ }, [contentRef, scrollRef, setOptions]);
86
+
87
+ useChat();
88
+
89
+ const mode = usePluginOption(AIChatPlugin, 'mode');
90
+ const toolName = usePluginOption(AIChatPlugin, 'toolName');
91
+
92
+ useEffect(() => {
93
+ if (toolName === 'edit') {
94
+ insertAIAnchorElement(editor);
95
+ }
96
+ }, [editor, toolName]);
97
+
98
+ useChatChunk({
99
+ onChunk: ({
100
+ chunk, isFirst, nodes, text: content
101
+ }) => {
102
+ if (isFirst && toolName === 'generate') {
103
+ insertAIAnchorElement(editor);
104
+ }
105
+ if (mode === 'insert' && nodes.length > 0) {
106
+ withAIBatch(
107
+ editor,
108
+ () => {
109
+ if (!getOption('streaming')) return;
110
+
111
+ editor.tf.withScrolling(() => {
112
+ streamInsertChunk(editor, chunk, {
113
+ textProps: {
114
+ [getPluginType(editor, KEYS.ai)]: true
115
+ }
116
+ });
117
+ });
118
+ },
119
+ { split: isFirst }
120
+ );
121
+ }
122
+ if (toolName === 'edit' && mode === 'chat' && content) {
123
+ withAIBatch(
124
+ editor,
125
+ () => {
126
+ applyAISuggestions(editor, content);
127
+ },
128
+ {
129
+ split: isFirst
130
+ }
131
+ );
132
+ }
133
+ },
134
+ onFinish: () => {
135
+ editor.setOption(AIChatPlugin, 'streaming', false);
136
+ editor.setOption(AIChatPlugin, '_blockChunks', '');
137
+ editor.setOption(AIChatPlugin, '_blockPath', null);
138
+ editor.setOption(AIChatPlugin, '_mdxName', null);
139
+ }
140
+ });
141
+ }
142
+ });
143
+
144
+ export const AIKit = [
145
+ ...CursorOverlayKit,
146
+ ...MarkdownKit,
147
+ AIPlugin.withComponent(AILeaf),
148
+ aiChatPlugin
149
+ ];
150
+
151
+ const insertAIAnchorElement = (editor: PlateEditor) => {
152
+ const blockNodes = editor
153
+ .getApi(BlockSelectionPlugin)
154
+ .blockSelection.getNodes({ selectionFallback: true, sort: true });
155
+
156
+ const at
157
+ = blockNodes.length === 0 ? PathApi.next(editor.selection!.focus.path.slice(0, 1)) : PathApi.next(blockNodes.at(-1)![1]);
158
+
159
+ editor.tf.withoutSaving(() => {
160
+ editor.tf.insertNodes(
161
+ {
162
+ children: [{ text: '' }],
163
+ type: getPluginType(editor, KEYS.aiChat)
164
+ },
165
+ {
166
+ at
167
+ }
168
+ );
169
+ });
170
+
171
+ editor.setOption(AIChatPlugin, 'streaming', true);
172
+ };