weifuwu 0.85.0 → 0.87.0

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 (655) hide show
  1. package/README.md +56 -45
  2. package/content/apps/admin.md +55 -0
  3. package/content/apps/agent-platform.md +35 -0
  4. package/content/apps/auth.md +49 -0
  5. package/content/apps/multi.md +44 -0
  6. package/content/apps/todo.md +51 -0
  7. package/content/backend/ai.md +28 -0
  8. package/content/backend/auth.md +20 -0
  9. package/content/backend/email.md +23 -0
  10. package/content/backend/graphql.md +23 -0
  11. package/content/backend/http.md +23 -0
  12. package/content/backend/limit.md +23 -0
  13. package/content/backend/middleware.md +17 -0
  14. package/content/backend/queue.md +23 -0
  15. package/content/backend/redis.md +26 -0
  16. package/content/backend/router.md +23 -0
  17. package/content/backend/schedule.md +23 -0
  18. package/content/backend/sql.md +27 -0
  19. package/content/backend/sse.md +26 -0
  20. package/content/backend/ws.md +26 -0
  21. package/content/capabilities/app-node.md +21 -0
  22. package/content/capabilities/data.md +21 -0
  23. package/content/capabilities/events.md +21 -0
  24. package/content/capabilities/hooks.md +22 -0
  25. package/content/capabilities/i18n.md +21 -0
  26. package/content/capabilities/popup.md +21 -0
  27. package/content/capabilities/render-only.md +23 -0
  28. package/content/capabilities/router.md +22 -0
  29. package/content/capabilities/self-id.md +21 -0
  30. package/content/capabilities/store.md +21 -0
  31. package/content/capabilities/theme.md +21 -0
  32. package/content/capabilities/two-phase.md +21 -0
  33. package/content/components/accordion.md +50 -0
  34. package/content/components/actionsheet.md +46 -0
  35. package/content/components/affix.md +51 -0
  36. package/content/components/aichat.md +57 -0
  37. package/content/components/alert.md +52 -0
  38. package/content/components/alertgroup.md +45 -0
  39. package/content/components/anchor.md +52 -0
  40. package/content/components/app.md +37 -0
  41. package/content/components/approvalcard.md +56 -0
  42. package/content/components/appshell.md +50 -0
  43. package/content/components/aspectratio.md +47 -0
  44. package/content/components/authpage.md +61 -0
  45. package/content/components/autocomplete-v2.md +40 -0
  46. package/content/components/autocomplete.md +56 -0
  47. package/content/components/avatar.md +51 -0
  48. package/content/components/avatargroup.md +47 -0
  49. package/content/components/backtop.md +53 -0
  50. package/content/components/badge.md +55 -0
  51. package/content/components/breadcrumb.md +49 -0
  52. package/content/components/button.md +63 -0
  53. package/content/components/calendar-v2.md +40 -0
  54. package/content/components/calendar.md +50 -0
  55. package/content/components/card.md +58 -0
  56. package/content/components/carousel.md +52 -0
  57. package/content/components/cascader-v2.md +39 -0
  58. package/content/components/cascader.md +54 -0
  59. package/content/components/chart.md +53 -0
  60. package/content/components/chatinput.md +63 -0
  61. package/content/components/checkbox.md +51 -0
  62. package/content/components/checkboxgroup.md +52 -0
  63. package/content/components/citationcard.md +48 -0
  64. package/content/components/codeblock.md +48 -0
  65. package/content/components/codeeditor.md +47 -0
  66. package/content/components/collapse.md +49 -0
  67. package/content/components/colorpicker.md +50 -0
  68. package/content/components/command.md +50 -0
  69. package/content/components/confirm.md +57 -0
  70. package/content/components/contextmenu.md +48 -0
  71. package/content/components/copybutton.md +51 -0
  72. package/content/components/datepicker.md +52 -0
  73. package/content/components/descriptions-v2.md +39 -0
  74. package/content/components/descriptions.md +52 -0
  75. package/content/components/diffview-v2.md +39 -0
  76. package/content/components/diffview.md +50 -0
  77. package/content/components/divider.md +48 -0
  78. package/content/components/drawer.md +55 -0
  79. package/content/components/dropdown.md +53 -0
  80. package/content/components/editor.md +49 -0
  81. package/content/components/emptystate.md +51 -0
  82. package/content/components/exportcsv.md +38 -0
  83. package/content/components/field.md +54 -0
  84. package/content/components/filepreview-office.md +37 -0
  85. package/content/components/filepreview.md +49 -0
  86. package/content/components/filetree.md +56 -0
  87. package/content/components/fileupload-v2.md +39 -0
  88. package/content/components/fileupload.md +57 -0
  89. package/content/components/floatbutton.md +52 -0
  90. package/content/components/form-v2.md +41 -0
  91. package/content/components/form.md +60 -0
  92. package/content/components/grid.md +51 -0
  93. package/content/components/highlight-v2.md +39 -0
  94. package/content/components/highlight.md +46 -0
  95. package/content/components/hovercard.md +51 -0
  96. package/content/components/icon.md +50 -0
  97. package/content/components/imagecropper.md +45 -0
  98. package/content/components/img.md +56 -0
  99. package/content/components/infinitescroll-v2.md +40 -0
  100. package/content/components/infinitescroll.md +54 -0
  101. package/content/components/input.md +65 -0
  102. package/content/components/inputnumber.md +58 -0
  103. package/content/components/inview.md +56 -0
  104. package/content/components/jsonschemaform.md +53 -0
  105. package/content/components/jsonviewer-v2.md +39 -0
  106. package/content/components/jsonviewer.md +49 -0
  107. package/content/components/kanban.md +46 -0
  108. package/content/components/label.md +48 -0
  109. package/content/components/layout.md +54 -0
  110. package/content/components/layoutcontent.md +43 -0
  111. package/content/components/layoutheader.md +43 -0
  112. package/content/components/layoutsider.md +43 -0
  113. package/content/components/link.md +52 -0
  114. package/content/components/list.md +44 -0
  115. package/content/components/loading.md +45 -0
  116. package/content/components/logviewer-v2.md +39 -0
  117. package/content/components/logviewer.md +53 -0
  118. package/content/components/markdown.md +51 -0
  119. package/content/components/markdowneditor.md +47 -0
  120. package/content/components/math.md +42 -0
  121. package/content/components/mentions-v2.md +39 -0
  122. package/content/components/mentions.md +52 -0
  123. package/content/components/menu.md +56 -0
  124. package/content/components/menubar.md +44 -0
  125. package/content/components/messagebubble.md +50 -0
  126. package/content/components/modal.md +59 -0
  127. package/content/components/navmenu.md +47 -0
  128. package/content/components/notification.md +51 -0
  129. package/content/components/pageheader.md +53 -0
  130. package/content/components/pagination.md +49 -0
  131. package/content/components/paragraph.md +45 -0
  132. package/content/components/passwordinput.md +57 -0
  133. package/content/components/pininput-v2.md +39 -0
  134. package/content/components/pininput.md +50 -0
  135. package/content/components/pipeline.md +49 -0
  136. package/content/components/popconfirm.md +58 -0
  137. package/content/components/popover.md +61 -0
  138. package/content/components/progressbar.md +50 -0
  139. package/content/components/prompttemplate.md +49 -0
  140. package/content/components/qrcode.md +50 -0
  141. package/content/components/radiogroup.md +53 -0
  142. package/content/components/rate.md +53 -0
  143. package/content/components/reasoningblock.md +47 -0
  144. package/content/components/relationgraph.md +52 -0
  145. package/content/components/resizable.md +53 -0
  146. package/content/components/result.md +49 -0
  147. package/content/components/scrollbar.md +49 -0
  148. package/content/components/searchinput.md +51 -0
  149. package/content/components/segmentedcontrol.md +59 -0
  150. package/content/components/select-searchable.md +47 -0
  151. package/content/components/select.md +66 -0
  152. package/content/components/sessionlist.md +52 -0
  153. package/content/components/sheetgrid.md +44 -0
  154. package/content/components/skeleton.md +55 -0
  155. package/content/components/slidecanvas.md +44 -0
  156. package/content/components/slider.md +62 -0
  157. package/content/components/sortablelist.md +39 -0
  158. package/content/components/space.md +52 -0
  159. package/content/components/sparkline.md +52 -0
  160. package/content/components/statcard-countdown.md +39 -0
  161. package/content/components/statcard.md +56 -0
  162. package/content/components/steps.md +48 -0
  163. package/content/components/switch.md +50 -0
  164. package/content/components/tabbar.md +45 -0
  165. package/content/components/table-v2.md +40 -0
  166. package/content/components/table.md +66 -0
  167. package/content/components/tabs.md +56 -0
  168. package/content/components/tag.md +51 -0
  169. package/content/components/tagsinput-v2.md +39 -0
  170. package/content/components/tagsinput.md +54 -0
  171. package/content/components/text.md +45 -0
  172. package/content/components/textarea.md +57 -0
  173. package/content/components/themeswitch.md +69 -0
  174. package/content/components/timeline.md +50 -0
  175. package/content/components/title.md +45 -0
  176. package/content/components/toast.md +52 -0
  177. package/content/components/toggle-togglegroup.md +52 -0
  178. package/content/components/togglegroup.md +47 -0
  179. package/content/components/toolcallcard.md +51 -0
  180. package/content/components/tooltip.md +50 -0
  181. package/content/components/tour.md +50 -0
  182. package/content/components/transfer.md +52 -0
  183. package/content/components/tree-v2.md +39 -0
  184. package/content/components/tree.md +59 -0
  185. package/content/components/treeselect.md +54 -0
  186. package/content/components/typography.md +51 -0
  187. package/content/components/videoplayer.md +52 -0
  188. package/content/components/virtuallist.md +52 -0
  189. package/content/components/virtualtable-v2.md +39 -0
  190. package/content/components/virtualtable.md +55 -0
  191. package/content/components/watermark.md +53 -0
  192. package/content/components/wave.md +43 -0
  193. package/content/guides/ai-chat-family.md +24 -0
  194. package/content/guides/choose.md +67 -0
  195. package/content/guides/component-model.md +32 -0
  196. package/content/guides/component-standards.md +123 -0
  197. package/{docs/components.md → content/guides/components-guide.md} +153 -7
  198. package/{docs/custom-components.md → content/guides/custom-component.md} +70 -55
  199. package/{docs/data.md → content/guides/data-guide.md} +5 -2
  200. package/content/guides/file-preview-family.md +18 -0
  201. package/{docs → content/guides}/frontend.md +122 -52
  202. package/content/guides/layout-choice.md +64 -0
  203. package/{docs/layout.md → content/guides/layout-guide.md} +12 -8
  204. package/{docs/frontend-middleware.md → content/guides/middleware.md} +34 -3
  205. package/{docs/mobile.md → content/guides/mobile-guide.md} +20 -24
  206. package/content/guides/page-building.md +98 -0
  207. package/content/guides/production.md +37 -0
  208. package/content/guides/quality.md +60 -0
  209. package/{docs/realtime.md → content/guides/realtime-guide.md} +6 -3
  210. package/content/guides/render-only.md +44 -0
  211. package/{docs/saas.md → content/guides/saas-guide.md} +8 -5
  212. package/{docs/server.md → content/guides/server-guide.md} +5 -2
  213. package/content/guides/start.md +41 -0
  214. package/{docs → content/guides}/styling.md +5 -1
  215. package/{docs/frontend-ui-dom.md → content/guides/ui-dom-guide.md} +7 -1
  216. package/content/index.json +4344 -0
  217. package/content/index.md +181 -0
  218. package/content/layout/align.md +20 -0
  219. package/content/layout/anchor.md +19 -0
  220. package/content/layout/app-shell.md +23 -0
  221. package/content/layout/border.md +20 -0
  222. package/content/layout/center.md +19 -0
  223. package/content/layout/cluster.md +19 -0
  224. package/content/layout/container.md +19 -0
  225. package/content/layout/fill.md +19 -0
  226. package/content/layout/grid.md +19 -0
  227. package/content/layout/hidden.md +22 -0
  228. package/content/layout/layer.md +19 -0
  229. package/content/layout/position.md +22 -0
  230. package/content/layout/row.md +23 -0
  231. package/content/layout/safe-area.md +20 -0
  232. package/content/layout/scroll.md +21 -0
  233. package/content/layout/spacing.md +22 -0
  234. package/content/layout/split.md +19 -0
  235. package/content/layout/stack.md +19 -0
  236. package/content/layout/surface.md +23 -0
  237. package/content/layout/text.md +22 -0
  238. package/content/patterns/app-shell.md +34 -0
  239. package/content/patterns/dashboard.md +36 -0
  240. package/content/patterns/data-screen.md +30 -0
  241. package/content/patterns/detail-page.md +31 -0
  242. package/content/patterns/docs.md +34 -0
  243. package/content/patterns/focus-task.md +34 -0
  244. package/content/patterns/landing.md +35 -0
  245. package/content/patterns/list-page.md +32 -0
  246. package/content/patterns/mobile.md +31 -0
  247. package/content/patterns/settings-page.md +33 -0
  248. package/content/patterns/workspace.md +32 -0
  249. package/dist/cli/apps-typecheck.test.d.ts +11 -0
  250. package/dist/cli/docs.d.ts +2 -0
  251. package/dist/cli/docs.mjs +10961 -0
  252. package/dist/cli/home-flash.test.d.ts +1 -0
  253. package/dist/{components → client/components}/Accordion/Accordion.d.ts +1 -1
  254. package/dist/client/components/ActionSheet/ActionSheet.d.ts +37 -0
  255. package/dist/{components → client/components}/Affix/Affix.d.ts +1 -1
  256. package/dist/{components → client/components}/AiChat/AiChat.d.ts +3 -3
  257. package/dist/{components → client/components}/Alert/Alert.d.ts +1 -1
  258. package/dist/{components → client/components}/AlertGroup/AlertGroup.d.ts +1 -1
  259. package/dist/{components → client/components}/Anchor/Anchor.d.ts +1 -1
  260. package/dist/client/components/AppShell/AppShell.d.ts +55 -0
  261. package/dist/{components → client/components}/ApprovalCard/ApprovalCard.d.ts +2 -2
  262. package/dist/{components → client/components}/AspectRatio/AspectRatio.d.ts +1 -1
  263. package/dist/{components → client/components}/AuthPage/AuthPage.d.ts +2 -2
  264. package/dist/{components → client/components}/AutoComplete/AutoComplete.d.ts +1 -1
  265. package/dist/{components → client/components}/Avatar/Avatar.d.ts +1 -1
  266. package/dist/{components → client/components}/AvatarGroup/AvatarGroup.d.ts +1 -1
  267. package/dist/{components → client/components}/BackTop/BackTop.d.ts +1 -1
  268. package/dist/{components → client/components}/Badge/Badge.d.ts +1 -1
  269. package/dist/{components → client/components}/Breadcrumb/Breadcrumb.d.ts +1 -1
  270. package/dist/{components → client/components}/Button/Button.d.ts +1 -1
  271. package/dist/{components → client/components}/Calendar/Calendar.d.ts +1 -1
  272. package/dist/{components → client/components}/Card/Card.d.ts +1 -1
  273. package/dist/{components → client/components}/Carousel/Carousel.d.ts +1 -1
  274. package/dist/{components → client/components}/Cascader/Cascader.d.ts +1 -1
  275. package/dist/{components → client/components}/Chart/Chart.d.ts +1 -1
  276. package/dist/{components → client/components}/Chart/chart-utils.d.ts +5 -1
  277. package/dist/{components → client/components}/ChatInput/ChatInput.d.ts +7 -7
  278. package/dist/{components → client/components}/Checkbox/Checkbox.d.ts +1 -1
  279. package/dist/{components → client/components}/CheckboxGroup/CheckboxGroup.d.ts +1 -1
  280. package/dist/{components → client/components}/CitationCard/CitationCard.d.ts +3 -3
  281. package/dist/{components → client/components}/CodeBlock/CodeBlock.d.ts +1 -1
  282. package/dist/client/components/CodeEditor/CodeEditor.d.ts +18 -0
  283. package/dist/{components → client/components}/Collapse/Collapse.d.ts +1 -1
  284. package/dist/{components → client/components}/ColorPicker/ColorPicker.d.ts +1 -1
  285. package/dist/{components → client/components}/Command/Command.d.ts +1 -1
  286. package/dist/{components → client/components}/Confirm/Confirm.d.ts +2 -7
  287. package/dist/{components → client/components}/ContextMenu/ContextMenu.d.ts +1 -1
  288. package/dist/{components → client/components}/CopyButton/CopyButton.d.ts +1 -1
  289. package/dist/{components → client/components}/DatePicker/DatePicker.d.ts +2 -2
  290. package/dist/{components → client/components}/Descriptions/Descriptions.d.ts +1 -1
  291. package/dist/{components → client/components}/DiffView/DiffView.d.ts +1 -1
  292. package/dist/{components → client/components}/Divider/Divider.d.ts +1 -1
  293. package/dist/{components → client/components}/Drawer/Drawer.d.ts +1 -1
  294. package/dist/{components → client/components}/Dropdown/Dropdown.d.ts +1 -1
  295. package/dist/client/components/Editor/Editor.d.ts +14 -0
  296. package/dist/client/components/Editor/edit-events.d.ts +27 -0
  297. package/dist/client/components/Editor/model/apply.d.ts +23 -0
  298. package/dist/client/components/Editor/model/diff.d.ts +25 -0
  299. package/dist/client/components/Editor/model/dom.d.ts +27 -0
  300. package/dist/client/components/Editor/model/history.d.ts +21 -0
  301. package/dist/client/components/Editor/model/html.d.ts +16 -0
  302. package/dist/client/components/Editor/model/inverse.d.ts +20 -0
  303. package/dist/client/components/Editor/model/types.d.ts +116 -0
  304. package/dist/client/components/Editor/tools/table.d.ts +10 -0
  305. package/dist/{components → client/components}/Editor/tools/toolbar.d.ts +2 -2
  306. package/dist/client/components/Editor/tools/types.d.ts +40 -0
  307. package/dist/{components → client/components}/EmptyState/EmptyState.d.ts +1 -1
  308. package/dist/client/components/ExportCSV/ExportCSV.d.ts +30 -0
  309. package/dist/{components → client/components}/Field/Field.d.ts +1 -1
  310. package/dist/client/components/FilePreview/FilePreview.d.ts +42 -0
  311. package/dist/client/components/FilePreview/markdown.d.ts +23 -0
  312. package/dist/client/components/FileTree/FileTree.d.ts +57 -0
  313. package/dist/{components → client/components}/FileUpload/FileUpload.d.ts +1 -1
  314. package/dist/{components → client/components}/FloatButton/FloatButton.d.ts +1 -1
  315. package/dist/{components → client/components}/Form/Form.d.ts +1 -1
  316. package/dist/{components → client/components}/Grid/Grid.d.ts +1 -1
  317. package/dist/{components → client/components}/Highlight/Highlight.d.ts +1 -1
  318. package/dist/{components → client/components}/HoverCard/HoverCard.d.ts +5 -4
  319. package/dist/{components → client/components}/Icon/Icon.d.ts +2 -2
  320. package/dist/client/components/ImageCropper/ImageCropper.d.ts +17 -0
  321. package/dist/{components → client/components}/Img/Img.d.ts +1 -1
  322. package/dist/{components → client/components}/InView/InView.d.ts +1 -1
  323. package/dist/{components → client/components}/InfiniteScroll/InfiniteScroll.d.ts +1 -1
  324. package/dist/{components → client/components}/Input/Input.d.ts +1 -1
  325. package/dist/{components → client/components}/InputNumber/InputNumber.d.ts +1 -1
  326. package/dist/{components → client/components}/JSONViewer/JSONViewer.d.ts +1 -1
  327. package/dist/{components → client/components}/JsonSchemaForm/JsonSchemaForm.d.ts +3 -3
  328. package/dist/{components → client/components}/Kanban/Kanban.d.ts +1 -1
  329. package/dist/{components → client/components}/Label/Label.d.ts +1 -1
  330. package/dist/{components → client/components}/Layout/Layout.d.ts +1 -1
  331. package/dist/{components → client/components}/Link/Link.d.ts +1 -1
  332. package/dist/{components → client/components}/List/List.d.ts +1 -1
  333. package/dist/{components → client/components}/Loading/Loading.d.ts +1 -1
  334. package/dist/{components → client/components}/LogViewer/LogViewer.d.ts +1 -1
  335. package/dist/{components → client/components}/Markdown/Markdown.d.ts +1 -1
  336. package/dist/client/components/MarkdownEditor/MarkdownEditor.d.ts +18 -0
  337. package/dist/client/components/Math/Math.d.ts +15 -0
  338. package/dist/{components → client/components}/Mentions/Mentions.d.ts +1 -1
  339. package/dist/{components → client/components}/Menu/Menu.d.ts +1 -1
  340. package/dist/{components → client/components}/Menubar/Menubar.d.ts +1 -1
  341. package/dist/{components → client/components}/MessageBubble/MessageBubble.d.ts +1 -1
  342. package/dist/{components → client/components}/Modal/Modal.d.ts +1 -1
  343. package/dist/{components → client/components}/NavMenu/NavMenu.d.ts +2 -2
  344. package/dist/{components → client/components}/Notification/Notification.d.ts +7 -2
  345. package/dist/client/components/OfficeEditor/ai/ai-bridge.d.ts +39 -0
  346. package/dist/client/components/OfficeEditor/model/apply.d.ts +25 -0
  347. package/dist/client/components/OfficeEditor/model/types.d.ts +224 -0
  348. package/dist/{components → client/components}/PageHeader/PageHeader.d.ts +1 -1
  349. package/dist/{components → client/components}/Pagination/Pagination.d.ts +1 -1
  350. package/dist/{components → client/components}/PasswordInput/PasswordInput.d.ts +1 -1
  351. package/dist/{components → client/components}/PinInput/PinInput.d.ts +1 -1
  352. package/dist/{components → client/components}/Pipeline/Pipeline.d.ts +1 -1
  353. package/dist/{components → client/components}/Popconfirm/Popconfirm.d.ts +2 -2
  354. package/dist/{components → client/components}/Popover/Popover.d.ts +5 -4
  355. package/dist/{components → client/components}/ProgressBar/ProgressBar.d.ts +1 -1
  356. package/dist/client/components/PromptTemplate/PromptTemplate.d.ts +37 -0
  357. package/dist/{components → client/components}/QRCode/QRCode.d.ts +1 -1
  358. package/dist/{components → client/components}/RadioGroup/RadioGroup.d.ts +1 -1
  359. package/dist/{components → client/components}/Rate/Rate.d.ts +1 -1
  360. package/dist/{components → client/components}/ReasoningBlock/ReasoningBlock.d.ts +3 -3
  361. package/dist/client/components/RelationGraph/RelationGraph.d.ts +59 -0
  362. package/dist/{components → client/components}/Resizable/Resizable.d.ts +1 -1
  363. package/dist/{components → client/components}/Result/Result.d.ts +1 -1
  364. package/dist/{components → client/components}/Scrollbar/Scrollbar.d.ts +1 -1
  365. package/dist/{components → client/components}/SearchInput/SearchInput.d.ts +1 -1
  366. package/dist/{components → client/components}/SegmentedControl/SegmentedControl.d.ts +1 -1
  367. package/dist/{components → client/components}/Select/Select.d.ts +1 -1
  368. package/dist/{components → client/components}/SessionList/SessionList.d.ts +3 -3
  369. package/dist/client/components/SheetGrid/SheetGrid.d.ts +30 -0
  370. package/dist/{components → client/components}/Skeleton/Skeleton.d.ts +1 -1
  371. package/dist/client/components/SlideCanvas/SlideCanvas.d.ts +28 -0
  372. package/dist/client/components/Slider/Slider.d.ts +27 -0
  373. package/dist/client/components/SortableList/SortableList.d.ts +23 -0
  374. package/dist/{components → client/components}/Space/Space.d.ts +1 -1
  375. package/dist/{components → client/components}/Sparkline/Sparkline.d.ts +1 -1
  376. package/dist/{components → client/components}/StatCard/StatCard.d.ts +1 -1
  377. package/dist/{components → client/components}/Steps/Steps.d.ts +1 -1
  378. package/dist/{components → client/components}/Switch/Switch.d.ts +1 -1
  379. package/dist/client/components/TabBar/TabBar.d.ts +35 -0
  380. package/dist/{components → client/components}/Table/Table.d.ts +7 -1
  381. package/dist/client/components/Tabs/Tabs.d.ts +22 -0
  382. package/dist/{components → client/components}/Tag/Tag.d.ts +1 -1
  383. package/dist/{components → client/components}/TagsInput/TagsInput.d.ts +1 -1
  384. package/dist/{components → client/components}/Textarea/Textarea.d.ts +1 -1
  385. package/dist/{components → client/components}/ThemeSwitch/ThemeSwitch.d.ts +1 -1
  386. package/dist/{components → client/components}/Timeline/Timeline.d.ts +1 -1
  387. package/dist/{components → client/components}/Toast/Toast.d.ts +1 -1
  388. package/dist/{components → client/components}/ToggleGroup/ToggleGroup.d.ts +1 -1
  389. package/dist/{components → client/components}/ToolCallCard/ToolCallCard.d.ts +2 -2
  390. package/dist/{components → client/components}/Tooltip/Tooltip.d.ts +4 -3
  391. package/dist/{components → client/components}/Tour/Tour.d.ts +1 -1
  392. package/dist/{components → client/components}/Transfer/Transfer.d.ts +1 -1
  393. package/dist/{components → client/components}/Tree/Tree.d.ts +5 -1
  394. package/dist/{components → client/components}/TreeSelect/TreeSelect.d.ts +5 -1
  395. package/dist/{components → client/components}/Typography/Typography.d.ts +1 -1
  396. package/dist/client/components/VideoPlayer/VideoPlayer.d.ts +25 -0
  397. package/dist/{components → client/components}/VirtualList/VirtualList.d.ts +1 -1
  398. package/dist/{components → client/components}/VirtualTable/VirtualTable.d.ts +1 -1
  399. package/dist/{components → client/components}/Watermark/Watermark.d.ts +1 -1
  400. package/dist/client/components/Wave/Wave.d.ts +15 -0
  401. package/dist/{components → client/components}/index.d.ts +48 -2
  402. package/dist/client/components/index.js +57 -0
  403. package/dist/{components → client/components}/style.css +3554 -1896
  404. package/dist/{layout → client/layout}/weifuwu-layout.css +60 -6
  405. package/dist/client/office/docx.d.ts +33 -0
  406. package/dist/client/office/pptx.d.ts +24 -0
  407. package/dist/client/office/xlsx.d.ts +25 -0
  408. package/dist/client/office/xml-serialize.d.ts +18 -0
  409. package/dist/client/office/xml.d.ts +21 -0
  410. package/dist/client/office/zip.d.ts +21 -0
  411. package/dist/client/vdom/browser/Browser.d.ts +73 -0
  412. package/dist/client/vdom/browser/create-client-browser.d.ts +11 -0
  413. package/dist/client/vdom/commands.d.ts +19 -0
  414. package/dist/client/vdom/context/UIContext.d.ts +61 -0
  415. package/dist/client/vdom/context/data.d.ts +17 -0
  416. package/dist/client/vdom/core/async-guard.d.ts +20 -0
  417. package/dist/client/vdom/core/build.d.ts +36 -0
  418. package/dist/client/vdom/core/command/create.d.ts +25 -0
  419. package/dist/client/vdom/core/command/index.d.ts +15 -0
  420. package/dist/client/vdom/core/command/insert.d.ts +32 -0
  421. package/dist/client/vdom/core/command/lifecycle.d.ts +47 -0
  422. package/dist/client/vdom/core/command/props.d.ts +22 -0
  423. package/dist/client/vdom/core/diff/attrs.d.ts +10 -0
  424. package/dist/client/vdom/core/diff/children.d.ts +29 -0
  425. package/dist/client/vdom/core/diff/cleanup.d.ts +44 -0
  426. package/dist/client/vdom/core/diff/index.d.ts +22 -0
  427. package/dist/client/vdom/core/diff/output.d.ts +30 -0
  428. package/dist/client/vdom/core/diff/same.d.ts +22 -0
  429. package/dist/client/vdom/core/field/attributes.d.ts +15 -0
  430. package/dist/client/vdom/core/field/events.d.ts +54 -0
  431. package/dist/client/vdom/core/field/index.d.ts +19 -0
  432. package/dist/client/vdom/core/field/key.d.ts +16 -0
  433. package/dist/client/vdom/core/field/props.d.ts +15 -0
  434. package/dist/client/vdom/core/field/ref.d.ts +38 -0
  435. package/dist/client/vdom/core/field/style.d.ts +17 -0
  436. package/dist/client/vdom/core/node/children.d.ts +20 -0
  437. package/dist/client/vdom/core/node/component.d.ts +93 -0
  438. package/dist/client/vdom/core/node/fragment.d.ts +14 -0
  439. package/dist/client/vdom/core/node/hole.d.ts +22 -0
  440. package/dist/client/vdom/core/node/index.d.ts +35 -0
  441. package/dist/client/vdom/core/node/keyed.d.ts +64 -0
  442. package/dist/client/vdom/core/node/native.d.ts +20 -0
  443. package/dist/client/vdom/core/node/portal.d.ts +11 -0
  444. package/dist/client/vdom/core/patch/fields.d.ts +15 -0
  445. package/dist/client/vdom/core/patch/index.d.ts +51 -0
  446. package/dist/client/vdom/core/patch/processors.d.ts +75 -0
  447. package/dist/client/vdom/core/patch/state-machine.d.ts +38 -0
  448. package/dist/client/vdom/core/patch/verify.d.ts +17 -0
  449. package/dist/client/vdom/core/router.d.ts +31 -0
  450. package/dist/client/vdom/core/serve.d.ts +75 -0
  451. package/dist/client/vdom/core/ssr/absorb.d.ts +53 -0
  452. package/dist/client/vdom/core/ssr/html.d.ts +32 -0
  453. package/dist/client/vdom/core/ssr/index.d.ts +25 -0
  454. package/dist/client/vdom/core/transform/component.d.ts +23 -0
  455. package/dist/client/vdom/core/transform/element.d.ts +21 -0
  456. package/dist/client/vdom/core/transform/fragment.d.ts +21 -0
  457. package/dist/client/vdom/core/transform/hole.d.ts +13 -0
  458. package/dist/client/vdom/core/transform/index.d.ts +46 -0
  459. package/dist/client/vdom/core/transform/states.d.ts +22 -0
  460. package/dist/client/vdom/core/transform/table.d.ts +28 -0
  461. package/dist/client/vdom/core/transform/text.d.ts +10 -0
  462. package/dist/client/vdom/core/vnode.d.ts +45 -0
  463. package/dist/client/vdom/dev/effect-guard.d.ts +8 -0
  464. package/dist/client/vdom/hooks/ai-stream.d.ts +46 -0
  465. package/dist/client/vdom/hooks/basic.d.ts +42 -0
  466. package/dist/client/vdom/hooks/chat.d.ts +91 -0
  467. package/dist/client/vdom/hooks/controlled.d.ts +27 -0
  468. package/dist/client/vdom/hooks/drag-media.d.ts +52 -0
  469. package/dist/client/vdom/hooks/env.d.ts +119 -0
  470. package/dist/client/vdom/hooks/input.d.ts +43 -0
  471. package/dist/client/vdom/hooks/observe.d.ts +60 -0
  472. package/dist/client/vdom/hooks/popup-manager.d.ts +92 -0
  473. package/dist/client/vdom/hooks/popup.d.ts +52 -0
  474. package/dist/client/vdom/hooks/stable.d.ts +45 -0
  475. package/dist/client/vdom/index.d.ts +67 -0
  476. package/dist/client/vdom/index.js +8 -0
  477. package/dist/client/vdom/jsx-runtime.d.ts +28 -0
  478. package/dist/client/vdom/jsx-runtime.js +1 -0
  479. package/dist/client/vdom/middlewares/api.d.ts +38 -0
  480. package/dist/client/vdom/middlewares/auth-i18n.d.ts +66 -0
  481. package/dist/client/vdom/middlewares/ws.d.ts +37 -0
  482. package/dist/client/vdom/store.d.ts +49 -0
  483. package/dist/client/vdom/testing.d.ts +46 -0
  484. package/dist/client/vdom/testing.js +2 -0
  485. package/dist/dev/index.d.ts +12 -0
  486. package/dist/dev/index.js +4 -4
  487. package/dist/{ai → server/ai}/contracts.d.ts +1 -1
  488. package/dist/{ai → server/ai}/index.d.ts +2 -2
  489. package/dist/{ai → server/ai}/types.d.ts +1 -1
  490. package/dist/{core → server/core}/router.d.ts +2 -4
  491. package/dist/{db → server/db}/contracts.d.ts +1 -1
  492. package/dist/server/db/postgres-server.d.ts +37 -0
  493. package/dist/server/db/redis-server.d.ts +32 -0
  494. package/dist/server/db/server.d.ts +30 -0
  495. package/dist/server/db/test-servers.d.ts +21 -0
  496. package/dist/{email → server/email}/contracts.d.ts +1 -1
  497. package/dist/{index.js → server/index.js} +3147 -2462
  498. package/dist/{ui → server/ui}/index.d.ts +2 -2
  499. package/dist/{user → server/user}/token.d.ts +1 -1
  500. package/dist/shared/router/trie.d.ts +61 -0
  501. package/docs/components-map.md +16 -4
  502. package/docs/style-guide.md +14 -2
  503. package/examples/apps/admin/README.md +23 -0
  504. package/examples/apps/admin/api.ts +27 -0
  505. package/examples/apps/admin/app.tsx +144 -0
  506. package/examples/apps/admin/main.tsx +8 -0
  507. package/examples/apps/admin/server.ts +37 -0
  508. package/examples/apps/auth/README.md +23 -0
  509. package/examples/apps/auth/api.ts +49 -0
  510. package/examples/apps/auth/app.tsx +137 -0
  511. package/examples/apps/auth/main.tsx +8 -0
  512. package/examples/apps/auth/server.ts +37 -0
  513. package/examples/apps/multi/README.md +23 -0
  514. package/examples/apps/multi/app.tsx +83 -0
  515. package/examples/apps/multi/main.tsx +8 -0
  516. package/examples/apps/multi/server.ts +33 -0
  517. package/examples/apps/todo/README.md +23 -0
  518. package/examples/apps/todo/api.ts +26 -0
  519. package/examples/apps/todo/app.tsx +128 -0
  520. package/examples/apps/todo/main.tsx +9 -0
  521. package/examples/apps/todo/server.ts +39 -0
  522. package/examples/hello-world/README.md +9 -0
  523. package/examples/hello-world/client.ts +14 -0
  524. package/examples/hello-world/routes.tsx +26 -0
  525. package/examples/hello-world/server.ts +46 -0
  526. package/examples/patterns/AppShell.tsx +224 -0
  527. package/examples/patterns/Dashboard.tsx +153 -0
  528. package/examples/patterns/DataScreen.tsx +104 -0
  529. package/examples/patterns/DetailPage.tsx +79 -0
  530. package/examples/patterns/Docs.tsx +105 -0
  531. package/examples/patterns/FocusTask.tsx +67 -0
  532. package/examples/patterns/Landing.tsx +90 -0
  533. package/examples/patterns/ListPage.tsx +77 -0
  534. package/examples/patterns/Mobile.tsx +154 -0
  535. package/examples/patterns/SettingsPage.tsx +98 -0
  536. package/examples/patterns/SplitWorkspace.tsx +113 -0
  537. package/package.json +61 -29
  538. package/dist/components/Editor/Editor.d.ts +0 -13
  539. package/dist/components/Editor/tools/format.d.ts +0 -11
  540. package/dist/components/Editor/tools/table.d.ts +0 -7
  541. package/dist/components/Editor/tools/types.d.ts +0 -15
  542. package/dist/components/Slider/Slider.d.ts +0 -19
  543. package/dist/components/Tabs/Tabs.d.ts +0 -12
  544. package/dist/components/index.js +0 -15
  545. package/dist/ui-dom/Confirm.d.ts +0 -8
  546. package/dist/ui-dom/Notification.d.ts +0 -8
  547. package/dist/ui-dom/Toast.d.ts +0 -8
  548. package/dist/ui-dom/ai.d.ts +0 -59
  549. package/dist/ui-dom/browser.d.ts +0 -10
  550. package/dist/ui-dom/debug.d.ts +0 -21
  551. package/dist/ui-dom/hooks/chat.d.ts +0 -11
  552. package/dist/ui-dom/hooks/events.d.ts +0 -30
  553. package/dist/ui-dom/hooks/external.d.ts +0 -20
  554. package/dist/ui-dom/hooks/index.d.ts +0 -29
  555. package/dist/ui-dom/hooks/input.d.ts +0 -33
  556. package/dist/ui-dom/hooks/media.d.ts +0 -17
  557. package/dist/ui-dom/hooks/popup.d.ts +0 -30
  558. package/dist/ui-dom/hooks/stable.d.ts +0 -35
  559. package/dist/ui-dom/hooks/types.d.ts +0 -77
  560. package/dist/ui-dom/i18n.d.ts +0 -31
  561. package/dist/ui-dom/index.d.ts +0 -47
  562. package/dist/ui-dom/index.js +0 -41
  563. package/dist/ui-dom/jsx-runtime.d.ts +0 -4
  564. package/dist/ui-dom/jsx-runtime.js +0 -1
  565. package/dist/ui-dom/locale/en_US.d.ts +0 -55
  566. package/dist/ui-dom/locale/zh_CN.d.ts +0 -55
  567. package/dist/ui-dom/middleware/api.d.ts +0 -91
  568. package/dist/ui-dom/middleware/auth.d.ts +0 -30
  569. package/dist/ui-dom/middleware/ws.d.ts +0 -33
  570. package/dist/ui-dom/motion.d.ts +0 -8
  571. package/dist/ui-dom/popup-tracker.d.ts +0 -36
  572. package/dist/ui-dom/popup.d.ts +0 -42
  573. package/dist/ui-dom/store.d.ts +0 -24
  574. package/dist/ui-dom/testing.d.ts +0 -68
  575. package/dist/ui-dom/testing.js +0 -7
  576. package/dist/ui-dom/types.d.ts +0 -632
  577. package/dist/ui-dom/use-chat.d.ts +0 -95
  578. package/dist/ui-dom/vdom3/README.d.ts +0 -32
  579. package/dist/ui-dom/vdom3/app.d.ts +0 -20
  580. package/dist/ui-dom/vdom3/audit.d.ts +0 -29
  581. package/dist/ui-dom/vdom3/build.d.ts +0 -20
  582. package/dist/ui-dom/vdom3/commands.d.ts +0 -21
  583. package/dist/ui-dom/vdom3/comp-index.d.ts +0 -18
  584. package/dist/ui-dom/vdom3/delegate.d.ts +0 -48
  585. package/dist/ui-dom/vdom3/events.d.ts +0 -17
  586. package/dist/ui-dom/vdom3/index.d.ts +0 -42
  587. package/dist/ui-dom/vdom3/jsx.d.ts +0 -32
  588. package/dist/ui-dom/vdom3/record.d.ts +0 -16
  589. package/dist/ui-dom/vdom3/registry.d.ts +0 -30
  590. package/dist/ui-dom/vdom3/render.d.ts +0 -39
  591. package/dist/ui-dom/vdom3/replay.d.ts +0 -28
  592. package/dist/ui-dom/vdom3/root.d.ts +0 -24
  593. package/dist/ui-dom/vdom3/router.d.ts +0 -31
  594. package/dist/ui-dom/vdom3/scheduler.d.ts +0 -23
  595. package/dist/ui-dom/vdom3/ssr.d.ts +0 -27
  596. package/dist/ui-dom/vdom3/sync.d.ts +0 -22
  597. package/dist/ui-dom/vdom3/types.d.ts +0 -173
  598. package/dist/ui-dom/vdom3/ui.d.ts +0 -16
  599. package/dist/ui-dom/vdom3.js +0 -41
  600. package/dist/ui-dom/vnode.d.ts +0 -13
  601. /package/dist/{make-executable-schema.test.d.ts → cli/content-sync.test.d.ts} +0 -0
  602. /package/dist/{ui-dom/testing.test.d.ts → cli/docs-cli.test.d.ts} +0 -0
  603. /package/dist/{components → client/components}/CodeBlock/highlight.d.ts +0 -0
  604. /package/dist/{components → client/components}/DatePicker/calendar-utils.d.ts +0 -0
  605. /package/dist/{components → client/components}/DiffView/diff-utils.d.ts +0 -0
  606. /package/dist/{components → client/components}/Markdown/parser.d.ts +0 -0
  607. /package/dist/{components → client/components}/Pipeline/dag-utils.d.ts +0 -0
  608. /package/dist/{components → client/components}/QRCode/qr.d.ts +0 -0
  609. /package/dist/{components → client/components}/Sparkline/sparkline-utils.d.ts +0 -0
  610. /package/dist/{ai → server/ai}/agent.d.ts +0 -0
  611. /package/dist/{ai → server/ai}/client.d.ts +0 -0
  612. /package/dist/{ai → server/ai}/sse.d.ts +0 -0
  613. /package/dist/{core → server/core}/serve.d.ts +0 -0
  614. /package/dist/{core → server/core}/ws.d.ts +0 -0
  615. /package/dist/{db → server/db}/errors.d.ts +0 -0
  616. /package/dist/{db → server/db}/memory-redis.d.ts +0 -0
  617. /package/dist/{db → server/db}/memory-sql.d.ts +0 -0
  618. /package/dist/{db → server/db}/postgres/connection.d.ts +0 -0
  619. /package/dist/{db → server/db}/postgres/pool.d.ts +0 -0
  620. /package/dist/{db → server/db}/postgres/protocol.d.ts +0 -0
  621. /package/dist/{db → server/db}/postgres/schema.d.ts +0 -0
  622. /package/dist/{db → server/db}/query-builder.d.ts +0 -0
  623. /package/dist/{db → server/db}/query.d.ts +0 -0
  624. /package/dist/{db → server/db}/redis/client.d.ts +0 -0
  625. /package/dist/{db → server/db}/redis/commands.d.ts +0 -0
  626. /package/dist/{db → server/db}/redis/connection.d.ts +0 -0
  627. /package/dist/{db → server/db}/redis/pipeline.d.ts +0 -0
  628. /package/dist/{db → server/db}/redis/pool.d.ts +0 -0
  629. /package/dist/{db → server/db}/redis/resp.d.ts +0 -0
  630. /package/dist/{db → server/db}/redis/subscriber.d.ts +0 -0
  631. /package/dist/{db → server/db}/sql-parser.d.ts +0 -0
  632. /package/dist/{email → server/email}/index.d.ts +0 -0
  633. /package/dist/{email → server/email}/smtp.d.ts +0 -0
  634. /package/dist/{graphql.d.ts → server/graphql.d.ts} +0 -0
  635. /package/dist/{index.d.ts → server/index.d.ts} +0 -0
  636. /package/dist/{make-executable-schema.d.ts → server/make-executable-schema.d.ts} +0 -0
  637. /package/dist/{messager → server/messager}/index.d.ts +0 -0
  638. /package/dist/{middleware → server/middleware}/cors.d.ts +0 -0
  639. /package/dist/{middleware → server/middleware}/rate-limit.d.ts +0 -0
  640. /package/dist/{middleware → server/middleware}/static.d.ts +0 -0
  641. /package/dist/{postgres → server/postgres}/client.d.ts +0 -0
  642. /package/dist/{postgres → server/postgres}/index.d.ts +0 -0
  643. /package/dist/{postgres → server/postgres}/types.d.ts +0 -0
  644. /package/dist/{queue → server/queue}/index.d.ts +0 -0
  645. /package/dist/{redis → server/redis}/client.d.ts +0 -0
  646. /package/dist/{redis → server/redis}/index.d.ts +0 -0
  647. /package/dist/{redis → server/redis}/types.d.ts +0 -0
  648. /package/dist/{request.d.ts → server/request.d.ts} +0 -0
  649. /package/dist/{response.d.ts → server/response.d.ts} +0 -0
  650. /package/dist/{scheduler → server/scheduler}/cron.d.ts +0 -0
  651. /package/dist/{scheduler → server/scheduler}/index.d.ts +0 -0
  652. /package/dist/{types.d.ts → server/types.d.ts} +0 -0
  653. /package/dist/{ui → server/ui}/html-safe.d.ts +0 -0
  654. /package/dist/{user → server/user}/index.d.ts +0 -0
  655. /package/dist/{user → server/user}/password.d.ts +0 -0
@@ -0,0 +1,27 @@
1
+ /**
2
+ * weifuwu/components/Editor/model/dom — offset ↔ DOM 桥
3
+ *
4
+ * doc.text 的 offset 与 contentEditable DOM 的双向映射:
5
+ * - 文本节点:按 nodeValue.length 累加
6
+ * - 嵌入元素(IMG/TABLE/HR):占位符 1 个 offset(与模型 embeds 对应)
7
+ * - **块级元素边界:计 1 个 \n**(模型段分隔——serialize 输出块标签,
8
+ * \n 无 DOM 文本节点——不计数则 offset 偏 1(真实事故:AI 选区替换错位))
9
+ *
10
+ * 前提:DOM 内容 = serialize(doc) 的渲染(文本 + 嵌入 + 块结构对应)。
11
+ */
12
+ /** 嵌入元素判定(与 html.ts EMBED_TAGS 一致) */
13
+ export declare function isEmbedElement(el: Element): boolean;
14
+ /** Range → 文档 offset(相对 root 内容起点) */
15
+ export declare function rangeToOffsets(root: HTMLElement, range: Range): {
16
+ start: number;
17
+ end: number;
18
+ };
19
+ /** 当前选区 → offsets(编辑器内/无 DOM 时返回 null) */
20
+ export declare function selectionOffsets(root: HTMLElement | null): {
21
+ start: number;
22
+ end: number;
23
+ } | null;
24
+ /** offset 区间 → Range(恢复选区;越界时 clamp 到内容末尾) */
25
+ export declare function offsetsToRange(root: HTMLElement, start: number, end: number): Range | null;
26
+ /** offsets → 选区(focus + 设置) */
27
+ export declare function setSelectionOffsets(root: HTMLElement | null, start: number, end: number): void;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * weifuwu/components/Editor/model/history — undo/redo 栈(commit 粒度)
3
+ *
4
+ * 撤销粒度 = commit 粒度(AI 流式接受 = 1 个 commit = 1 个撤销步)。
5
+ * 栈本身只存事件——状态折叠由调用方(Editor 层)执行 applyEdit。
6
+ */
7
+ import type { Commit } from './types.ts';
8
+ export interface HistoryState {
9
+ undoStack: Commit[];
10
+ redoStack: Commit[];
11
+ }
12
+ export declare function createHistory(maxDepth?: number): HistoryState;
13
+ /** 压入新 commit(清空 redo 栈——新分支;超深丢弃最旧) */
14
+ export declare function pushCommit(h: HistoryState, commit: Commit, maxDepth?: number): void;
15
+ /** 弹出 undo 栈顶(不动 redo——由调用方折叠后决定;返回 null = 无可撤销) */
16
+ export declare function popUndo(h: HistoryState): Commit | null;
17
+ /** 弹出 redo 栈顶(同时收回 undo——撤销后重做路径一致) */
18
+ export declare function popRedo(h: HistoryState): Commit | null;
19
+ export declare function canUndo(h: HistoryState): boolean;
20
+ export declare function canRedo(h: HistoryState): boolean;
21
+ export declare function clearHistory(h: HistoryState): void;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * weifuwu/components/Editor/model/html — HTML ⇄ DocState 序列化
3
+ *
4
+ * 只认 Editor 格式子集(诚实裁剪):p/div/h1-3/blockquote/ul/ol(块)、
5
+ * b/strong/i/em/u/a(内联)、img/table/hr(embed 快照——内部不解析)、
6
+ * text-align(inline style 或 wf-text-* class)。未知标签降级取文本。
7
+ *
8
+ * parse 需要 DOM(DOMParser)——浏览器环境全局可用;测试注入 jsdom document。
9
+ */
10
+ import type { DocState } from './types.ts';
11
+ /** HTML → DocState(doc 可注入——jsdom 测试;浏览器默认全局) */
12
+ export declare function parseHtml(html: string, doc?: Document): DocState;
13
+ /** DocState → HTML(块标签 + 对齐 + marks + embeds;相邻 ul/ol 段合并列表) */
14
+ export declare function serializeHtml(doc: DocState): string;
15
+ /** 往返幂等校验辅助:parse → serialize → parse 不再变化 */
16
+ export declare function normalizeHtml(html: string, doc?: Document): string;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * weifuwu/components/Editor/model/inverse — 事件逆操作(undo 基元)
3
+ *
4
+ * 任意事件 → 逆事件(与 vdom3 events.ts inverse() 同构)。不变量:
5
+ * applyEdit(applyEdit(doc, ev), inverseEdit(ev)) === doc。
6
+ */
7
+ import type { DocState, EditEvent, EmbedSpan } from './types.ts';
8
+ import { EMBED_CHAR } from './types.ts';
9
+ /** 逆操作可能产生多个事件(text-delete 覆盖 embed → 恢复条目需补 embed-insert) */
10
+ export type InverseResult = EditEvent | EditEvent[];
11
+ /**
12
+ * 逆操作(undo 审计/验证用——生产 undo 走 commit 快照)。
13
+ * doc 可选:text-insert/ai-apply 的逆需要操作后文档提取区间内段属性
14
+ * (text-delete 校验要求——无 doc 时跳过(不精确——仅审计场景))。
15
+ */
16
+ export declare function inverseEdit(ev: EditEvent, doc?: DocState): InverseResult;
17
+ /** commit 的逆(事件逆序 + 各自逆操作展开——undo 应用顺序) */
18
+ export declare function inverseCommit(events: EditEvent[]): EditEvent[];
19
+ export { EMBED_CHAR };
20
+ export type { EmbedSpan };
@@ -0,0 +1,116 @@
1
+ /**
2
+ * weifuwu/components/Editor/model — 文档模型(事件流底座)
3
+ *
4
+ * 核心不变量(design/editor-events-plan.md):文档状态 = fold(edit 事件流)。
5
+ * 本文档模型是纯 TS 数据结构 + 纯函数(无 DOM、无 UI)——阶段 0 验收:
6
+ * 折叠不变量(fuzz)/ 逆操作 / HTML 往返。
7
+ *
8
+ * 模型设计:
9
+ * - text 为全文纯文本,`\n` 为段落分隔符(offset 连续——选区/diff/提示词天然)
10
+ * - blockProps:非默认块属性(按段起点 offset 记录;段结构由 text 派生)
11
+ * - marks:内联格式区间(左闭右开;b/i/u/link 可重叠)
12
+ * - embeds:img/table/hr 用占位符 `\uFFFC` 占 1 个字符位(标准对象替换字符)
13
+ */
14
+ /** 块类型(p 为默认——不记录) */
15
+ export type BlockKind = 'p' | 'h1' | 'h2' | 'h3' | 'ul' | 'ol' | 'quote';
16
+ export type Align = 'left' | 'center' | 'right';
17
+ export type MarkType = 'b' | 'i' | 'u' | 'link';
18
+ /** 非默认块属性(段起点 offset → 块格式) */
19
+ export interface BlockProp {
20
+ start: number;
21
+ kind: BlockKind;
22
+ align?: Align;
23
+ }
24
+ /** 内联格式区间 */
25
+ export interface MarkSpan {
26
+ start: number;
27
+ end: number;
28
+ type: MarkType;
29
+ href?: string;
30
+ }
31
+ /** 嵌入(占位符 \uFFFC 占据 text 1 字符位;id 唯一——删除按 id 精确匹配) */
32
+ export interface EmbedSpan {
33
+ id: string;
34
+ at: number;
35
+ type: 'img' | 'table' | 'hr' | 'pre';
36
+ html: string;
37
+ }
38
+ /** 文档状态(不可变——applyEdit 返回新对象;undo/redo 快照对比免费) */
39
+ export interface DocState {
40
+ text: string;
41
+ blockProps: BlockProp[];
42
+ marks: MarkSpan[];
43
+ embeds: EmbedSpan[];
44
+ }
45
+ export declare const EMPTY_DOC: DocState;
46
+ /** 嵌入占位符(OBJECT REPLACEMENT CHARACTER——业界标准) */
47
+ export declare const EMBED_CHAR = "\uFFFC";
48
+ export type EditEvent = {
49
+ type: 'text-insert';
50
+ at: number;
51
+ text: string;
52
+ } | {
53
+ type: 'text-delete';
54
+ at: number;
55
+ len: number;
56
+ removed: string;
57
+ removedEmbeds: EmbedSpan[];
58
+ /** 被完整删除的段属性(起点在区间内)——逆操作恢复段格式(合并段继承丢失) */
59
+ removedBlocks: BlockProp[];
60
+ } | {
61
+ type: 'mark-apply';
62
+ start: number;
63
+ end: number;
64
+ mark: MarkType;
65
+ on: boolean;
66
+ href?: string;
67
+ prev: MarkSpan[];
68
+ }
69
+ /** 绝对恢复(mark 逆操作——区间表示不可逆,undo 用快照精确还原) */
70
+ | {
71
+ type: 'mark-restore';
72
+ mark: MarkType;
73
+ spans: MarkSpan[];
74
+ prev: MarkSpan[];
75
+ } | {
76
+ type: 'block-set';
77
+ start: number;
78
+ kind: BlockKind;
79
+ align?: Align | null;
80
+ prev: BlockProp | null;
81
+ } | {
82
+ type: 'embed-insert';
83
+ at: number;
84
+ embed: EmbedSpan;
85
+ } | {
86
+ type: 'embed-delete';
87
+ at: number;
88
+ embed: EmbedSpan;
89
+ }
90
+ /** 快照式:AI 替换(original 由创建者提供——diff 面板直接读;原子撤销一步;
91
+ * removedEmbeds/removedBlocks:区间内嵌入与被删段属性——逆操作恢复) */
92
+ | {
93
+ type: 'ai-apply';
94
+ start: number;
95
+ end: number;
96
+ original: string;
97
+ revised: string;
98
+ removedEmbeds: EmbedSpan[];
99
+ removedBlocks: BlockProp[];
100
+ };
101
+ /** 事务边界:N 个事件 = 1 个撤销步(AI 流式接受 = 1 个 commit)
102
+ * before:操作前状态快照——undo 精确恢复(mark 区间表示不可逆——
103
+ * 收缩/合并后无法从逆事件还原;快照 + 重放混合:undo=恢复 before,
104
+ * redo=从 before 重放 events——vdom3 remove 逆操作存快照同款先例) */
105
+ export interface Commit {
106
+ label: string;
107
+ events: EditEvent[];
108
+ before: DocState;
109
+ /** 操作时间(历史面板显示;缺省 = 记录时) */
110
+ ts?: number;
111
+ /** 操作前光标(undo 恢复位置;可选——默认不恢复) */
112
+ caret?: {
113
+ start: number;
114
+ end: number;
115
+ };
116
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * weifuwu/components/Editor/tools — 表格工具
3
+ *
4
+ * 事件流事务层(design/editor-events-plan.md 阶段 1):表格 = embed 事件——
5
+ * 本模块只生成 HTML(不再操作 DOM/execCommand)。
6
+ */
7
+ /** 生成表格 HTML(表头行加粗——模型 embed 快照) */
8
+ export declare function tableHtml(rows: number, cols: number): string;
9
+ /** 渲染 6×6 表格选择网格 */
10
+ export declare function renderTableGrid(hoverRow: number, hoverCol: number, onSelect: (rows: number, cols: number) => void, onHover: (row: number, col: number) => void, onLeave: () => void): any;
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * weifuwu/components/Editor/tools — 工具栏渲染
3
3
  */
4
- import type { VNode } from '../../../ui-dom/vnode.ts';
4
+ import type { VNode } from '../../../vdom/index.ts';
5
5
  import type { FormatState, ToolbarItem } from './types.ts';
6
6
  export declare const DEFAULT_TOOLBAR: ToolbarItem[];
7
7
  export declare const TOOLBAR_LABELS: Record<ToolbarItem, string>;
8
8
  export declare const TOOLBAR_TITLES: Record<ToolbarItem, string>;
9
- export declare function renderToolbar(items: ToolbarItem[], active: FormatState, isSource: boolean, onItem: (item: ToolbarItem) => void, customRender?: Record<string, (item: ToolbarItem) => VNode>): VNode;
9
+ export declare function renderToolbar(items: ToolbarItem[], active: FormatState, isSource: boolean, onItem: (item: ToolbarItem, anchor?: HTMLElement | null) => void, customRender?: Record<string, (item: ToolbarItem) => VNode>, extra?: VNode[]): VNode;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * weifuwu/components/Editor/tools — 类型定义
3
+ */
4
+ export type ToolbarItem = 'bold' | 'italic' | 'underline' | 'h1' | 'h2' | 'h3' | 'ul' | 'ol' | 'blockquote' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'hr' | 'image' | 'table' | 'link' | 'clear' | 'source';
5
+ export interface EditorProps {
6
+ value?: string;
7
+ onChange?: (html: string) => void;
8
+ placeholder?: string;
9
+ disabled?: boolean;
10
+ minHeight?: string;
11
+ toolbar?: ToolbarItem[];
12
+ /** 图片上传回调 — 接收 File 返回图片 URL。不传时弹出 URL 输入框 */
13
+ onUpload?: (file: File) => Promise<string>;
14
+ /** AI 协作(可选——不传则无 AI 能力):选区操作 → wf: 流式端点 → 建议浮层 →
15
+ * 接受 = edit:ai-apply commit(原子撤销一步) */
16
+ ai?: EditorAiOptions;
17
+ /** 草稿持久化 key(可选):传入时内容自动保存/恢复(ctx.browser.storage*——
18
+ * SSR 无害 no-op)。挂载时 value 为空且存在草稿 → 恢复草稿。 */
19
+ draftKey?: string;
20
+ }
21
+ /** AI 动作(选区文本 → 提示词 → 建议) */
22
+ export interface EditorAiAction {
23
+ id: string;
24
+ /** 按钮标签(如 '润色') */
25
+ label: string;
26
+ /** 提示词模板(选区文本注入 {selection} 由调用方替换) */
27
+ prompt: (ctx: {
28
+ selection: string;
29
+ }) => string;
30
+ }
31
+ export interface EditorAiOptions {
32
+ /** wf: SSE 端点(POST——协议 docs/ai-contract.md) */
33
+ url: string;
34
+ headers?: Record<string, string>;
35
+ /** 自定义动作(缺省 = 内置 5 个:润色/翻译/缩写/扩写/纠错) */
36
+ actions?: EditorAiAction[];
37
+ /** x:* 自定义事件透传 */
38
+ onEvent?: (name: string, data: unknown) => void;
39
+ }
40
+ export type FormatState = Record<string, boolean>;
@@ -1,4 +1,4 @@
1
- import type { Component, VNode } from '../../ui-dom/vnode.ts';
1
+ import type { Component, VNode } from '../../vdom/index.ts';
2
2
  export interface EmptyStateProps {
3
3
  /** 图标——VNode(推荐 <Icon />)或字符串(emoji/字形);默认 Icon inbox(P3:组件内禁裸 emoji) */
4
4
  icon?: string | VNode | null;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * ExportCSV — 数据导出 CSV(零依赖:纯函数 + ctx.browser.downloadFile)
3
+ *
4
+ * 用法:
5
+ * exportCSV({ data: rows, filename: 'orders.csv', columns: [{ key, label }] })
6
+ * <ExportCSV data={rows} filename="orders.csv">导出</ExportCSV>
7
+ */
8
+ import type { Component } from '../../vdom/index.ts';
9
+ export interface CsvColumn {
10
+ key: string;
11
+ label?: string;
12
+ }
13
+ export interface ExportCsvOptions {
14
+ data: Record<string, any>[];
15
+ filename?: string;
16
+ columns?: CsvColumn[];
17
+ /** 值格式化(默认 String;null/undefined → 空) */
18
+ format?: (value: any, key: string) => string;
19
+ }
20
+ /** 纯函数:data → CSV 字符串(RFC 4180:引号转义 + BOM 防 Excel 乱码) */
21
+ export declare function toCsv({ data, columns, format }: ExportCsvOptions): string;
22
+ export interface ExportCSVProps extends ExportCsvOptions {
23
+ children?: any;
24
+ variant?: 'primary' | 'secondary' | 'ghost' | 'danger';
25
+ size?: 'sm' | 'md' | 'lg';
26
+ disabled?: boolean;
27
+ className?: string;
28
+ }
29
+ /** 导出按钮组件(点击 → 下载 CSV——browser.downloadFile 安全适配) */
30
+ export declare const ExportCSV: Component<ExportCSVProps>;
@@ -1,4 +1,4 @@
1
- import type { Component } from '../../ui-dom/vnode.ts';
1
+ import type { Component } from '../../vdom/index.ts';
2
2
  export interface FieldProps {
3
3
  label?: string;
4
4
  required?: boolean;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * weifuwu/components/FilePreview — 文件预览(office/pdf/md/html/text)
3
+ *
4
+ * 架构(design/file-preview-plan.md):
5
+ * - md 预览:复用 `<Markdown>` 组件(安全 token 渲染——表格/任务列表/URL 白名单)
6
+ * - md/text 编辑:复用 `<Editor>`(事件流事务层——撤销/时光机/AI 全继承)——
7
+ * 编辑闭环:md → markdownToHtml → Editor(DocState 模型)→ serializeMarkdown 回写
8
+ * - html 预览:iframe sandbox(安全隔离——untrusted HTML 不直插 DOM)
9
+ * - pdf/office:浏览器原生/服务端转换 URL(只读)
10
+ *
11
+ * 事件流:预览加载 `editEmit('preview')`(__edit_tail 可审计);编辑 = Editor
12
+ * commit 事件流(同一时间线)。sandbox 集成:url 加载 + onSave 回写由消费方接。
13
+ */
14
+ import type { Component } from '../../vdom/index.ts';
15
+ import type { EditorAiOptions } from '../Editor/Editor.ts';
16
+ export type FileType = 'md' | 'html' | 'pdf' | 'office' | 'text';
17
+ /** 从文件名/URL 推断类型(type 未传时自动探测) */
18
+ export declare function detectType(fileName?: string, url?: string): FileType;
19
+ export interface FilePreviewProps {
20
+ /** 文件类型(缺省按 fileName/url 扩展名自动探测) */
21
+ type?: FileType;
22
+ /** md/html/text 内容(直接传入);pdf/office 用 url */
23
+ content?: string;
24
+ /** pdf/office 文件 URL(或 html 远程加载) */
25
+ url?: string;
26
+ fileName?: string;
27
+ /** md/text:切换 Editor(复用事件流事务层——编辑/撤销/时光机/AI) */
28
+ editable?: boolean;
29
+ /** 编辑模式 AI 协作(透传 Editor) */
30
+ ai?: EditorAiOptions;
31
+ /** 编辑保存回调(md/text 序列化回写) */
32
+ onSave?: (content: string, type: 'md' | 'text') => void;
33
+ /** 加载完成(解析成功) */
34
+ onLoad?: (info: {
35
+ type: FileType;
36
+ chars: number;
37
+ blocks: number;
38
+ }) => void;
39
+ /** 内容高度 */
40
+ height?: string;
41
+ }
42
+ export declare const FilePreview: Component<FilePreviewProps>;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * weifuwu/components/FilePreview/markdown — Markdown 转换(编辑桥)
3
+ *
4
+ * 复用现有 Markdown 组件(src/components/Markdown/parser.ts——安全子集 token 树:
5
+ * 表格/任务列表/删除线/安全 URL 白名单——不重复造轮子)。
6
+ *
7
+ * 本模块只提供两个编辑桥转换:
8
+ * - markdownToHtml(md):md → HTML 字符串(Editor 编辑入口——Editor 是 HTML 模型)
9
+ * - serializeMarkdown(doc):DocState → md(编辑保存回写)
10
+ *
11
+ * 编辑闭环(事件流):md → markdownToHtml → Editor(DocState 模型——撤销/时光机/
12
+ * AI 全继承)→ serializeMarkdown → 保存。
13
+ */
14
+ import type { DocState } from '../Editor/model/types.ts';
15
+ import { safeUrl, type MdBlock, type MdInline } from '../Markdown/parser.ts';
16
+ /** md → HTML(Editor 模型子集内:标题/段落/引用/列表/代码块/分割线/图片——
17
+ * 表格/任务列表/删除线超出 Editor 模型——裁剪为段落(编辑时降级——诚实)) */
18
+ export declare function markdownToHtml(md: string): string;
19
+ /** DocState → Markdown(编辑保存回写——格式子集内语义等价)
20
+ * 块间空行分隔(md 规范);相邻列表项单换行(保持列表连续) */
21
+ export declare function serializeMarkdown(doc: DocState): string;
22
+ export { safeUrl };
23
+ export type { MdBlock, MdInline };
@@ -0,0 +1,57 @@
1
+ /**
2
+ * weifuwu/components — FileTree
3
+ *
4
+ * 文件树浏览器(工作空间/目录浏览场景):面包屑 + 工具行(上传/刷新)+
5
+ * 目录/文件列表(图标/大小/时间)+ 文件编辑态(textarea + 保存/返回)。
6
+ *
7
+ * **受控组件(诚实裁剪)**:纯展示 + 回调上抛——状态(entries/path/编辑
8
+ * 内容)与数据源(API/WS)由父组件管理——组件零 fetch/零 xhr——数据源
9
+ * 无关(本地目录/沙盒卷/API 均可驱动)。来源:agent-platform FilesSection
10
+ * (工作空间文件区——AI 沙盒写文件 ↔ 用户管理面双向可见)沉淀。
11
+ *
12
+ * 状态约定(父层驱动):
13
+ * - entries/path/loading:当前目录列表
14
+ * - openFile/editValue/saving:编辑态(openFile 非空 = 编辑中)
15
+ * - 回调:onOpenDir/onOpenFile/onBack/onSave/onEditChange/onUpload/onRefresh
16
+ */
17
+ import type { Component } from '../../vdom/index.ts';
18
+ export interface FileTreeEntry {
19
+ name: string;
20
+ type: 'dir' | 'file';
21
+ size?: number;
22
+ mtime?: string;
23
+ }
24
+ export interface FileTreeOpenFile {
25
+ path: string;
26
+ content: string;
27
+ /** 二进制不可预览(父层识别——打开时直接 toast) */
28
+ binary?: boolean;
29
+ truncated?: boolean;
30
+ size?: number;
31
+ }
32
+ export interface FileTreeProps {
33
+ /** 当前目录条目(父层数据源驱动) */
34
+ entries?: FileTreeEntry[];
35
+ /** 当前目录路径(面包屑) */
36
+ path?: string;
37
+ loading?: boolean;
38
+ /** 编辑态(非空 = 文件编辑中——列表替换为编辑器) */
39
+ openFile?: FileTreeOpenFile | null;
40
+ /** 编辑内容(受控) */
41
+ editValue?: string;
42
+ saving?: boolean;
43
+ /** 目录空态文案 */
44
+ emptyText?: string;
45
+ /** 编辑态返回列表 */
46
+ onBack?: () => void;
47
+ onOpenDir?: (path: string) => void;
48
+ onOpenFile?: (path: string) => void;
49
+ onSave?: (content: string) => void;
50
+ onEditChange?: (value: string) => void;
51
+ /** 上传(父层处理 File——组件只触发选择) */
52
+ onUpload?: (file: File) => void;
53
+ onRefresh?: () => void;
54
+ /** 上传 accept(默认全部) */
55
+ accept?: string;
56
+ }
57
+ export declare const FileTree: Component<FileTreeProps>;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * weifuwu/components — FileUpload
3
3
  */
4
- import type { Component } from '../../ui-dom/vnode.ts';
4
+ import type { Component } from '../../vdom/index.ts';
5
5
  export interface FileUploadProps {
6
6
  accept?: string;
7
7
  multiple?: boolean;
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * 裁剪(CS-05,见 design/components-cuts.md):不做拖拽悬浮(Resizable 可组合);回顶用 BackTop 语义更清晰。
13
13
  */
14
- import type { Component } from '../../ui-dom/vnode.ts';
14
+ import type { Component } from '../../vdom/index.ts';
15
15
  export type FloatButtonPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
16
16
  export interface FloatButtonProps {
17
17
  icon?: any;
@@ -1,4 +1,4 @@
1
- import type { Component } from '../../ui-dom/vnode.ts';
1
+ import type { Component } from '../../vdom/index.ts';
2
2
  export interface ValidationRule {
3
3
  required?: boolean;
4
4
  pattern?: RegExp;
@@ -13,7 +13,7 @@
13
13
  * 裁剪(CS-05,见 design/components-cuts.md):不做响应式断点 props(useBreakpoint 由用户驱动);
14
14
  * gutter 仅水平(垂直 gutter 低频)。
15
15
  */
16
- import type { Component } from '../../ui-dom/vnode.ts';
16
+ import type { Component } from '../../vdom/index.ts';
17
17
  export interface GridProps {
18
18
  gutter?: number;
19
19
  flex?: boolean;
@@ -4,7 +4,7 @@
4
4
  * 搜索词高亮:给定文本 + 高亮词数组 → 分词渲染 <mark>(零依赖,VNode 拼接)。
5
5
  * 配合 SearchInput/Table 搜索结果命中展示。
6
6
  */
7
- import type { Component } from '../../ui-dom/vnode.ts';
7
+ import type { Component } from '../../vdom/index.ts';
8
8
  export interface HighlightProps {
9
9
  text: string;
10
10
  query?: string | string[];
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * weifuwu/components — HoverCard
3
3
  *
4
- * usePopup 组合器:hover 触发(触屏自动降级 tap)+ openDelay/closeDelay +
5
- * 定位/视口 clamp + Escape + portal。对应 shadcn HoverCard。
4
+ * 命令式弹窗(一个形态——ctx.ui.openPopup——toast 心智):hover 触发
5
+ * (触屏自动降级 tap)+ openDelay/closeDelay + 定位/视口 clamp + Escape。
6
+ * 对应 shadcn HoverCard。
6
7
  */
7
- import type { Component } from '../../ui-dom/vnode.ts';
8
- import type { Placement } from '../../ui-dom/popup.ts';
8
+ import type { Component } from '../../vdom/index.ts';
9
+ import type { Placement } from '../../vdom/hooks/popup.ts';
9
10
  export type HoverCardPosition = Placement;
10
11
  export interface HoverCardProps {
11
12
  /** 富内容(任意 VNode,区别于 Tooltip 的 string) */
@@ -8,8 +8,8 @@
8
8
  * h(Icon, { name: 'close' })
9
9
  * h(Icon, { name: 'check', size: 16 })
10
10
  */
11
- import type { Component } from '../../ui-dom/vnode.ts';
12
- export type IconName = 'chevron-down' | 'chevron-up' | 'chevron-left' | 'chevron-right' | 'arrow-left' | 'arrow-up' | 'arrow-down' | 'arrow-right' | 'sort' | 'sort-asc' | 'sort-desc' | 'check' | 'close' | 'alert' | 'info' | 'warning' | 'pause' | 'settings' | 'search' | 'send' | 'stop' | 'retry' | 'upload' | 'trash' | 'edit' | 'plus' | 'copy' | 'eye' | 'eye-off' | 'star' | 'dashboard' | 'grid' | 'box' | 'users' | 'user' | 'home' | 'folder' | 'file' | 'file-text' | 'calendar' | 'clock' | 'bell' | 'menu' | 'activity' | 'trending-up' | 'trending-down' | 'database' | 'server' | 'heart' | 'refresh' | 'message' | 'inbox' | 'shield' | 'zap' | 'target' | 'mail' | 'external-link' | 'log-out' | 'lock' | 'list' | 'bar-chart' | 'gauge' | 'paperclip' | 'filter' | 'layers' | 'map-pin' | 'book-open' | 'github' | 'tag' | 'phone' | 'more-vertical' | 'check-circle' | 'alert-circle' | 'wifi' | 'cpu' | 'hard-drive' | 'globe' | 'briefcase' | 'layout';
11
+ import type { Component } from '../../vdom/index.ts';
12
+ export type IconName = 'chevron-down' | 'chevron-up' | 'chevron-left' | 'chevron-right' | 'arrow-left' | 'arrow-up' | 'arrow-down' | 'arrow-right' | 'sort' | 'sort-asc' | 'sort-desc' | 'check' | 'close' | 'alert' | 'info' | 'warning' | 'pause' | 'settings' | 'search' | 'send' | 'stop' | 'retry' | 'upload' | 'trash' | 'edit' | 'plus' | 'copy' | 'eye' | 'eye-off' | 'star' | 'dashboard' | 'grid' | 'box' | 'users' | 'user' | 'home' | 'folder' | 'file' | 'file-text' | 'calendar' | 'clock' | 'bell' | 'menu' | 'activity' | 'trending-up' | 'trending-down' | 'database' | 'server' | 'heart' | 'refresh' | 'message' | 'inbox' | 'shield' | 'zap' | 'target' | 'mail' | 'external-link' | 'log-out' | 'lock' | 'list' | 'bar-chart' | 'gauge' | 'paperclip' | 'filter' | 'layers' | 'map-pin' | 'book-open' | 'github' | 'tag' | 'phone' | 'more-vertical' | 'check-circle' | 'alert-circle' | 'wifi' | 'cpu' | 'hard-drive' | 'globe' | 'briefcase' | 'layout' | 'camera' | 'image' | 'share';
13
13
  export interface IconProps {
14
14
  name: IconName;
15
15
  /** 尺寸,默认 1em(随字号缩放) */
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ImageCropper — 图片裁剪(canvas 原生 API + 拖拽裁剪框,零依赖)
3
+ *
4
+ * 用法:<ImageCropper src={url} aspect={1} onCrop={dataUrl => ...} />
5
+ * 实现:图片绘制到 canvas → 裁剪框(useDrag 拖动/缩放)→ onCrop 输出 dataURL。
6
+ * 纪律:canvas 浏览器 API 经 ctx.browser(SSR 无害——null 检查)。
7
+ */
8
+ import type { Component } from '../../vdom/index.ts';
9
+ export interface ImageCropperProps {
10
+ src: string;
11
+ /** 裁剪比例(宽/高——默认 1) */
12
+ aspect?: number;
13
+ onCrop?: (dataUrl: string) => void;
14
+ onError?: (err: Error) => void;
15
+ className?: string;
16
+ }
17
+ export declare const ImageCropper: Component<ImageCropperProps>;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * weifuwu/components — Img
3
3
  */
4
- import type { Component } from '../../ui-dom/vnode.ts';
4
+ import type { Component } from '../../vdom/index.ts';
5
5
  export interface ImgProps {
6
6
  src?: string;
7
7
  alt?: string;
@@ -4,7 +4,7 @@
4
4
  * 进入视窗后替换占位符为真实内容。
5
5
  * 实现:ctx.ui.useInView(IO 封装)——滚动/尺寸变化由合成器线程评估,无 scroll 监听。
6
6
  */
7
- import type { Component } from '../../ui-dom/vnode.ts';
7
+ import type { Component } from '../../vdom/index.ts';
8
8
  export interface InViewProps {
9
9
  once?: boolean;
10
10
  threshold?: number;
@@ -1,4 +1,4 @@
1
- import type { Component } from '../../ui-dom/vnode.ts';
1
+ import type { Component } from '../../vdom/index.ts';
2
2
  export interface InfiniteScrollProps {
3
3
  hasMore?: boolean;
4
4
  loading?: boolean;
@@ -1,4 +1,4 @@
1
- import type { Component } from '../../ui-dom/vnode.ts';
1
+ import type { Component } from '../../vdom/index.ts';
2
2
  export interface InputProps {
3
3
  label?: string;
4
4
  name?: string;
@@ -5,7 +5,7 @@
5
5
  * 受控 value: number | null;空值 → null;输入 clamp 到 min/max。
6
6
  * 裁剪(CS-05,见 design/components-cuts.md):千分位货币格式(业务自拼)。
7
7
  */
8
- import type { Component } from '../../ui-dom/vnode.ts';
8
+ import type { Component } from '../../vdom/index.ts';
9
9
  export interface InputNumberProps {
10
10
  value?: number | null;
11
11
  onChange?: (value: number | null) => void;
@@ -5,7 +5,7 @@
5
5
  * 零依赖(无 raw JSON.parse 展示——VNode 渲染天然转义)。
6
6
  * 裁剪(CS-05,见 design/components-cuts.md):JSON 编辑、超大对象流式渲染(懒展开覆盖 100 键级)。
7
7
  */
8
- import type { Component } from '../../ui-dom/vnode.ts';
8
+ import type { Component } from '../../vdom/index.ts';
9
9
  export interface JSONViewerProps {
10
10
  data: unknown;
11
11
  /** 默认展开深度(默认 2)——更深折叠为摘要 */
@@ -1,5 +1,5 @@
1
- import type { Component } from '../../ui-dom/vnode.ts';
2
- import type { WfuiContext } from '../../ui-dom/types.ts';
1
+ import type { Component } from '../../vdom/index.ts';
2
+ import type { UIContext } from '../../vdom/index.ts';
3
3
  /**
4
4
  * JsonSchemaForm — JSON Schema(对象子集)→ 参数输入表单(零依赖)
5
5
  *
@@ -45,4 +45,4 @@ export interface JsonSchemaFormProps {
45
45
  onSubmit?: (values: Record<string, any>) => void;
46
46
  submitLabel?: string;
47
47
  }
48
- export declare const JsonSchemaForm: Component<JsonSchemaFormProps, WfuiContext>;
48
+ export declare const JsonSchemaForm: Component<JsonSchemaFormProps, UIContext>;
@@ -1,4 +1,4 @@
1
- import type { Component } from '../../ui-dom/vnode.ts';
1
+ import type { Component } from '../../vdom/index.ts';
2
2
  export interface KanbanItem {
3
3
  id: string;
4
4
  title: string;
@@ -1,4 +1,4 @@
1
- import type { Component } from '../../ui-dom/vnode.ts';
1
+ import type { Component } from '../../vdom/index.ts';
2
2
  export interface LabelProps {
3
3
  htmlFor?: string;
4
4
  /** 必填星号 */
@@ -18,7 +18,7 @@
18
18
  * - 响应式折叠交还用户:useBreakpoint 驱动 collapsed(裁剪:不自动抽屉化)
19
19
  * - 静态外壳见 layout `_app-shell.css`(wf-app-shell/wf-sidebar/wf-main)
20
20
  */
21
- import type { Component } from '../../ui-dom/vnode.ts';
21
+ import type { Component } from '../../vdom/index.ts';
22
22
  export interface LayoutProps {
23
23
  style?: any;
24
24
  className?: string;