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,4344 @@
1
+ {
2
+ "counts": {
3
+ "components": 160,
4
+ "primitives": 20,
5
+ "patterns": 11,
6
+ "apps": 5,
7
+ "backend": 14,
8
+ "capabilities": 12,
9
+ "guides": 20,
10
+ "community": 0
11
+ },
12
+ "components": [
13
+ {
14
+ "id": "videoplayer",
15
+ "name": "VideoPlayer",
16
+ "category": "core",
17
+ "desc": "视频播放器——原生 video 封装(controls/封面/宽高比/事件——零依赖)",
18
+ "family": null,
19
+ "variantOf": null,
20
+ "tags": [],
21
+ "sourceFile": "src/client/components/VideoPlayer/VideoPlayer.ts",
22
+ "cssFile": "src/client/components/VideoPlayer/VideoPlayer.css",
23
+ "testFile": "src/client/components/VideoPlayer/VideoPlayer.test.ts",
24
+ "gotchas": [],
25
+ "usedInPatterns": [],
26
+ "usedInApps": [],
27
+ "relatedBackend": []
28
+ },
29
+ {
30
+ "id": "math",
31
+ "name": "Math",
32
+ "category": "core",
33
+ "desc": "轻量公式渲染——自研 LaTeX 子集(上下标/分数/根号/希腊字母——零依赖不引 KaTeX)",
34
+ "family": null,
35
+ "variantOf": null,
36
+ "tags": [],
37
+ "sourceFile": "src/client/components/Math/Math.ts",
38
+ "cssFile": "src/client/components/Math/Math.css",
39
+ "testFile": "src/client/components/Math/Math.test.ts",
40
+ "gotchas": [],
41
+ "usedInPatterns": [],
42
+ "usedInApps": [],
43
+ "relatedBackend": []
44
+ },
45
+ {
46
+ "id": "markdowneditor",
47
+ "name": "MarkdownEditor",
48
+ "category": "editor",
49
+ "desc": "分屏 Markdown 编辑器——textarea + 实时预览(复用 Markdown parser 零漂移)",
50
+ "family": null,
51
+ "variantOf": null,
52
+ "tags": [],
53
+ "sourceFile": "src/client/components/MarkdownEditor/MarkdownEditor.ts",
54
+ "cssFile": "src/client/components/MarkdownEditor/MarkdownEditor.css",
55
+ "testFile": "src/client/components/MarkdownEditor/MarkdownEditor.test.ts",
56
+ "gotchas": [],
57
+ "usedInPatterns": [],
58
+ "usedInApps": [],
59
+ "relatedBackend": []
60
+ },
61
+ {
62
+ "id": "codeeditor",
63
+ "name": "CodeEditor",
64
+ "category": "editor",
65
+ "desc": "轻量代码编辑器——textarea + 行号 + Tab 缩进(零依赖,不引 Monaco)",
66
+ "family": null,
67
+ "variantOf": null,
68
+ "tags": [],
69
+ "sourceFile": "src/client/components/CodeEditor/CodeEditor.ts",
70
+ "cssFile": "src/client/components/CodeEditor/CodeEditor.css",
71
+ "testFile": "src/client/components/CodeEditor/CodeEditor.test.ts",
72
+ "gotchas": [],
73
+ "usedInPatterns": [],
74
+ "usedInApps": [],
75
+ "relatedBackend": []
76
+ },
77
+ {
78
+ "id": "imagecropper",
79
+ "name": "ImageCropper",
80
+ "category": "editor",
81
+ "desc": "图片裁剪——canvas 原生 API + 拖拽裁剪框 + 比例控制(零依赖)",
82
+ "family": null,
83
+ "variantOf": null,
84
+ "tags": [],
85
+ "sourceFile": "src/client/components/ImageCropper/ImageCropper.ts",
86
+ "cssFile": "src/client/components/ImageCropper/ImageCropper.css",
87
+ "testFile": "src/client/components/ImageCropper/ImageCropper.test.ts",
88
+ "gotchas": [],
89
+ "usedInPatterns": [],
90
+ "usedInApps": [],
91
+ "relatedBackend": []
92
+ },
93
+ {
94
+ "id": "wave",
95
+ "name": "Wave",
96
+ "category": "core",
97
+ "desc": "点击水波纹动效——包装任意可点击元素(纯 CSS,reduced-motion 自动降级)",
98
+ "family": null,
99
+ "variantOf": null,
100
+ "tags": [
101
+ "通用布局"
102
+ ],
103
+ "sourceFile": "src/client/components/Wave/Wave.ts",
104
+ "cssFile": "src/client/components/Wave/Wave.css",
105
+ "testFile": "src/client/components/Wave/Wave.test.ts",
106
+ "gotchas": [],
107
+ "usedInPatterns": [],
108
+ "usedInApps": [],
109
+ "relatedBackend": []
110
+ },
111
+ {
112
+ "id": "sortablelist",
113
+ "name": "SortableList",
114
+ "category": "viz",
115
+ "desc": "拖拽排序列表——useDragDrop 原语 + keyed 身份(任务/字段/配置排序)",
116
+ "family": null,
117
+ "variantOf": null,
118
+ "tags": [
119
+ "通用布局"
120
+ ],
121
+ "sourceFile": "src/client/components/SortableList/SortableList.ts",
122
+ "cssFile": "src/client/components/SortableList/SortableList.css",
123
+ "testFile": "src/client/components/SortableList/SortableList.test.ts",
124
+ "gotchas": [],
125
+ "usedInPatterns": [],
126
+ "usedInApps": [],
127
+ "relatedBackend": []
128
+ },
129
+ {
130
+ "id": "exportcsv",
131
+ "name": "ExportCSV",
132
+ "category": "display",
133
+ "desc": "数据导出 CSV——RFC 4180 转义 + BOM(Excel 兼容)零依赖",
134
+ "family": null,
135
+ "variantOf": null,
136
+ "tags": [
137
+ "通用布局"
138
+ ],
139
+ "sourceFile": "src/client/components/ExportCSV/ExportCSV.ts",
140
+ "cssFile": null,
141
+ "testFile": "src/client/components/ExportCSV/ExportCSV.test.ts",
142
+ "gotchas": [],
143
+ "usedInPatterns": [],
144
+ "usedInApps": [],
145
+ "relatedBackend": []
146
+ },
147
+ {
148
+ "id": "button",
149
+ "name": "Button",
150
+ "category": "core",
151
+ "desc": "4 variants × 3 sizes + loading + block + disabled",
152
+ "family": null,
153
+ "variantOf": null,
154
+ "tags": [
155
+ "通用布局"
156
+ ],
157
+ "sourceFile": "src/client/components/Button/Button.ts",
158
+ "cssFile": "src/client/components/Button/Button.css",
159
+ "testFile": "src/client/components/Button/Button.test.ts",
160
+ "gotchas": [],
161
+ "usedInPatterns": [
162
+ "app-shell",
163
+ "workspace",
164
+ "focus-task",
165
+ "docs",
166
+ "landing",
167
+ "list-page",
168
+ "detail-page",
169
+ "settings-page"
170
+ ],
171
+ "usedInApps": [
172
+ "todo",
173
+ "auth",
174
+ "multi"
175
+ ],
176
+ "relatedBackend": []
177
+ },
178
+ {
179
+ "id": "input",
180
+ "name": "Input",
181
+ "category": "input",
182
+ "desc": "text/email/password/number,支持 label/error/hint/required",
183
+ "family": null,
184
+ "variantOf": null,
185
+ "tags": [
186
+ "输入"
187
+ ],
188
+ "sourceFile": "src/client/components/Input/Input.ts",
189
+ "cssFile": "src/client/components/Input/Input.css",
190
+ "testFile": "src/client/components/Input/Input.test.ts",
191
+ "gotchas": [],
192
+ "usedInPatterns": [
193
+ "focus-task",
194
+ "settings-page"
195
+ ],
196
+ "usedInApps": [
197
+ "todo",
198
+ "auth",
199
+ "multi"
200
+ ],
201
+ "relatedBackend": []
202
+ },
203
+ {
204
+ "id": "textarea",
205
+ "name": "Textarea",
206
+ "category": "input",
207
+ "desc": "多行文本,支持 rows/label/error/hint",
208
+ "family": null,
209
+ "variantOf": null,
210
+ "tags": [
211
+ "输入"
212
+ ],
213
+ "sourceFile": "src/client/components/Textarea/Textarea.ts",
214
+ "cssFile": "src/client/components/Textarea/Textarea.css",
215
+ "testFile": "src/client/components/Textarea/Textarea.test.ts",
216
+ "gotchas": [],
217
+ "usedInPatterns": [],
218
+ "usedInApps": [],
219
+ "relatedBackend": []
220
+ },
221
+ {
222
+ "id": "select",
223
+ "name": "Select",
224
+ "category": "input",
225
+ "desc": "原生下拉选择器",
226
+ "family": null,
227
+ "variantOf": null,
228
+ "tags": [
229
+ "选择"
230
+ ],
231
+ "sourceFile": "src/client/components/Select/Select.ts",
232
+ "cssFile": "src/client/components/Select/Select.css",
233
+ "testFile": "src/client/components/Select/Select.test.ts",
234
+ "gotchas": [
235
+ "受控输入纪律:searchable 输入焦点丢失——useControlledInput 内部态",
236
+ "事件 prop 判定:on+大写(EVENT_RE)——once/only 等 on 开头属性防误判",
237
+ "浮层必须 portal(§5.4)——absolute 相对父容器在 overflow 下裁剪"
238
+ ],
239
+ "usedInPatterns": [
240
+ "settings-page"
241
+ ],
242
+ "usedInApps": [],
243
+ "relatedBackend": []
244
+ },
245
+ {
246
+ "id": "select-searchable",
247
+ "name": "Select (searchable)",
248
+ "category": "input",
249
+ "desc": "搜索过滤下拉,输入即搜",
250
+ "family": null,
251
+ "variantOf": "select",
252
+ "tags": [
253
+ "选择"
254
+ ],
255
+ "sourceFile": null,
256
+ "cssFile": null,
257
+ "testFile": null,
258
+ "gotchas": [],
259
+ "usedInPatterns": [],
260
+ "usedInApps": [],
261
+ "relatedBackend": []
262
+ },
263
+ {
264
+ "id": "checkbox",
265
+ "name": "Checkbox",
266
+ "category": "input",
267
+ "desc": "带 label 的复选框,支持 checked/disabled",
268
+ "family": null,
269
+ "variantOf": null,
270
+ "tags": [
271
+ "输入"
272
+ ],
273
+ "sourceFile": "src/client/components/Checkbox/Checkbox.ts",
274
+ "cssFile": "src/client/components/Checkbox/Checkbox.css",
275
+ "testFile": "src/client/components/Checkbox/Checkbox.test.ts",
276
+ "gotchas": [],
277
+ "usedInPatterns": [
278
+ "focus-task"
279
+ ],
280
+ "usedInApps": [
281
+ "todo"
282
+ ],
283
+ "relatedBackend": []
284
+ },
285
+ {
286
+ "id": "switch",
287
+ "name": "Switch",
288
+ "category": "input",
289
+ "desc": "开关切换,视觉替代 checkbox",
290
+ "family": null,
291
+ "variantOf": null,
292
+ "tags": [
293
+ "输入"
294
+ ],
295
+ "sourceFile": "src/client/components/Switch/Switch.ts",
296
+ "cssFile": "src/client/components/Switch/Switch.css",
297
+ "testFile": "src/client/components/Switch/Switch.test.ts",
298
+ "gotchas": [],
299
+ "usedInPatterns": [
300
+ "dashboard",
301
+ "settings-page"
302
+ ],
303
+ "usedInApps": [],
304
+ "relatedBackend": []
305
+ },
306
+ {
307
+ "id": "radiogroup",
308
+ "name": "RadioGroup",
309
+ "category": "input",
310
+ "desc": "单选组,支持 inline/options/value",
311
+ "family": null,
312
+ "variantOf": null,
313
+ "tags": [
314
+ "输入"
315
+ ],
316
+ "sourceFile": "src/client/components/RadioGroup/RadioGroup.ts",
317
+ "cssFile": "src/client/components/RadioGroup/RadioGroup.css",
318
+ "testFile": "src/client/components/RadioGroup/RadioGroup.test.ts",
319
+ "gotchas": [],
320
+ "usedInPatterns": [],
321
+ "usedInApps": [],
322
+ "relatedBackend": []
323
+ },
324
+ {
325
+ "id": "segmentedcontrol",
326
+ "name": "SegmentedControl",
327
+ "category": "input",
328
+ "desc": "分段单选(模式切换/筛选/模板),支持 sm/block",
329
+ "family": null,
330
+ "variantOf": null,
331
+ "tags": [
332
+ "输入"
333
+ ],
334
+ "sourceFile": "src/client/components/SegmentedControl/SegmentedControl.ts",
335
+ "cssFile": "src/client/components/SegmentedControl/SegmentedControl.css",
336
+ "testFile": "src/client/components/SegmentedControl/SegmentedControl.test.ts",
337
+ "gotchas": [],
338
+ "usedInPatterns": [
339
+ "dashboard"
340
+ ],
341
+ "usedInApps": [],
342
+ "relatedBackend": []
343
+ },
344
+ {
345
+ "id": "slider",
346
+ "name": "Slider",
347
+ "category": "input",
348
+ "desc": "范围滑块,支持 min/max/step/label",
349
+ "family": null,
350
+ "variantOf": null,
351
+ "tags": [
352
+ "输入"
353
+ ],
354
+ "sourceFile": "src/client/components/Slider/Slider.ts",
355
+ "cssFile": "src/client/components/Slider/Slider.css",
356
+ "testFile": "src/client/components/Slider/Slider.test.ts",
357
+ "gotchas": [
358
+ "浏览器表单状态恢复(刷新/后退)覆盖受控 value——autocomplete=off + 内部 0-100 归一化刻度(2000 slider 刷新跳动事故)",
359
+ "拖拽中气泡位置冻结——usePopup 锚点恒定需 popup.refresh() 跟随 thumb"
360
+ ],
361
+ "usedInPatterns": [],
362
+ "usedInApps": [],
363
+ "relatedBackend": []
364
+ },
365
+ {
366
+ "id": "form",
367
+ "name": "Form",
368
+ "category": "form",
369
+ "desc": "内置验证规则:required/pattern/minLength/自定义",
370
+ "family": null,
371
+ "variantOf": null,
372
+ "tags": [
373
+ "表单"
374
+ ],
375
+ "sourceFile": "src/client/components/Form/Form.ts",
376
+ "cssFile": "src/client/components/Form/Form.css",
377
+ "testFile": "src/client/components/Form/Form.test.ts",
378
+ "gotchas": [
379
+ "三层一致(§6.3):条件渲染 false 是空洞占位——{cond && <Alert/>} 不滤除不塌缩(提交按钮消失事故)",
380
+ "受控纪律:受控 value 必须配 onChange——缺回调静默不可点"
381
+ ],
382
+ "usedInPatterns": [
383
+ "focus-task",
384
+ "settings-page"
385
+ ],
386
+ "usedInApps": [
387
+ "todo",
388
+ "auth",
389
+ "admin",
390
+ "agent-platform"
391
+ ],
392
+ "relatedBackend": [
393
+ "sql"
394
+ ]
395
+ },
396
+ {
397
+ "id": "form-v2",
398
+ "name": "Form 提交",
399
+ "category": "form",
400
+ "desc": "loading 提交 + 校验错误(状态矩阵覆盖)",
401
+ "family": null,
402
+ "variantOf": "form",
403
+ "tags": [
404
+ "表单"
405
+ ],
406
+ "sourceFile": null,
407
+ "cssFile": null,
408
+ "testFile": null,
409
+ "gotchas": [],
410
+ "usedInPatterns": [],
411
+ "usedInApps": [],
412
+ "relatedBackend": []
413
+ },
414
+ {
415
+ "id": "field",
416
+ "name": "Field",
417
+ "category": "form",
418
+ "desc": "label+error+hint 容器",
419
+ "family": null,
420
+ "variantOf": null,
421
+ "tags": [
422
+ "表单"
423
+ ],
424
+ "sourceFile": "src/client/components/Field/Field.ts",
425
+ "cssFile": "src/client/components/Field/Field.css",
426
+ "testFile": "src/client/components/Field/Field.test.ts",
427
+ "gotchas": [],
428
+ "usedInPatterns": [
429
+ "focus-task",
430
+ "settings-page"
431
+ ],
432
+ "usedInApps": [],
433
+ "relatedBackend": []
434
+ },
435
+ {
436
+ "id": "relationgraph",
437
+ "name": "RelationGraph",
438
+ "category": "display",
439
+ "desc": "关系图谱——环形/网格布局 + 类型着色 + 选中交互(人物/组织/网络)",
440
+ "family": null,
441
+ "variantOf": null,
442
+ "tags": [],
443
+ "sourceFile": "src/client/components/RelationGraph/RelationGraph.ts",
444
+ "cssFile": "src/client/components/RelationGraph/RelationGraph.css",
445
+ "testFile": "src/client/components/RelationGraph/RelationGraph.test.ts",
446
+ "gotchas": [],
447
+ "usedInPatterns": [],
448
+ "usedInApps": [],
449
+ "relatedBackend": []
450
+ },
451
+ {
452
+ "id": "appshell",
453
+ "name": "AppShell",
454
+ "category": "navigation",
455
+ "desc": "应用壳——品牌 + 分组导航 + 用户区 + 主内容(受控——父层驱动)",
456
+ "family": null,
457
+ "variantOf": null,
458
+ "tags": [],
459
+ "sourceFile": "src/client/components/AppShell/AppShell.ts",
460
+ "cssFile": "src/client/components/AppShell/AppShell.css",
461
+ "testFile": "src/client/components/AppShell/AppShell.test.ts",
462
+ "gotchas": [],
463
+ "usedInPatterns": [],
464
+ "usedInApps": [],
465
+ "relatedBackend": []
466
+ },
467
+ {
468
+ "id": "filetree",
469
+ "name": "FileTree",
470
+ "category": "editor",
471
+ "desc": "文件树浏览器——面包屑 + 列表/编辑态 + 上传(受控——数据源无关)",
472
+ "family": null,
473
+ "variantOf": null,
474
+ "tags": [],
475
+ "sourceFile": "src/client/components/FileTree/FileTree.ts",
476
+ "cssFile": "src/client/components/FileTree/FileTree.css",
477
+ "testFile": "src/client/components/FileTree/FileTree.test.ts",
478
+ "gotchas": [],
479
+ "usedInPatterns": [],
480
+ "usedInApps": [],
481
+ "relatedBackend": []
482
+ },
483
+ {
484
+ "id": "fileupload",
485
+ "name": "FileUpload",
486
+ "category": "editor",
487
+ "desc": "文件上传,拖拽区 + 文件列表 + accept/maxSize",
488
+ "family": null,
489
+ "variantOf": null,
490
+ "tags": [
491
+ "编辑文件"
492
+ ],
493
+ "sourceFile": "src/client/components/FileUpload/FileUpload.ts",
494
+ "cssFile": "src/client/components/FileUpload/FileUpload.css",
495
+ "testFile": "src/client/components/FileUpload/FileUpload.test.ts",
496
+ "gotchas": [],
497
+ "usedInPatterns": [],
498
+ "usedInApps": [],
499
+ "relatedBackend": []
500
+ },
501
+ {
502
+ "id": "fileupload-v2",
503
+ "name": "FileUpload 禁用",
504
+ "category": "editor",
505
+ "desc": "disabled + accept 限定(状态矩阵覆盖)",
506
+ "family": null,
507
+ "variantOf": "fileupload",
508
+ "tags": [
509
+ "编辑文件"
510
+ ],
511
+ "sourceFile": null,
512
+ "cssFile": null,
513
+ "testFile": null,
514
+ "gotchas": [],
515
+ "usedInPatterns": [],
516
+ "usedInApps": [],
517
+ "relatedBackend": []
518
+ },
519
+ {
520
+ "id": "searchinput",
521
+ "name": "SearchInput",
522
+ "category": "input",
523
+ "desc": "搜索输入框,带清除按钮",
524
+ "family": null,
525
+ "variantOf": null,
526
+ "tags": [
527
+ "输入"
528
+ ],
529
+ "sourceFile": "src/client/components/SearchInput/SearchInput.ts",
530
+ "cssFile": "src/client/components/SearchInput/SearchInput.css",
531
+ "testFile": "src/client/components/SearchInput/SearchInput.test.ts",
532
+ "gotchas": [],
533
+ "usedInPatterns": [
534
+ "mobile",
535
+ "list-page"
536
+ ],
537
+ "usedInApps": [],
538
+ "relatedBackend": []
539
+ },
540
+ {
541
+ "id": "progressbar",
542
+ "name": "ProgressBar",
543
+ "category": "feedback",
544
+ "desc": "进度条,支持 label/showValue",
545
+ "family": null,
546
+ "variantOf": null,
547
+ "tags": [
548
+ "反馈"
549
+ ],
550
+ "sourceFile": "src/client/components/ProgressBar/ProgressBar.ts",
551
+ "cssFile": "src/client/components/ProgressBar/ProgressBar.css",
552
+ "testFile": "src/client/components/ProgressBar/ProgressBar.test.ts",
553
+ "gotchas": [],
554
+ "usedInPatterns": [
555
+ "dashboard"
556
+ ],
557
+ "usedInApps": [],
558
+ "relatedBackend": []
559
+ },
560
+ {
561
+ "id": "inputnumber",
562
+ "name": "InputNumber",
563
+ "category": "input",
564
+ "desc": "数字输入:min/max/step + 增减按钮 + precision",
565
+ "family": null,
566
+ "variantOf": null,
567
+ "tags": [
568
+ "输入"
569
+ ],
570
+ "sourceFile": "src/client/components/InputNumber/InputNumber.ts",
571
+ "cssFile": "src/client/components/InputNumber/InputNumber.css",
572
+ "testFile": "src/client/components/InputNumber/InputNumber.test.ts",
573
+ "gotchas": [],
574
+ "usedInPatterns": [],
575
+ "usedInApps": [],
576
+ "relatedBackend": []
577
+ },
578
+ {
579
+ "id": "passwordinput",
580
+ "name": "PasswordInput",
581
+ "category": "input",
582
+ "desc": "密码输入:眼睛按钮切换可见性",
583
+ "family": null,
584
+ "variantOf": null,
585
+ "tags": [
586
+ "输入"
587
+ ],
588
+ "sourceFile": "src/client/components/PasswordInput/PasswordInput.ts",
589
+ "cssFile": "src/client/components/PasswordInput/PasswordInput.css",
590
+ "testFile": "src/client/components/PasswordInput/PasswordInput.test.ts",
591
+ "gotchas": [],
592
+ "usedInPatterns": [],
593
+ "usedInApps": [
594
+ "auth"
595
+ ],
596
+ "relatedBackend": []
597
+ },
598
+ {
599
+ "id": "tagsinput",
600
+ "name": "TagsInput",
601
+ "category": "input",
602
+ "desc": "标签输入:回车/逗号添加 + 中文输入法感知",
603
+ "family": null,
604
+ "variantOf": null,
605
+ "tags": [
606
+ "输入"
607
+ ],
608
+ "sourceFile": "src/client/components/TagsInput/TagsInput.ts",
609
+ "cssFile": "src/client/components/TagsInput/TagsInput.css",
610
+ "testFile": "src/client/components/TagsInput/TagsInput.test.ts",
611
+ "gotchas": [],
612
+ "usedInPatterns": [],
613
+ "usedInApps": [],
614
+ "relatedBackend": []
615
+ },
616
+ {
617
+ "id": "tagsinput-v2",
618
+ "name": "TagsInput 限制/错误",
619
+ "category": "input",
620
+ "desc": "maxTags 限制 + error 校验态(状态矩阵覆盖)",
621
+ "family": null,
622
+ "variantOf": "tagsinput",
623
+ "tags": [
624
+ "输入"
625
+ ],
626
+ "sourceFile": null,
627
+ "cssFile": null,
628
+ "testFile": null,
629
+ "gotchas": [],
630
+ "usedInPatterns": [],
631
+ "usedInApps": [],
632
+ "relatedBackend": []
633
+ },
634
+ {
635
+ "id": "table",
636
+ "name": "Table",
637
+ "category": "display",
638
+ "desc": "可排序 + 自定义 render + 空状态",
639
+ "family": null,
640
+ "variantOf": null,
641
+ "tags": [
642
+ "展示"
643
+ ],
644
+ "sourceFile": "src/client/components/Table/Table.ts",
645
+ "cssFile": "src/client/components/Table/Table.css",
646
+ "testFile": "src/client/components/Table/Table.test.ts",
647
+ "gotchas": [
648
+ "固定列必须显式 width(缺省 140 估算 + console.warn——sticky 偏移累计依赖)",
649
+ "数组空洞:children 里 {cond && <X/>} 是占位——不得误删下一个兄弟(提交按钮消失事故同源)",
650
+ "行内编辑(editable 列)必须配 onCellEdit(受控纪律)"
651
+ ],
652
+ "usedInPatterns": [
653
+ "app-shell",
654
+ "dashboard",
655
+ "list-page"
656
+ ],
657
+ "usedInApps": [
658
+ "admin",
659
+ "agent-platform"
660
+ ],
661
+ "relatedBackend": [
662
+ "sql",
663
+ "redis"
664
+ ]
665
+ },
666
+ {
667
+ "id": "table-v2",
668
+ "name": "Table 行选择",
669
+ "category": "display",
670
+ "desc": "rowSelection 勾选列 + 受控 keys(状态矩阵覆盖)",
671
+ "family": null,
672
+ "variantOf": "table",
673
+ "tags": [
674
+ "展示"
675
+ ],
676
+ "sourceFile": null,
677
+ "cssFile": null,
678
+ "testFile": null,
679
+ "gotchas": [],
680
+ "usedInPatterns": [],
681
+ "usedInApps": [],
682
+ "relatedBackend": []
683
+ },
684
+ {
685
+ "id": "card",
686
+ "name": "Card",
687
+ "category": "core",
688
+ "desc": "容器,支持 default/outlined/clickable",
689
+ "family": null,
690
+ "variantOf": null,
691
+ "tags": [
692
+ "展示"
693
+ ],
694
+ "sourceFile": "src/client/components/Card/Card.ts",
695
+ "cssFile": "src/client/components/Card/Card.css",
696
+ "testFile": "src/client/components/Card/Card.test.ts",
697
+ "gotchas": [],
698
+ "usedInPatterns": [
699
+ "app-shell",
700
+ "focus-task",
701
+ "dashboard",
702
+ "data-screen",
703
+ "landing",
704
+ "list-page",
705
+ "detail-page"
706
+ ],
707
+ "usedInApps": [
708
+ "auth",
709
+ "multi"
710
+ ],
711
+ "relatedBackend": []
712
+ },
713
+ {
714
+ "id": "badge",
715
+ "name": "Badge",
716
+ "category": "core",
717
+ "desc": "状态标签 + 圆点,6 种 variant",
718
+ "family": null,
719
+ "variantOf": null,
720
+ "tags": [
721
+ "展示"
722
+ ],
723
+ "sourceFile": "src/client/components/Badge/Badge.ts",
724
+ "cssFile": "src/client/components/Badge/Badge.css",
725
+ "testFile": "src/client/components/Badge/Badge.test.ts",
726
+ "gotchas": [],
727
+ "usedInPatterns": [
728
+ "app-shell",
729
+ "dashboard",
730
+ "data-screen",
731
+ "landing",
732
+ "mobile"
733
+ ],
734
+ "usedInApps": [
735
+ "admin"
736
+ ],
737
+ "relatedBackend": []
738
+ },
739
+ {
740
+ "id": "tag",
741
+ "name": "Tag",
742
+ "category": "core",
743
+ "desc": "标签,支持 closable/onClose",
744
+ "family": null,
745
+ "variantOf": null,
746
+ "tags": [
747
+ "展示"
748
+ ],
749
+ "sourceFile": "src/client/components/Tag/Tag.ts",
750
+ "cssFile": "src/client/components/Tag/Tag.css",
751
+ "testFile": "src/client/components/Tag/Tag.test.ts",
752
+ "gotchas": [],
753
+ "usedInPatterns": [
754
+ "docs",
755
+ "list-page",
756
+ "detail-page"
757
+ ],
758
+ "usedInApps": [
759
+ "todo",
760
+ "admin",
761
+ "multi"
762
+ ],
763
+ "relatedBackend": []
764
+ },
765
+ {
766
+ "id": "avatar",
767
+ "name": "Avatar",
768
+ "category": "core",
769
+ "desc": "头像(首字母/图片),3 种 size",
770
+ "family": null,
771
+ "variantOf": null,
772
+ "tags": [
773
+ "展示"
774
+ ],
775
+ "sourceFile": "src/client/components/Avatar/Avatar.ts",
776
+ "cssFile": "src/client/components/Avatar/Avatar.css",
777
+ "testFile": "src/client/components/Avatar/Avatar.test.ts",
778
+ "gotchas": [],
779
+ "usedInPatterns": [
780
+ "landing",
781
+ "mobile"
782
+ ],
783
+ "usedInApps": [
784
+ "admin"
785
+ ],
786
+ "relatedBackend": []
787
+ },
788
+ {
789
+ "id": "img",
790
+ "name": "Img",
791
+ "category": "display",
792
+ "desc": "图片 \\<img\\> 组件:fallback / lazy / preview 点击放大",
793
+ "family": null,
794
+ "variantOf": null,
795
+ "tags": [
796
+ "展示",
797
+ "编辑文件"
798
+ ],
799
+ "sourceFile": "src/client/components/Img/Img.ts",
800
+ "cssFile": "src/client/components/Img/Img.css",
801
+ "testFile": "src/client/components/Img/Img.test.ts",
802
+ "gotchas": [],
803
+ "usedInPatterns": [],
804
+ "usedInApps": [],
805
+ "relatedBackend": []
806
+ },
807
+ {
808
+ "id": "inview",
809
+ "name": "InView",
810
+ "category": "display",
811
+ "desc": "进入视窗后懒加载内容,支持 IntersectionObserver",
812
+ "family": null,
813
+ "variantOf": null,
814
+ "tags": [
815
+ "展示"
816
+ ],
817
+ "sourceFile": "src/client/components/InView/InView.ts",
818
+ "cssFile": "src/client/components/InView/InView.css",
819
+ "testFile": "src/client/components/InView/InView.test.ts",
820
+ "gotchas": [],
821
+ "usedInPatterns": [],
822
+ "usedInApps": [],
823
+ "relatedBackend": []
824
+ },
825
+ {
826
+ "id": "timeline",
827
+ "name": "Timeline",
828
+ "category": "display",
829
+ "desc": "时间线:节点状态色 + 时间 + 内容(执行日志/审批历史)",
830
+ "family": null,
831
+ "variantOf": null,
832
+ "tags": [
833
+ "展示"
834
+ ],
835
+ "sourceFile": "src/client/components/Timeline/Timeline.ts",
836
+ "cssFile": "src/client/components/Timeline/Timeline.css",
837
+ "testFile": "src/client/components/Timeline/Timeline.test.ts",
838
+ "gotchas": [],
839
+ "usedInPatterns": [
840
+ "detail-page"
841
+ ],
842
+ "usedInApps": [],
843
+ "relatedBackend": []
844
+ },
845
+ {
846
+ "id": "descriptions",
847
+ "name": "Descriptions",
848
+ "category": "display",
849
+ "desc": "描述列表:label/value 栅格 + bordered + span(详情页)",
850
+ "family": null,
851
+ "variantOf": null,
852
+ "tags": [
853
+ "展示"
854
+ ],
855
+ "sourceFile": "src/client/components/Descriptions/Descriptions.ts",
856
+ "cssFile": "src/client/components/Descriptions/Descriptions.css",
857
+ "testFile": "src/client/components/Descriptions/Descriptions.test.ts",
858
+ "gotchas": [],
859
+ "usedInPatterns": [
860
+ "workspace",
861
+ "detail-page"
862
+ ],
863
+ "usedInApps": [],
864
+ "relatedBackend": []
865
+ },
866
+ {
867
+ "id": "descriptions-v2",
868
+ "name": "Descriptions 紧凑",
869
+ "category": "display",
870
+ "desc": "size=small 详情页密度(变体覆盖)",
871
+ "family": null,
872
+ "variantOf": "descriptions",
873
+ "tags": [
874
+ "展示"
875
+ ],
876
+ "sourceFile": null,
877
+ "cssFile": null,
878
+ "testFile": null,
879
+ "gotchas": [],
880
+ "usedInPatterns": [],
881
+ "usedInApps": [],
882
+ "relatedBackend": []
883
+ },
884
+ {
885
+ "id": "avatargroup",
886
+ "name": "AvatarGroup",
887
+ "category": "core",
888
+ "desc": "头像组:堆叠 + max 溢出 +N",
889
+ "family": null,
890
+ "variantOf": null,
891
+ "tags": [
892
+ "展示"
893
+ ],
894
+ "sourceFile": "src/client/components/AvatarGroup/AvatarGroup.ts",
895
+ "cssFile": "src/client/components/AvatarGroup/AvatarGroup.css",
896
+ "testFile": "src/client/components/AvatarGroup/AvatarGroup.test.ts",
897
+ "gotchas": [],
898
+ "usedInPatterns": [],
899
+ "usedInApps": [],
900
+ "relatedBackend": []
901
+ },
902
+ {
903
+ "id": "markdown",
904
+ "name": "Markdown",
905
+ "category": "display",
906
+ "desc": "AI 回复渲染:安全子集 parser + 代码块 + 链接白名单",
907
+ "family": null,
908
+ "variantOf": null,
909
+ "tags": [
910
+ "展示",
911
+ "编辑文件"
912
+ ],
913
+ "sourceFile": "src/client/components/Markdown/Markdown.ts",
914
+ "cssFile": "src/client/components/Markdown/Markdown.css",
915
+ "testFile": "src/client/components/Markdown/Markdown.test.ts",
916
+ "gotchas": [],
917
+ "usedInPatterns": [],
918
+ "usedInApps": [],
919
+ "relatedBackend": []
920
+ },
921
+ {
922
+ "id": "codeblock",
923
+ "name": "CodeBlock",
924
+ "category": "display",
925
+ "desc": "代码块:语言标签 + 复制按钮 + 横向滚动",
926
+ "family": null,
927
+ "variantOf": null,
928
+ "tags": [
929
+ "展示",
930
+ "编辑文件"
931
+ ],
932
+ "sourceFile": "src/client/components/CodeBlock/CodeBlock.ts",
933
+ "cssFile": "src/client/components/CodeBlock/CodeBlock.css",
934
+ "testFile": "src/client/components/CodeBlock/CodeBlock.test.ts",
935
+ "gotchas": [],
936
+ "usedInPatterns": [
937
+ "workspace",
938
+ "docs"
939
+ ],
940
+ "usedInApps": [],
941
+ "relatedBackend": []
942
+ },
943
+ {
944
+ "id": "logviewer",
945
+ "name": "LogViewer",
946
+ "category": "display",
947
+ "desc": "日志流:ANSI 着色 + 虚拟滚动 + 自动跟随 + 复制",
948
+ "family": null,
949
+ "variantOf": null,
950
+ "tags": [
951
+ "展示"
952
+ ],
953
+ "sourceFile": "src/client/components/LogViewer/LogViewer.ts",
954
+ "cssFile": "src/client/components/LogViewer/LogViewer.css",
955
+ "testFile": "src/client/components/LogViewer/LogViewer.test.ts",
956
+ "gotchas": [],
957
+ "usedInPatterns": [],
958
+ "usedInApps": [],
959
+ "relatedBackend": []
960
+ },
961
+ {
962
+ "id": "logviewer-v2",
963
+ "name": "LogViewer 自定义",
964
+ "category": "display",
965
+ "desc": "自定义日志源 + 行号 + 复制(变体覆盖)",
966
+ "family": null,
967
+ "variantOf": "logviewer",
968
+ "tags": [
969
+ "展示"
970
+ ],
971
+ "sourceFile": null,
972
+ "cssFile": null,
973
+ "testFile": null,
974
+ "gotchas": [],
975
+ "usedInPatterns": [],
976
+ "usedInApps": [],
977
+ "relatedBackend": []
978
+ },
979
+ {
980
+ "id": "jsonviewer",
981
+ "name": "JSONViewer",
982
+ "category": "display",
983
+ "desc": "结构化 JSON:递归折叠 + 类型色 + 路径复制 + 懒展开",
984
+ "family": null,
985
+ "variantOf": null,
986
+ "tags": [
987
+ "展示"
988
+ ],
989
+ "sourceFile": "src/client/components/JSONViewer/JSONViewer.ts",
990
+ "cssFile": "src/client/components/JSONViewer/JSONViewer.css",
991
+ "testFile": "src/client/components/JSONViewer/JSONViewer.test.ts",
992
+ "gotchas": [],
993
+ "usedInPatterns": [],
994
+ "usedInApps": [],
995
+ "relatedBackend": []
996
+ },
997
+ {
998
+ "id": "jsonviewer-v2",
999
+ "name": "JSONViewer 深展开",
1000
+ "category": "display",
1001
+ "desc": "defaultExpandDepth 深度展开嵌套对象(变体覆盖)",
1002
+ "family": null,
1003
+ "variantOf": "jsonviewer",
1004
+ "tags": [
1005
+ "展示"
1006
+ ],
1007
+ "sourceFile": null,
1008
+ "cssFile": null,
1009
+ "testFile": null,
1010
+ "gotchas": [],
1011
+ "usedInPatterns": [],
1012
+ "usedInApps": [],
1013
+ "relatedBackend": []
1014
+ },
1015
+ {
1016
+ "id": "diffview",
1017
+ "name": "DiffView",
1018
+ "category": "display",
1019
+ "desc": "代码 diff:LCS 行级对比 + 未变块折叠 + 三态着色",
1020
+ "family": null,
1021
+ "variantOf": null,
1022
+ "tags": [
1023
+ "展示"
1024
+ ],
1025
+ "sourceFile": "src/client/components/DiffView/DiffView.ts",
1026
+ "cssFile": "src/client/components/DiffView/DiffView.css",
1027
+ "testFile": "src/client/components/DiffView/DiffView.test.ts",
1028
+ "gotchas": [],
1029
+ "usedInPatterns": [],
1030
+ "usedInApps": [],
1031
+ "relatedBackend": []
1032
+ },
1033
+ {
1034
+ "id": "diffview-v2",
1035
+ "name": "DiffView 标题",
1036
+ "category": "display",
1037
+ "desc": "oldTitle/newTitle 标记版本对比(变体覆盖)",
1038
+ "family": null,
1039
+ "variantOf": "diffview",
1040
+ "tags": [
1041
+ "展示"
1042
+ ],
1043
+ "sourceFile": null,
1044
+ "cssFile": null,
1045
+ "testFile": null,
1046
+ "gotchas": [],
1047
+ "usedInPatterns": [],
1048
+ "usedInApps": [],
1049
+ "relatedBackend": []
1050
+ },
1051
+ {
1052
+ "id": "sparkline",
1053
+ "name": "Sparkline",
1054
+ "category": "viz",
1055
+ "desc": "迷你趋势线:SVG 自绘 + 归一化 + 平滑曲线 + 面积填充",
1056
+ "family": null,
1057
+ "variantOf": null,
1058
+ "tags": [
1059
+ "可视化"
1060
+ ],
1061
+ "sourceFile": "src/client/components/Sparkline/Sparkline.ts",
1062
+ "cssFile": "src/client/components/Sparkline/Sparkline.css",
1063
+ "testFile": "src/client/components/Sparkline/Sparkline.test.ts",
1064
+ "gotchas": [],
1065
+ "usedInPatterns": [
1066
+ "data-screen"
1067
+ ],
1068
+ "usedInApps": [],
1069
+ "relatedBackend": []
1070
+ },
1071
+ {
1072
+ "id": "tour",
1073
+ "name": "Tour",
1074
+ "category": "overlay",
1075
+ "desc": "新手引导:步骤气泡 + 目标高亮 + 遮罩 + 键盘 Escape",
1076
+ "family": null,
1077
+ "variantOf": null,
1078
+ "tags": [
1079
+ "弹层"
1080
+ ],
1081
+ "sourceFile": "src/client/components/Tour/Tour.ts",
1082
+ "cssFile": "src/client/components/Tour/Tour.css",
1083
+ "testFile": "src/client/components/Tour/Tour.test.ts",
1084
+ "gotchas": [],
1085
+ "usedInPatterns": [],
1086
+ "usedInApps": [],
1087
+ "relatedBackend": []
1088
+ },
1089
+ {
1090
+ "id": "kanban",
1091
+ "name": "Kanban",
1092
+ "category": "viz",
1093
+ "desc": "看板:原生 DnD 拖拽 + 跨列/重排 + 悬停高亮",
1094
+ "family": null,
1095
+ "variantOf": null,
1096
+ "tags": [
1097
+ "通用布局"
1098
+ ],
1099
+ "sourceFile": "src/client/components/Kanban/Kanban.ts",
1100
+ "cssFile": "src/client/components/Kanban/Kanban.css",
1101
+ "testFile": "src/client/components/Kanban/Kanban.test.ts",
1102
+ "gotchas": [
1103
+ "enumerated 属性(§6.2):draggable 空字符串解析为 false——必须显式 setAttribute true/false(拖动变文本选中事故)"
1104
+ ],
1105
+ "usedInPatterns": [],
1106
+ "usedInApps": [],
1107
+ "relatedBackend": []
1108
+ },
1109
+ {
1110
+ "id": "pipeline",
1111
+ "name": "Pipeline",
1112
+ "category": "ai",
1113
+ "desc": "Agent 工作流 DAG:分层布局 + 贝塞尔连线 + 状态语义色 + 环检测",
1114
+ "family": null,
1115
+ "variantOf": null,
1116
+ "tags": [
1117
+ "可视化",
1118
+ "AI"
1119
+ ],
1120
+ "sourceFile": "src/client/components/Pipeline/Pipeline.ts",
1121
+ "cssFile": "src/client/components/Pipeline/Pipeline.css",
1122
+ "testFile": "src/client/components/Pipeline/Pipeline.test.ts",
1123
+ "gotchas": [],
1124
+ "usedInPatterns": [],
1125
+ "usedInApps": [],
1126
+ "relatedBackend": []
1127
+ },
1128
+ {
1129
+ "id": "treeselect",
1130
+ "name": "TreeSelect",
1131
+ "category": "advanced",
1132
+ "desc": "树形选择:单选/多选(父子联动)+ 选中 label 回显 + 受控纪律",
1133
+ "family": null,
1134
+ "variantOf": null,
1135
+ "tags": [
1136
+ "选择"
1137
+ ],
1138
+ "sourceFile": "src/client/components/TreeSelect/TreeSelect.ts",
1139
+ "cssFile": "src/client/components/TreeSelect/TreeSelect.css",
1140
+ "testFile": "src/client/components/TreeSelect/TreeSelect.test.ts",
1141
+ "gotchas": [
1142
+ "弹窗纪律(§5.4):曾遗漏 portal——absolute 在父容器 overflow/transform 下裁剪/错位——统一 usePopup",
1143
+ "选项量小场景搜索过滤已裁剪(components-cuts.md 永久裁剪)"
1144
+ ],
1145
+ "usedInPatterns": [],
1146
+ "usedInApps": [],
1147
+ "relatedBackend": []
1148
+ },
1149
+ {
1150
+ "id": "layout",
1151
+ "name": "Layout",
1152
+ "category": "core",
1153
+ "desc": "布局外壳:Sider 折叠 + Header/Content/Footer 骨架(antd Layout / shadcn Sidebar 等价)",
1154
+ "family": null,
1155
+ "variantOf": null,
1156
+ "tags": [
1157
+ "导航",
1158
+ "通用布局"
1159
+ ],
1160
+ "sourceFile": "src/client/components/Layout/Layout.ts",
1161
+ "cssFile": "src/client/components/Layout/Layout.css",
1162
+ "testFile": "src/client/components/Layout/Layout.test.ts",
1163
+ "gotchas": [],
1164
+ "usedInPatterns": [],
1165
+ "usedInApps": [
1166
+ "admin"
1167
+ ],
1168
+ "relatedBackend": []
1169
+ },
1170
+ {
1171
+ "id": "layoutheader",
1172
+ "name": "LayoutHeader",
1173
+ "category": "core",
1174
+ "desc": "布局顶栏——Layout 家族(Layout/LayoutHeader/LayoutSider/LayoutContent/LayoutFooter)",
1175
+ "family": null,
1176
+ "variantOf": null,
1177
+ "tags": [
1178
+ "通用布局"
1179
+ ],
1180
+ "sourceFile": "src/client/components/Layout/Layout.ts",
1181
+ "cssFile": "src/client/components/Layout/Layout.css",
1182
+ "testFile": "src/client/components/Layout/Layout.test.ts",
1183
+ "gotchas": [],
1184
+ "usedInPatterns": [],
1185
+ "usedInApps": [],
1186
+ "relatedBackend": []
1187
+ },
1188
+ {
1189
+ "id": "layoutsider",
1190
+ "name": "LayoutSider",
1191
+ "category": "core",
1192
+ "desc": "布局侧栏(可折叠 collapsed/collapsible)——Layout 家族",
1193
+ "family": null,
1194
+ "variantOf": null,
1195
+ "tags": [
1196
+ "通用布局"
1197
+ ],
1198
+ "sourceFile": "src/client/components/Layout/Layout.ts",
1199
+ "cssFile": "src/client/components/Layout/Layout.css",
1200
+ "testFile": "src/client/components/Layout/Layout.test.ts",
1201
+ "gotchas": [],
1202
+ "usedInPatterns": [],
1203
+ "usedInApps": [],
1204
+ "relatedBackend": []
1205
+ },
1206
+ {
1207
+ "id": "layoutcontent",
1208
+ "name": "LayoutContent",
1209
+ "category": "core",
1210
+ "desc": "布局内容区——Layout 家族",
1211
+ "family": null,
1212
+ "variantOf": null,
1213
+ "tags": [
1214
+ "通用布局"
1215
+ ],
1216
+ "sourceFile": "src/client/components/Layout/Layout.ts",
1217
+ "cssFile": "src/client/components/Layout/Layout.css",
1218
+ "testFile": "src/client/components/Layout/Layout.test.ts",
1219
+ "gotchas": [],
1220
+ "usedInPatterns": [],
1221
+ "usedInApps": [],
1222
+ "relatedBackend": []
1223
+ },
1224
+ {
1225
+ "id": "popconfirm",
1226
+ "name": "Popconfirm",
1227
+ "category": "overlay",
1228
+ "desc": "气泡确认:危险操作防误触 + 复用 usePopup 基座",
1229
+ "family": null,
1230
+ "variantOf": null,
1231
+ "tags": [
1232
+ "反馈",
1233
+ "弹层"
1234
+ ],
1235
+ "sourceFile": "src/client/components/Popconfirm/Popconfirm.ts",
1236
+ "cssFile": "src/client/components/Popconfirm/Popconfirm.css",
1237
+ "testFile": "src/client/components/Popconfirm/Popconfirm.test.ts",
1238
+ "gotchas": [
1239
+ "气泡内表单/自定义箭头已裁剪(Popover 基座 + 定位全套复用)"
1240
+ ],
1241
+ "usedInPatterns": [],
1242
+ "usedInApps": [],
1243
+ "relatedBackend": []
1244
+ },
1245
+ {
1246
+ "id": "autocomplete",
1247
+ "name": "AutoComplete",
1248
+ "category": "advanced",
1249
+ "desc": "输入联想:自由输入 + 过滤下拉 + 键盘流 + 选中回填",
1250
+ "family": null,
1251
+ "variantOf": null,
1252
+ "tags": [
1253
+ "选择"
1254
+ ],
1255
+ "sourceFile": "src/client/components/AutoComplete/AutoComplete.ts",
1256
+ "cssFile": "src/client/components/AutoComplete/AutoComplete.css",
1257
+ "testFile": "src/client/components/AutoComplete/AutoComplete.test.ts",
1258
+ "gotchas": [
1259
+ "受控输入纪律(§5.3):受控 input 焦点丢失事故——输入期间 value 走内部 keyword(useControlledInput),不依赖受控 value 回流",
1260
+ "IME composition:中文输入组合期间受控 value 重置打断——isComposing 门控"
1261
+ ],
1262
+ "usedInPatterns": [],
1263
+ "usedInApps": [],
1264
+ "relatedBackend": []
1265
+ },
1266
+ {
1267
+ "id": "autocomplete-v2",
1268
+ "name": "AutoComplete 禁用态",
1269
+ "category": "input",
1270
+ "desc": "disabled 时不可输入(状态矩阵覆盖)",
1271
+ "family": null,
1272
+ "variantOf": "autocomplete",
1273
+ "tags": [
1274
+ "选择"
1275
+ ],
1276
+ "sourceFile": null,
1277
+ "cssFile": null,
1278
+ "testFile": null,
1279
+ "gotchas": [
1280
+ "受控输入纪律:焦点丢失——useControlledInput(与 autocomplete 同源事故)"
1281
+ ],
1282
+ "usedInPatterns": [],
1283
+ "usedInApps": [],
1284
+ "relatedBackend": []
1285
+ },
1286
+ {
1287
+ "id": "link",
1288
+ "name": "Link",
1289
+ "category": "core",
1290
+ "desc": "文字链接:语义色/下划线/disabled/新窗口",
1291
+ "family": null,
1292
+ "variantOf": null,
1293
+ "tags": [
1294
+ "通用布局"
1295
+ ],
1296
+ "sourceFile": "src/client/components/Link/Link.ts",
1297
+ "cssFile": "src/client/components/Link/Link.css",
1298
+ "testFile": "src/client/components/Link/Link.test.ts",
1299
+ "gotchas": [],
1300
+ "usedInPatterns": [
1301
+ "landing"
1302
+ ],
1303
+ "usedInApps": [],
1304
+ "relatedBackend": []
1305
+ },
1306
+ {
1307
+ "id": "floatbutton",
1308
+ "name": "FloatButton",
1309
+ "category": "core",
1310
+ "desc": "悬浮按钮组:展开状态机 + badge",
1311
+ "family": null,
1312
+ "variantOf": null,
1313
+ "tags": [
1314
+ "通用布局"
1315
+ ],
1316
+ "sourceFile": "src/client/components/FloatButton/FloatButton.ts",
1317
+ "cssFile": "src/client/components/FloatButton/FloatButton.css",
1318
+ "testFile": "src/client/components/FloatButton/FloatButton.test.ts",
1319
+ "gotchas": [],
1320
+ "usedInPatterns": [],
1321
+ "usedInApps": [],
1322
+ "relatedBackend": []
1323
+ },
1324
+ {
1325
+ "id": "navmenu",
1326
+ "name": "NavMenu",
1327
+ "category": "navigation",
1328
+ "desc": "顶部导航:多级 hover 弹出 + 键盘(shadcn NavigationMenu)",
1329
+ "family": null,
1330
+ "variantOf": null,
1331
+ "tags": [
1332
+ "导航"
1333
+ ],
1334
+ "sourceFile": "src/client/components/NavMenu/NavMenu.ts",
1335
+ "cssFile": "src/client/components/NavMenu/NavMenu.css",
1336
+ "testFile": "src/client/components/NavMenu/NavMenu.test.ts",
1337
+ "gotchas": [],
1338
+ "usedInPatterns": [],
1339
+ "usedInApps": [
1340
+ "admin"
1341
+ ],
1342
+ "relatedBackend": []
1343
+ },
1344
+ {
1345
+ "id": "space",
1346
+ "name": "Space",
1347
+ "category": "core",
1348
+ "desc": "间距容器:size/direction/wrap + split 分隔符",
1349
+ "family": null,
1350
+ "variantOf": null,
1351
+ "tags": [
1352
+ "通用布局"
1353
+ ],
1354
+ "sourceFile": "src/client/components/Space/Space.ts",
1355
+ "cssFile": "src/client/components/Space/Space.css",
1356
+ "testFile": "src/client/components/Space/Space.test.ts",
1357
+ "gotchas": [],
1358
+ "usedInPatterns": [
1359
+ "app-shell",
1360
+ "workspace",
1361
+ "focus-task",
1362
+ "docs",
1363
+ "dashboard",
1364
+ "data-screen",
1365
+ "landing",
1366
+ "mobile",
1367
+ "detail-page",
1368
+ "settings-page"
1369
+ ],
1370
+ "usedInApps": [],
1371
+ "relatedBackend": []
1372
+ },
1373
+ {
1374
+ "id": "grid",
1375
+ "name": "Grid",
1376
+ "category": "core",
1377
+ "desc": "24 栅格 + gutter + flex 容器模式(Row/Col/Flex 等价)",
1378
+ "family": null,
1379
+ "variantOf": null,
1380
+ "tags": [
1381
+ "通用布局"
1382
+ ],
1383
+ "sourceFile": "src/client/components/Grid/Grid.ts",
1384
+ "cssFile": "src/client/components/Grid/Grid.css",
1385
+ "testFile": "src/client/components/Grid/Grid.test.ts",
1386
+ "gotchas": [],
1387
+ "usedInPatterns": [],
1388
+ "usedInApps": [],
1389
+ "relatedBackend": []
1390
+ },
1391
+ {
1392
+ "id": "scrollbar",
1393
+ "name": "Scrollbar",
1394
+ "category": "core",
1395
+ "desc": "自定义滚动容器:webkit 样式 + hover 显示",
1396
+ "family": null,
1397
+ "variantOf": null,
1398
+ "tags": [
1399
+ "展示"
1400
+ ],
1401
+ "sourceFile": "src/client/components/Scrollbar/Scrollbar.ts",
1402
+ "cssFile": "src/client/components/Scrollbar/Scrollbar.css",
1403
+ "testFile": "src/client/components/Scrollbar/Scrollbar.test.ts",
1404
+ "gotchas": [],
1405
+ "usedInPatterns": [],
1406
+ "usedInApps": [],
1407
+ "relatedBackend": []
1408
+ },
1409
+ {
1410
+ "id": "alertgroup",
1411
+ "name": "AlertGroup",
1412
+ "category": "feedback",
1413
+ "desc": "通知合并组:≥3 条折叠为 +N,点击展开",
1414
+ "family": null,
1415
+ "variantOf": null,
1416
+ "tags": [
1417
+ "反馈"
1418
+ ],
1419
+ "sourceFile": "src/client/components/AlertGroup/AlertGroup.ts",
1420
+ "cssFile": "src/client/components/AlertGroup/AlertGroup.css",
1421
+ "testFile": "src/client/components/AlertGroup/AlertGroup.test.ts",
1422
+ "gotchas": [],
1423
+ "usedInPatterns": [],
1424
+ "usedInApps": [],
1425
+ "relatedBackend": []
1426
+ },
1427
+ {
1428
+ "id": "statcard-countdown",
1429
+ "name": "StatCard Countdown",
1430
+ "category": "display",
1431
+ "desc": "倒计时模式:剩余 HH:MM:SS + 结束回调",
1432
+ "family": null,
1433
+ "variantOf": "statcard",
1434
+ "tags": [
1435
+ "展示",
1436
+ "可视化"
1437
+ ],
1438
+ "sourceFile": null,
1439
+ "cssFile": null,
1440
+ "testFile": null,
1441
+ "gotchas": [],
1442
+ "usedInPatterns": [],
1443
+ "usedInApps": [],
1444
+ "relatedBackend": []
1445
+ },
1446
+ {
1447
+ "id": "messagebubble",
1448
+ "name": "MessageBubble",
1449
+ "category": "ai",
1450
+ "desc": "消息气泡:user/assistant + streaming/error 状态 + actions",
1451
+ "family": "ai-chat",
1452
+ "variantOf": null,
1453
+ "tags": [
1454
+ "展示",
1455
+ "AI"
1456
+ ],
1457
+ "sourceFile": "src/client/components/MessageBubble/MessageBubble.ts",
1458
+ "cssFile": "src/client/components/MessageBubble/MessageBubble.css",
1459
+ "testFile": "src/client/components/MessageBubble/MessageBubble.test.ts",
1460
+ "gotchas": [],
1461
+ "usedInPatterns": [],
1462
+ "usedInApps": [],
1463
+ "relatedBackend": []
1464
+ },
1465
+ {
1466
+ "id": "highlight",
1467
+ "name": "Highlight",
1468
+ "category": "display",
1469
+ "desc": "搜索词高亮:分词渲染 mark,大小写不敏感",
1470
+ "family": null,
1471
+ "variantOf": null,
1472
+ "tags": [
1473
+ "展示"
1474
+ ],
1475
+ "sourceFile": "src/client/components/Highlight/Highlight.ts",
1476
+ "cssFile": "src/client/components/Highlight/Highlight.css",
1477
+ "testFile": "src/client/components/Highlight/Highlight.test.ts",
1478
+ "gotchas": [],
1479
+ "usedInPatterns": [],
1480
+ "usedInApps": [],
1481
+ "relatedBackend": []
1482
+ },
1483
+ {
1484
+ "id": "highlight-v2",
1485
+ "name": "Highlight 多词",
1486
+ "category": "display",
1487
+ "desc": "query 数组多词高亮(变体覆盖)",
1488
+ "family": null,
1489
+ "variantOf": "highlight",
1490
+ "tags": [
1491
+ "展示"
1492
+ ],
1493
+ "sourceFile": null,
1494
+ "cssFile": null,
1495
+ "testFile": null,
1496
+ "gotchas": [],
1497
+ "usedInPatterns": [],
1498
+ "usedInApps": [],
1499
+ "relatedBackend": []
1500
+ },
1501
+ {
1502
+ "id": "list",
1503
+ "name": "List",
1504
+ "category": "display",
1505
+ "desc": "通用列表:renderItem + divided + header/footer/empty",
1506
+ "family": null,
1507
+ "variantOf": null,
1508
+ "tags": [
1509
+ "展示"
1510
+ ],
1511
+ "sourceFile": "src/client/components/List/List.ts",
1512
+ "cssFile": "src/client/components/List/List.css",
1513
+ "testFile": "src/client/components/List/List.test.ts",
1514
+ "gotchas": [],
1515
+ "usedInPatterns": [
1516
+ "workspace",
1517
+ "mobile"
1518
+ ],
1519
+ "usedInApps": [],
1520
+ "relatedBackend": []
1521
+ },
1522
+ {
1523
+ "id": "result",
1524
+ "name": "Result",
1525
+ "category": "feedback",
1526
+ "desc": "结果页:success/error/warning/info + extra 操作区",
1527
+ "family": null,
1528
+ "variantOf": null,
1529
+ "tags": [
1530
+ "展示",
1531
+ "反馈"
1532
+ ],
1533
+ "sourceFile": "src/client/components/Result/Result.ts",
1534
+ "cssFile": "src/client/components/Result/Result.css",
1535
+ "testFile": "src/client/components/Result/Result.test.ts",
1536
+ "gotchas": [],
1537
+ "usedInPatterns": [],
1538
+ "usedInApps": [],
1539
+ "relatedBackend": []
1540
+ },
1541
+ {
1542
+ "id": "confirm",
1543
+ "name": "Confirm",
1544
+ "category": "feedback",
1545
+ "desc": "确认对话框,Promise 化 await 调用",
1546
+ "family": null,
1547
+ "variantOf": null,
1548
+ "tags": [
1549
+ "反馈"
1550
+ ],
1551
+ "sourceFile": "src/client/components/Confirm/Confirm.ts",
1552
+ "cssFile": null,
1553
+ "testFile": "src/client/components/Confirm/Confirm.test.ts",
1554
+ "gotchas": [],
1555
+ "usedInPatterns": [],
1556
+ "usedInApps": [],
1557
+ "relatedBackend": []
1558
+ },
1559
+ {
1560
+ "id": "statcard",
1561
+ "name": "StatCard",
1562
+ "category": "viz",
1563
+ "desc": "KPI 指标卡,支持 trend/icon",
1564
+ "family": null,
1565
+ "variantOf": null,
1566
+ "tags": [
1567
+ "展示",
1568
+ "可视化"
1569
+ ],
1570
+ "sourceFile": "src/client/components/StatCard/StatCard.ts",
1571
+ "cssFile": "src/client/components/StatCard/StatCard.css",
1572
+ "testFile": "src/client/components/StatCard/StatCard.test.ts",
1573
+ "gotchas": [],
1574
+ "usedInPatterns": [
1575
+ "app-shell",
1576
+ "dashboard",
1577
+ "data-screen"
1578
+ ],
1579
+ "usedInApps": [
1580
+ "admin",
1581
+ "agent-platform"
1582
+ ],
1583
+ "relatedBackend": []
1584
+ },
1585
+ {
1586
+ "id": "chart",
1587
+ "name": "Chart",
1588
+ "category": "viz",
1589
+ "desc": "SVG 图表:line/bar/pie/radar/gauge/scatter——零依赖自绘",
1590
+ "family": null,
1591
+ "variantOf": null,
1592
+ "tags": [
1593
+ "可视化"
1594
+ ],
1595
+ "sourceFile": "src/client/components/Chart/Chart.ts",
1596
+ "cssFile": "src/client/components/Chart/Chart.css",
1597
+ "testFile": "src/client/components/Chart/Chart.test.ts",
1598
+ "gotchas": [],
1599
+ "usedInPatterns": [],
1600
+ "usedInApps": [
1601
+ "admin"
1602
+ ],
1603
+ "relatedBackend": []
1604
+ },
1605
+ {
1606
+ "id": "editor",
1607
+ "name": "Editor",
1608
+ "category": "editor",
1609
+ "desc": "富文本编辑器,contentEditable + toolbar,零依赖",
1610
+ "family": null,
1611
+ "variantOf": null,
1612
+ "tags": [
1613
+ "编辑文件"
1614
+ ],
1615
+ "sourceFile": "src/client/components/Editor/Editor.ts",
1616
+ "cssFile": "src/client/components/Editor/Editor.css",
1617
+ "testFile": "src/client/components/Editor/Editor.test.ts",
1618
+ "gotchas": [],
1619
+ "usedInPatterns": [],
1620
+ "usedInApps": [],
1621
+ "relatedBackend": []
1622
+ },
1623
+ {
1624
+ "id": "filepreview",
1625
+ "name": "FilePreview",
1626
+ "category": "editor",
1627
+ "desc": "文件预览(md/html/pdf/office)——基于事件流,可编辑",
1628
+ "family": "file-preview",
1629
+ "variantOf": null,
1630
+ "tags": [
1631
+ "编辑文件"
1632
+ ],
1633
+ "sourceFile": "src/client/components/FilePreview/FilePreview.ts",
1634
+ "cssFile": "src/client/components/FilePreview/FilePreview.css",
1635
+ "testFile": "src/client/components/FilePreview/FilePreview.test.ts",
1636
+ "gotchas": [],
1637
+ "usedInPatterns": [],
1638
+ "usedInApps": [],
1639
+ "relatedBackend": []
1640
+ },
1641
+ {
1642
+ "id": "filepreview-office",
1643
+ "name": "FilePreview Office",
1644
+ "category": "editor",
1645
+ "desc": "office 前端导入/导出(零依赖转换——无需后端)",
1646
+ "family": null,
1647
+ "variantOf": "filepreview",
1648
+ "tags": [
1649
+ "编辑文件"
1650
+ ],
1651
+ "sourceFile": null,
1652
+ "cssFile": null,
1653
+ "testFile": null,
1654
+ "gotchas": [],
1655
+ "usedInPatterns": [],
1656
+ "usedInApps": [],
1657
+ "relatedBackend": []
1658
+ },
1659
+ {
1660
+ "id": "themeswitch",
1661
+ "name": "ThemeSwitch",
1662
+ "category": "core",
1663
+ "desc": "主题切换:auto/light/dark,localStorage 持久化",
1664
+ "family": null,
1665
+ "variantOf": null,
1666
+ "tags": [
1667
+ "通用布局"
1668
+ ],
1669
+ "sourceFile": "src/client/components/ThemeSwitch/ThemeSwitch.ts",
1670
+ "cssFile": "src/client/components/ThemeSwitch/ThemeSwitch.css",
1671
+ "testFile": "src/client/components/ThemeSwitch/ThemeSwitch.test.ts",
1672
+ "gotchas": [],
1673
+ "usedInPatterns": [],
1674
+ "usedInApps": [
1675
+ "admin",
1676
+ "agent-platform"
1677
+ ],
1678
+ "relatedBackend": []
1679
+ },
1680
+ {
1681
+ "id": "datepicker",
1682
+ "name": "DatePicker",
1683
+ "category": "advanced",
1684
+ "desc": "日期选择器,四种模式:date/datetime/time/range",
1685
+ "family": null,
1686
+ "variantOf": null,
1687
+ "tags": [
1688
+ "选择"
1689
+ ],
1690
+ "sourceFile": "src/client/components/DatePicker/DatePicker.ts",
1691
+ "cssFile": "src/client/components/DatePicker/DatePicker.css",
1692
+ "testFile": "src/client/components/DatePicker/DatePicker.test.ts",
1693
+ "gotchas": [
1694
+ "受控纪律:受控 value/month 必须配回调——缺回调静默不可点"
1695
+ ],
1696
+ "usedInPatterns": [],
1697
+ "usedInApps": [],
1698
+ "relatedBackend": []
1699
+ },
1700
+ {
1701
+ "id": "modal",
1702
+ "name": "Modal",
1703
+ "category": "overlay",
1704
+ "desc": "自定义宽度 + closable 控制关闭按钮",
1705
+ "family": null,
1706
+ "variantOf": null,
1707
+ "tags": [
1708
+ "弹层"
1709
+ ],
1710
+ "sourceFile": "src/client/components/Modal/Modal.ts",
1711
+ "cssFile": "src/client/components/Modal/Modal.css",
1712
+ "testFile": "src/client/components/Modal/Modal.test.ts",
1713
+ "gotchas": [
1714
+ "退场动画:exit 类必须挂载(animationend 驱动卸载)——reduced-motion 下动画降为 0.01ms 等效瞬时",
1715
+ "会话级模态四件套:presence/trapFocus/lockScroll 由 usePopup 统一提供"
1716
+ ],
1717
+ "usedInPatterns": [],
1718
+ "usedInApps": [
1719
+ "agent-platform"
1720
+ ],
1721
+ "relatedBackend": []
1722
+ },
1723
+ {
1724
+ "id": "drawer",
1725
+ "name": "Drawer",
1726
+ "category": "overlay",
1727
+ "desc": "侧边面板,左右滑入 + ESC 关闭",
1728
+ "family": null,
1729
+ "variantOf": null,
1730
+ "tags": [
1731
+ "弹层"
1732
+ ],
1733
+ "sourceFile": "src/client/components/Drawer/Drawer.ts",
1734
+ "cssFile": "src/client/components/Drawer/Drawer.css",
1735
+ "testFile": "src/client/components/Drawer/Drawer.test.ts",
1736
+ "gotchas": [
1737
+ "退场动画:--enter/--exit 类必须成对(audit 强制)——只定义不挂是死代码(CS-01)"
1738
+ ],
1739
+ "usedInPatterns": [],
1740
+ "usedInApps": [
1741
+ "agent-platform"
1742
+ ],
1743
+ "relatedBackend": []
1744
+ },
1745
+ {
1746
+ "id": "popover",
1747
+ "name": "Popover",
1748
+ "category": "overlay",
1749
+ "desc": "通用弹出层,click/hover 触发,4 方向",
1750
+ "family": null,
1751
+ "variantOf": null,
1752
+ "tags": [
1753
+ "弹层"
1754
+ ],
1755
+ "sourceFile": "src/client/components/Popover/Popover.ts",
1756
+ "cssFile": "src/client/components/Popover/Popover.css",
1757
+ "testFile": "src/client/components/Popover/Popover.test.ts",
1758
+ "gotchas": [
1759
+ "portal 槽豁免(同 HoverCard)",
1760
+ "富内容自动判定已裁剪——HoverCard 补富内容(components-cuts.md)"
1761
+ ],
1762
+ "usedInPatterns": [],
1763
+ "usedInApps": [],
1764
+ "relatedBackend": []
1765
+ },
1766
+ {
1767
+ "id": "tooltip",
1768
+ "name": "Tooltip",
1769
+ "category": "overlay",
1770
+ "desc": "hover 浮动提示,4 方向",
1771
+ "family": null,
1772
+ "variantOf": null,
1773
+ "tags": [
1774
+ "弹层"
1775
+ ],
1776
+ "sourceFile": "src/client/components/Tooltip/Tooltip.ts",
1777
+ "cssFile": "src/client/components/Tooltip/Tooltip.css",
1778
+ "testFile": "src/client/components/Tooltip/Tooltip.test.ts",
1779
+ "gotchas": [
1780
+ "portal 槽豁免(同 HoverCard)——浮层插槽非业务列表"
1781
+ ],
1782
+ "usedInPatterns": [],
1783
+ "usedInApps": [],
1784
+ "relatedBackend": []
1785
+ },
1786
+ {
1787
+ "id": "toast",
1788
+ "name": "Toast",
1789
+ "category": "feedback",
1790
+ "desc": "5 种位置 + 自动消失 + 数量限制",
1791
+ "family": null,
1792
+ "variantOf": null,
1793
+ "tags": [
1794
+ "反馈"
1795
+ ],
1796
+ "sourceFile": "src/client/components/Toast/Toast.ts",
1797
+ "cssFile": "src/client/components/Toast/Toast.css",
1798
+ "testFile": "src/client/components/Toast/Toast.test.ts",
1799
+ "gotchas": [],
1800
+ "usedInPatterns": [],
1801
+ "usedInApps": [],
1802
+ "relatedBackend": []
1803
+ },
1804
+ {
1805
+ "id": "alert",
1806
+ "name": "Alert",
1807
+ "category": "feedback",
1808
+ "desc": "信息提示条,4 种 variant + closable",
1809
+ "family": null,
1810
+ "variantOf": null,
1811
+ "tags": [
1812
+ "反馈"
1813
+ ],
1814
+ "sourceFile": "src/client/components/Alert/Alert.ts",
1815
+ "cssFile": "src/client/components/Alert/Alert.css",
1816
+ "testFile": "src/client/components/Alert/Alert.test.ts",
1817
+ "gotchas": [],
1818
+ "usedInPatterns": [
1819
+ "focus-task",
1820
+ "settings-page"
1821
+ ],
1822
+ "usedInApps": [
1823
+ "auth"
1824
+ ],
1825
+ "relatedBackend": []
1826
+ },
1827
+ {
1828
+ "id": "loading",
1829
+ "name": "Loading",
1830
+ "category": "feedback",
1831
+ "desc": "加载状态,支持自定义文字",
1832
+ "family": null,
1833
+ "variantOf": null,
1834
+ "tags": [
1835
+ "反馈"
1836
+ ],
1837
+ "sourceFile": "src/client/components/Loading/Loading.ts",
1838
+ "cssFile": "src/client/components/Loading/Loading.css",
1839
+ "testFile": "src/client/components/Loading/Loading.test.ts",
1840
+ "gotchas": [],
1841
+ "usedInPatterns": [],
1842
+ "usedInApps": [],
1843
+ "relatedBackend": []
1844
+ },
1845
+ {
1846
+ "id": "skeleton",
1847
+ "name": "Skeleton",
1848
+ "category": "display",
1849
+ "desc": "text/circle/rect/image/avatar/table 六种变体",
1850
+ "family": null,
1851
+ "variantOf": null,
1852
+ "tags": [
1853
+ "展示"
1854
+ ],
1855
+ "sourceFile": "src/client/components/Skeleton/Skeleton.ts",
1856
+ "cssFile": "src/client/components/Skeleton/Skeleton.css",
1857
+ "testFile": "src/client/components/Skeleton/Skeleton.test.ts",
1858
+ "gotchas": [],
1859
+ "usedInPatterns": [],
1860
+ "usedInApps": [],
1861
+ "relatedBackend": []
1862
+ },
1863
+ {
1864
+ "id": "emptystate",
1865
+ "name": "EmptyState",
1866
+ "category": "feedback",
1867
+ "desc": "空状态占位,支持 icon/text/hint/action",
1868
+ "family": null,
1869
+ "variantOf": null,
1870
+ "tags": [
1871
+ "展示"
1872
+ ],
1873
+ "sourceFile": "src/client/components/EmptyState/EmptyState.ts",
1874
+ "cssFile": "src/client/components/EmptyState/EmptyState.css",
1875
+ "testFile": "src/client/components/EmptyState/EmptyState.test.ts",
1876
+ "gotchas": [],
1877
+ "usedInPatterns": [
1878
+ "list-page"
1879
+ ],
1880
+ "usedInApps": [
1881
+ "todo"
1882
+ ],
1883
+ "relatedBackend": []
1884
+ },
1885
+ {
1886
+ "id": "breadcrumb",
1887
+ "name": "Breadcrumb",
1888
+ "category": "navigation",
1889
+ "desc": "面包屑导航,支持 aria-current",
1890
+ "family": null,
1891
+ "variantOf": null,
1892
+ "tags": [
1893
+ "导航"
1894
+ ],
1895
+ "sourceFile": "src/client/components/Breadcrumb/Breadcrumb.ts",
1896
+ "cssFile": "src/client/components/Breadcrumb/Breadcrumb.css",
1897
+ "testFile": "src/client/components/Breadcrumb/Breadcrumb.test.ts",
1898
+ "gotchas": [],
1899
+ "usedInPatterns": [
1900
+ "docs"
1901
+ ],
1902
+ "usedInApps": [],
1903
+ "relatedBackend": []
1904
+ },
1905
+ {
1906
+ "id": "menu",
1907
+ "name": "Menu",
1908
+ "category": "navigation",
1909
+ "desc": "侧栏导航:分组 + 图标 + 选中态 + 方向键",
1910
+ "family": null,
1911
+ "variantOf": null,
1912
+ "tags": [
1913
+ "导航"
1914
+ ],
1915
+ "sourceFile": "src/client/components/Menu/Menu.ts",
1916
+ "cssFile": "src/client/components/Menu/Menu.css",
1917
+ "testFile": "src/client/components/Menu/Menu.test.ts",
1918
+ "gotchas": [],
1919
+ "usedInPatterns": [],
1920
+ "usedInApps": [
1921
+ "admin",
1922
+ "agent-platform"
1923
+ ],
1924
+ "relatedBackend": []
1925
+ },
1926
+ {
1927
+ "id": "tabs",
1928
+ "name": "Tabs",
1929
+ "category": "navigation",
1930
+ "desc": "标签页切换,支持 active/onChange",
1931
+ "family": null,
1932
+ "variantOf": null,
1933
+ "tags": [
1934
+ "导航"
1935
+ ],
1936
+ "sourceFile": "src/client/components/Tabs/Tabs.ts",
1937
+ "cssFile": "src/client/components/Tabs/Tabs.css",
1938
+ "testFile": "src/client/components/Tabs/Tabs.test.ts",
1939
+ "gotchas": [
1940
+ "混合数组稳定 key:tabList+addBtn+ink 全 keyed——无 key 项退 unkeyed 位置配对(新增 tab 错位事故)",
1941
+ "closable 必须配 onClose / addable 必须配 onAdd(受控纪律——console.warn)"
1942
+ ],
1943
+ "usedInPatterns": [
1944
+ "workspace",
1945
+ "settings-page"
1946
+ ],
1947
+ "usedInApps": [
1948
+ "multi"
1949
+ ],
1950
+ "relatedBackend": []
1951
+ },
1952
+ {
1953
+ "id": "dropdown",
1954
+ "name": "Dropdown",
1955
+ "category": "overlay",
1956
+ "desc": "下拉菜单,支持 danger variant",
1957
+ "family": null,
1958
+ "variantOf": null,
1959
+ "tags": [
1960
+ "弹层"
1961
+ ],
1962
+ "sourceFile": "src/client/components/Dropdown/Dropdown.ts",
1963
+ "cssFile": "src/client/components/Dropdown/Dropdown.css",
1964
+ "testFile": "src/client/components/Dropdown/Dropdown.test.ts",
1965
+ "gotchas": [
1966
+ "受控纪律:受控 open 必须配 onOpenChange——缺回调静默不可点",
1967
+ "命令式弹窗:浮层经 ctx.ui.openPopup(唯一形态——toast 心智——内核自管理生命周期)"
1968
+ ],
1969
+ "usedInPatterns": [],
1970
+ "usedInApps": [],
1971
+ "relatedBackend": []
1972
+ },
1973
+ {
1974
+ "id": "pagination",
1975
+ "name": "Pagination",
1976
+ "category": "navigation",
1977
+ "desc": "分页器,自动计算页码范围",
1978
+ "family": null,
1979
+ "variantOf": null,
1980
+ "tags": [
1981
+ "导航"
1982
+ ],
1983
+ "sourceFile": "src/client/components/Pagination/Pagination.ts",
1984
+ "cssFile": "src/client/components/Pagination/Pagination.css",
1985
+ "testFile": "src/client/components/Pagination/Pagination.test.ts",
1986
+ "gotchas": [],
1987
+ "usedInPatterns": [
1988
+ "app-shell",
1989
+ "list-page"
1990
+ ],
1991
+ "usedInApps": [],
1992
+ "relatedBackend": []
1993
+ },
1994
+ {
1995
+ "id": "steps",
1996
+ "name": "Steps",
1997
+ "category": "navigation",
1998
+ "desc": "分步指示器,支持 active/current",
1999
+ "family": null,
2000
+ "variantOf": null,
2001
+ "tags": [
2002
+ "导航"
2003
+ ],
2004
+ "sourceFile": "src/client/components/Steps/Steps.ts",
2005
+ "cssFile": "src/client/components/Steps/Steps.css",
2006
+ "testFile": "src/client/components/Steps/Steps.test.ts",
2007
+ "gotchas": [],
2008
+ "usedInPatterns": [],
2009
+ "usedInApps": [],
2010
+ "relatedBackend": []
2011
+ },
2012
+ {
2013
+ "id": "accordion",
2014
+ "name": "Accordion",
2015
+ "category": "navigation",
2016
+ "desc": "折叠面板,支持多个 items",
2017
+ "family": null,
2018
+ "variantOf": null,
2019
+ "tags": [
2020
+ "导航"
2021
+ ],
2022
+ "sourceFile": "src/client/components/Accordion/Accordion.ts",
2023
+ "cssFile": "src/client/components/Accordion/Accordion.css",
2024
+ "testFile": "src/client/components/Accordion/Accordion.test.ts",
2025
+ "gotchas": [],
2026
+ "usedInPatterns": [],
2027
+ "usedInApps": [],
2028
+ "relatedBackend": []
2029
+ },
2030
+ {
2031
+ "id": "aichat",
2032
+ "name": "AiChat",
2033
+ "category": "ai",
2034
+ "desc": "useChat + 标准对话界面:流式 token / 工具卡 / 审批卡 / 自动滚动,协议对页面透明",
2035
+ "family": "ai-chat",
2036
+ "variantOf": null,
2037
+ "tags": [
2038
+ "AI"
2039
+ ],
2040
+ "sourceFile": "src/client/components/AiChat/AiChat.ts",
2041
+ "cssFile": "src/client/components/AiChat/AiChat.css",
2042
+ "testFile": "src/client/components/AiChat/AiChat.test.ts",
2043
+ "gotchas": [],
2044
+ "usedInPatterns": [],
2045
+ "usedInApps": [
2046
+ "agent-platform"
2047
+ ],
2048
+ "relatedBackend": [
2049
+ "ws",
2050
+ "sse",
2051
+ "ai"
2052
+ ]
2053
+ },
2054
+ {
2055
+ "id": "chatinput",
2056
+ "name": "ChatInput",
2057
+ "category": "ai",
2058
+ "desc": "独立聊天输入条(AiChat 抽取):单行/多行 + streaming 停止 + IME 安全——不自带聊天逻辑",
2059
+ "family": "ai-chat",
2060
+ "variantOf": null,
2061
+ "tags": [
2062
+ "AI"
2063
+ ],
2064
+ "sourceFile": "src/client/components/ChatInput/ChatInput.ts",
2065
+ "cssFile": "src/client/components/ChatInput/ChatInput.css",
2066
+ "testFile": "src/client/components/ChatInput/ChatInput.test.ts",
2067
+ "gotchas": [],
2068
+ "usedInPatterns": [],
2069
+ "usedInApps": [],
2070
+ "relatedBackend": []
2071
+ },
2072
+ {
2073
+ "id": "authpage",
2074
+ "name": "AuthPage",
2075
+ "category": "ai",
2076
+ "desc": "认证页骨架:居中卡片 + logo + 表单插槽 + 错误条 + 提交 loading(登录/注册复用)",
2077
+ "family": null,
2078
+ "variantOf": null,
2079
+ "tags": [
2080
+ "AI"
2081
+ ],
2082
+ "sourceFile": "src/client/components/AuthPage/AuthPage.ts",
2083
+ "cssFile": null,
2084
+ "testFile": "src/client/components/AuthPage/AuthPage.test.ts",
2085
+ "gotchas": [],
2086
+ "usedInPatterns": [],
2087
+ "usedInApps": [
2088
+ "agent-platform"
2089
+ ],
2090
+ "relatedBackend": [
2091
+ "auth"
2092
+ ]
2093
+ },
2094
+ {
2095
+ "id": "toolcallcard",
2096
+ "name": "ToolCallCard",
2097
+ "category": "ai",
2098
+ "desc": "工具调用卡片:running / ok / error 状态机(call/progress/result 三字段驱动)",
2099
+ "family": "ai-chat",
2100
+ "variantOf": null,
2101
+ "tags": [
2102
+ "AI"
2103
+ ],
2104
+ "sourceFile": "src/client/components/ToolCallCard/ToolCallCard.ts",
2105
+ "cssFile": "src/client/components/ToolCallCard/ToolCallCard.css",
2106
+ "testFile": "src/client/components/ToolCallCard/ToolCallCard.test.ts",
2107
+ "gotchas": [],
2108
+ "usedInPatterns": [],
2109
+ "usedInApps": [],
2110
+ "relatedBackend": [
2111
+ "ai"
2112
+ ]
2113
+ },
2114
+ {
2115
+ "id": "jsonschemaform",
2116
+ "name": "JsonSchemaForm",
2117
+ "category": "form",
2118
+ "desc": "JSON Schema → 参数输入表单:类型映射 + 必填/范围校验 + 嵌套/数组(AI 工具参数输入面)",
2119
+ "family": null,
2120
+ "variantOf": null,
2121
+ "tags": [
2122
+ "表单",
2123
+ "AI"
2124
+ ],
2125
+ "sourceFile": "src/client/components/JsonSchemaForm/JsonSchemaForm.ts",
2126
+ "cssFile": "src/client/components/JsonSchemaForm/JsonSchemaForm.css",
2127
+ "testFile": "src/client/components/JsonSchemaForm/JsonSchemaForm.test.ts",
2128
+ "gotchas": [],
2129
+ "usedInPatterns": [],
2130
+ "usedInApps": [],
2131
+ "relatedBackend": []
2132
+ },
2133
+ {
2134
+ "id": "reasoningblock",
2135
+ "name": "ReasoningBlock",
2136
+ "category": "ai",
2137
+ "desc": "CoT 推理折叠展示:aria-expanded + 键盘可达 + 流式脉冲(thinking 模式 reasoning_content)",
2138
+ "family": "ai-chat",
2139
+ "variantOf": null,
2140
+ "tags": [
2141
+ "AI"
2142
+ ],
2143
+ "sourceFile": "src/client/components/ReasoningBlock/ReasoningBlock.ts",
2144
+ "cssFile": "src/client/components/ReasoningBlock/ReasoningBlock.css",
2145
+ "testFile": "src/client/components/ReasoningBlock/ReasoningBlock.test.ts",
2146
+ "gotchas": [],
2147
+ "usedInPatterns": [],
2148
+ "usedInApps": [],
2149
+ "relatedBackend": []
2150
+ },
2151
+ {
2152
+ "id": "citationcard",
2153
+ "name": "CitationCard",
2154
+ "category": "ai",
2155
+ "desc": "RAG 引用来源:折叠「引用 N 条」+ 条目列表(序号/标题/来源/片段/链接)+ 溢出 +N",
2156
+ "family": "ai-chat",
2157
+ "variantOf": null,
2158
+ "tags": [
2159
+ "AI"
2160
+ ],
2161
+ "sourceFile": "src/client/components/CitationCard/CitationCard.ts",
2162
+ "cssFile": "src/client/components/CitationCard/CitationCard.css",
2163
+ "testFile": "src/client/components/CitationCard/CitationCard.test.ts",
2164
+ "gotchas": [],
2165
+ "usedInPatterns": [],
2166
+ "usedInApps": [],
2167
+ "relatedBackend": []
2168
+ },
2169
+ {
2170
+ "id": "sessionlist",
2171
+ "name": "SessionList",
2172
+ "category": "ai",
2173
+ "desc": "会话管理列表:分组(今天/昨天/更早)+ 搜索 + 选中 + 重命名/删除/新建 + 键盘导航",
2174
+ "family": "ai-chat",
2175
+ "variantOf": null,
2176
+ "tags": [
2177
+ "AI"
2178
+ ],
2179
+ "sourceFile": "src/client/components/SessionList/SessionList.ts",
2180
+ "cssFile": "src/client/components/SessionList/SessionList.css",
2181
+ "testFile": "src/client/components/SessionList/SessionList.test.ts",
2182
+ "gotchas": [],
2183
+ "usedInPatterns": [],
2184
+ "usedInApps": [],
2185
+ "relatedBackend": []
2186
+ },
2187
+ {
2188
+ "id": "approvalcard",
2189
+ "name": "ApprovalCard",
2190
+ "category": "ai",
2191
+ "desc": "HITL 审批卡片:pending 可批/拒 + 修改参数(JsonSchemaForm)· approved/rejected/timeout 终态",
2192
+ "family": "ai-chat",
2193
+ "variantOf": null,
2194
+ "tags": [
2195
+ "AI"
2196
+ ],
2197
+ "sourceFile": "src/client/components/ApprovalCard/ApprovalCard.ts",
2198
+ "cssFile": "src/client/components/ApprovalCard/ApprovalCard.css",
2199
+ "testFile": "src/client/components/ApprovalCard/ApprovalCard.test.ts",
2200
+ "gotchas": [],
2201
+ "usedInPatterns": [],
2202
+ "usedInApps": [],
2203
+ "relatedBackend": [
2204
+ "ai"
2205
+ ]
2206
+ },
2207
+ {
2208
+ "id": "pageheader",
2209
+ "name": "PageHeader",
2210
+ "category": "navigation",
2211
+ "desc": "页面标题栏,支持 sub + 右侧操作区 + display 大标题",
2212
+ "family": null,
2213
+ "variantOf": null,
2214
+ "tags": [
2215
+ "导航"
2216
+ ],
2217
+ "sourceFile": "src/client/components/PageHeader/PageHeader.ts",
2218
+ "cssFile": "src/client/components/PageHeader/PageHeader.css",
2219
+ "testFile": "src/client/components/PageHeader/PageHeader.test.ts",
2220
+ "gotchas": [],
2221
+ "usedInPatterns": [
2222
+ "app-shell",
2223
+ "dashboard",
2224
+ "list-page",
2225
+ "detail-page",
2226
+ "settings-page"
2227
+ ],
2228
+ "usedInApps": [
2229
+ "todo"
2230
+ ],
2231
+ "relatedBackend": []
2232
+ },
2233
+ {
2234
+ "id": "icon",
2235
+ "name": "Icon",
2236
+ "category": "core",
2237
+ "desc": "stroke SVG 图标集,currentColor 着色,随字号缩放",
2238
+ "family": null,
2239
+ "variantOf": null,
2240
+ "tags": [
2241
+ "通用布局"
2242
+ ],
2243
+ "sourceFile": "src/client/components/Icon/Icon.ts",
2244
+ "cssFile": "src/client/components/Icon/Icon.css",
2245
+ "testFile": "src/client/components/Icon/Icon.test.ts",
2246
+ "gotchas": [],
2247
+ "usedInPatterns": [
2248
+ "app-shell",
2249
+ "workspace",
2250
+ "focus-task",
2251
+ "docs",
2252
+ "dashboard",
2253
+ "data-screen",
2254
+ "landing",
2255
+ "mobile",
2256
+ "list-page"
2257
+ ],
2258
+ "usedInApps": [],
2259
+ "relatedBackend": []
2260
+ },
2261
+ {
2262
+ "id": "divider",
2263
+ "name": "Divider",
2264
+ "category": "core",
2265
+ "desc": "分割线,支持 horizontal/vertical/带文字",
2266
+ "family": null,
2267
+ "variantOf": null,
2268
+ "tags": [
2269
+ "通用布局"
2270
+ ],
2271
+ "sourceFile": "src/client/components/Divider/Divider.ts",
2272
+ "cssFile": "src/client/components/Divider/Divider.css",
2273
+ "testFile": "src/client/components/Divider/Divider.test.ts",
2274
+ "gotchas": [],
2275
+ "usedInPatterns": [
2276
+ "app-shell",
2277
+ "workspace",
2278
+ "focus-task",
2279
+ "docs",
2280
+ "dashboard",
2281
+ "landing",
2282
+ "mobile",
2283
+ "detail-page"
2284
+ ],
2285
+ "usedInApps": [],
2286
+ "relatedBackend": []
2287
+ },
2288
+ {
2289
+ "id": "app",
2290
+ "name": "多应用(app 节点)",
2291
+ "category": "ai",
2292
+ "desc": "父应用嵌入子应用:注册表 + 独立状态 + app:* 边界事件(appId 可区分——同流全链路)",
2293
+ "family": null,
2294
+ "variantOf": null,
2295
+ "tags": [
2296
+ "展示"
2297
+ ],
2298
+ "sourceFile": null,
2299
+ "cssFile": null,
2300
+ "testFile": null,
2301
+ "gotchas": [],
2302
+ "usedInPatterns": [],
2303
+ "usedInApps": [],
2304
+ "relatedBackend": []
2305
+ },
2306
+ {
2307
+ "id": "rate",
2308
+ "name": "Rate",
2309
+ "category": "input",
2310
+ "desc": "评分:键盘方向键 / allowClear / readOnly,新增 star 图标",
2311
+ "family": null,
2312
+ "variantOf": null,
2313
+ "tags": [
2314
+ "输入"
2315
+ ],
2316
+ "sourceFile": "src/client/components/Rate/Rate.ts",
2317
+ "cssFile": "src/client/components/Rate/Rate.css",
2318
+ "testFile": "src/client/components/Rate/Rate.test.ts",
2319
+ "gotchas": [
2320
+ "小尺寸 button 固定 min/max-height(§5.6):星 16x36 竖条事故"
2321
+ ],
2322
+ "usedInPatterns": [],
2323
+ "usedInApps": [],
2324
+ "relatedBackend": []
2325
+ },
2326
+ {
2327
+ "id": "typography",
2328
+ "name": "Typography",
2329
+ "category": "core",
2330
+ "desc": "Title/Text/Paragraph:语义标签 + 语义色 -text 变体 + mark/code/删除线",
2331
+ "family": null,
2332
+ "variantOf": null,
2333
+ "tags": [
2334
+ "通用布局"
2335
+ ],
2336
+ "sourceFile": "src/client/components/Typography/Typography.ts",
2337
+ "cssFile": "src/client/components/Typography/Typography.css",
2338
+ "testFile": "src/client/components/Typography/Typography.test.ts",
2339
+ "gotchas": [],
2340
+ "usedInPatterns": [],
2341
+ "usedInApps": [],
2342
+ "relatedBackend": []
2343
+ },
2344
+ {
2345
+ "id": "label",
2346
+ "name": "Label",
2347
+ "category": "core",
2348
+ "desc": "独立标签(required 星号)+ 宽高比容器(内容填满)",
2349
+ "family": null,
2350
+ "variantOf": null,
2351
+ "tags": [
2352
+ "通用布局"
2353
+ ],
2354
+ "sourceFile": "src/client/components/Label/Label.ts",
2355
+ "cssFile": "src/client/components/Label/Label.css",
2356
+ "testFile": "src/client/components/Label/Label.test.ts",
2357
+ "gotchas": [],
2358
+ "usedInPatterns": [],
2359
+ "usedInApps": [],
2360
+ "relatedBackend": []
2361
+ },
2362
+ {
2363
+ "id": "aspectratio",
2364
+ "name": "AspectRatio",
2365
+ "category": "core",
2366
+ "desc": "独立标签(required 星号)+ 宽高比容器(内容填满)",
2367
+ "family": null,
2368
+ "variantOf": null,
2369
+ "tags": [
2370
+ "通用布局"
2371
+ ],
2372
+ "sourceFile": "src/client/components/AspectRatio/AspectRatio.ts",
2373
+ "cssFile": "src/client/components/AspectRatio/AspectRatio.css",
2374
+ "testFile": "src/client/components/AspectRatio/AspectRatio.test.ts",
2375
+ "gotchas": [],
2376
+ "usedInPatterns": [],
2377
+ "usedInApps": [],
2378
+ "relatedBackend": []
2379
+ },
2380
+ {
2381
+ "id": "toggle-togglegroup",
2382
+ "name": "Toggle / ToggleGroup",
2383
+ "category": "input",
2384
+ "desc": "切换按钮:single/multiple 双模式(shadcn 对齐)",
2385
+ "family": null,
2386
+ "variantOf": "togglegroup",
2387
+ "tags": [
2388
+ "输入"
2389
+ ],
2390
+ "sourceFile": "src/client/components/ToggleGroup/ToggleGroup.ts",
2391
+ "cssFile": "src/client/components/ToggleGroup/ToggleGroup.css",
2392
+ "testFile": "src/client/components/ToggleGroup/ToggleGroup.test.ts",
2393
+ "gotchas": [],
2394
+ "usedInPatterns": [],
2395
+ "usedInApps": [],
2396
+ "relatedBackend": []
2397
+ },
2398
+ {
2399
+ "id": "checkboxgroup",
2400
+ "name": "CheckboxGroup",
2401
+ "category": "input",
2402
+ "desc": "复选框组:数组受控 + 栅格列数(antd Checkbox.Group)",
2403
+ "family": null,
2404
+ "variantOf": null,
2405
+ "tags": [
2406
+ "输入"
2407
+ ],
2408
+ "sourceFile": "src/client/components/CheckboxGroup/CheckboxGroup.ts",
2409
+ "cssFile": "src/client/components/CheckboxGroup/CheckboxGroup.css",
2410
+ "testFile": "src/client/components/CheckboxGroup/CheckboxGroup.test.ts",
2411
+ "gotchas": [],
2412
+ "usedInPatterns": [],
2413
+ "usedInApps": [],
2414
+ "relatedBackend": []
2415
+ },
2416
+ {
2417
+ "id": "pininput",
2418
+ "name": "PinInput",
2419
+ "category": "input",
2420
+ "desc": "验证码输入:自动聚焦/粘贴分派/Backspace 回退(shadcn InputOTP)",
2421
+ "family": null,
2422
+ "variantOf": null,
2423
+ "tags": [
2424
+ "输入"
2425
+ ],
2426
+ "sourceFile": "src/client/components/PinInput/PinInput.ts",
2427
+ "cssFile": "src/client/components/PinInput/PinInput.css",
2428
+ "testFile": "src/client/components/PinInput/PinInput.test.ts",
2429
+ "gotchas": [],
2430
+ "usedInPatterns": [],
2431
+ "usedInApps": [],
2432
+ "relatedBackend": []
2433
+ },
2434
+ {
2435
+ "id": "pininput-v2",
2436
+ "name": "PinInput 禁用态",
2437
+ "category": "input",
2438
+ "desc": "disabled 不可编辑(状态矩阵覆盖)",
2439
+ "family": null,
2440
+ "variantOf": "pininput",
2441
+ "tags": [
2442
+ "输入"
2443
+ ],
2444
+ "sourceFile": null,
2445
+ "cssFile": null,
2446
+ "testFile": null,
2447
+ "gotchas": [],
2448
+ "usedInPatterns": [],
2449
+ "usedInApps": [],
2450
+ "relatedBackend": []
2451
+ },
2452
+ {
2453
+ "id": "copybutton",
2454
+ "name": "CopyButton",
2455
+ "category": "core",
2456
+ "desc": "复制按钮:clipboard + execCommand 降级 + 成功状态机",
2457
+ "family": null,
2458
+ "variantOf": null,
2459
+ "tags": [
2460
+ "编辑文件"
2461
+ ],
2462
+ "sourceFile": "src/client/components/CopyButton/CopyButton.ts",
2463
+ "cssFile": "src/client/components/CopyButton/CopyButton.css",
2464
+ "testFile": "src/client/components/CopyButton/CopyButton.test.ts",
2465
+ "gotchas": [],
2466
+ "usedInPatterns": [],
2467
+ "usedInApps": [],
2468
+ "relatedBackend": []
2469
+ },
2470
+ {
2471
+ "id": "colorpicker",
2472
+ "name": "ColorPicker",
2473
+ "category": "overlay",
2474
+ "desc": "颜色选择:预设色板 + hex 输入(Popover 弹层)",
2475
+ "family": null,
2476
+ "variantOf": null,
2477
+ "tags": [
2478
+ "输入",
2479
+ "弹层"
2480
+ ],
2481
+ "sourceFile": "src/client/components/ColorPicker/ColorPicker.ts",
2482
+ "cssFile": "src/client/components/ColorPicker/ColorPicker.css",
2483
+ "testFile": "src/client/components/ColorPicker/ColorPicker.test.ts",
2484
+ "gotchas": [],
2485
+ "usedInPatterns": [],
2486
+ "usedInApps": [],
2487
+ "relatedBackend": []
2488
+ },
2489
+ {
2490
+ "id": "hovercard",
2491
+ "name": "HoverCard",
2492
+ "category": "overlay",
2493
+ "desc": "悬停富内容卡:openDelay 延迟 + 任意 VNode(shadcn)",
2494
+ "family": null,
2495
+ "variantOf": null,
2496
+ "tags": [
2497
+ "弹层"
2498
+ ],
2499
+ "sourceFile": "src/client/components/HoverCard/HoverCard.ts",
2500
+ "cssFile": "src/client/components/HoverCard/HoverCard.css",
2501
+ "testFile": "src/client/components/HoverCard/HoverCard.test.ts",
2502
+ "gotchas": [
2503
+ "portal 槽豁免:浮层插槽打开/关闭不触发 A 级动态数组检测(框架管理切换槽)"
2504
+ ],
2505
+ "usedInPatterns": [],
2506
+ "usedInApps": [],
2507
+ "relatedBackend": []
2508
+ },
2509
+ {
2510
+ "id": "notification",
2511
+ "name": "Notification",
2512
+ "category": "feedback",
2513
+ "desc": "队列式通知:notification.success/error/warning 命令式(antd 对齐)",
2514
+ "family": null,
2515
+ "variantOf": null,
2516
+ "tags": [
2517
+ "反馈"
2518
+ ],
2519
+ "sourceFile": "src/client/components/Notification/Notification.ts",
2520
+ "cssFile": "src/client/components/Notification/Notification.css",
2521
+ "testFile": "src/client/components/Notification/Notification.test.ts",
2522
+ "gotchas": [],
2523
+ "usedInPatterns": [],
2524
+ "usedInApps": [],
2525
+ "relatedBackend": []
2526
+ },
2527
+ {
2528
+ "id": "backtop",
2529
+ "name": "BackTop",
2530
+ "category": "navigation",
2531
+ "desc": "回到顶部(滚动超 400px 显示)+ 固定导航(距顶 80px 钉住)",
2532
+ "family": null,
2533
+ "variantOf": null,
2534
+ "tags": [
2535
+ "导航"
2536
+ ],
2537
+ "sourceFile": "src/client/components/BackTop/BackTop.ts",
2538
+ "cssFile": "src/client/components/BackTop/BackTop.css",
2539
+ "testFile": "src/client/components/BackTop/BackTop.test.ts",
2540
+ "gotchas": [],
2541
+ "usedInPatterns": [
2542
+ "docs",
2543
+ "landing"
2544
+ ],
2545
+ "usedInApps": [],
2546
+ "relatedBackend": []
2547
+ },
2548
+ {
2549
+ "id": "affix",
2550
+ "name": "Affix",
2551
+ "category": "navigation",
2552
+ "desc": "回到顶部(滚动超 400px 显示)+ 固定导航(距顶 80px 钉住)",
2553
+ "family": null,
2554
+ "variantOf": null,
2555
+ "tags": [
2556
+ "导航"
2557
+ ],
2558
+ "sourceFile": "src/client/components/Affix/Affix.ts",
2559
+ "cssFile": "src/client/components/Affix/Affix.css",
2560
+ "testFile": "src/client/components/Affix/Affix.test.ts",
2561
+ "gotchas": [],
2562
+ "usedInPatterns": [],
2563
+ "usedInApps": [],
2564
+ "relatedBackend": []
2565
+ },
2566
+ {
2567
+ "id": "anchor",
2568
+ "name": "Anchor",
2569
+ "category": "navigation",
2570
+ "desc": "锚点导航:滚动高亮跟随 + 点击平滑滚动",
2571
+ "family": null,
2572
+ "variantOf": null,
2573
+ "tags": [
2574
+ "导航"
2575
+ ],
2576
+ "sourceFile": "src/client/components/Anchor/Anchor.ts",
2577
+ "cssFile": "src/client/components/Anchor/Anchor.css",
2578
+ "testFile": "src/client/components/Anchor/Anchor.test.ts",
2579
+ "gotchas": [],
2580
+ "usedInPatterns": [
2581
+ "docs"
2582
+ ],
2583
+ "usedInApps": [],
2584
+ "relatedBackend": []
2585
+ },
2586
+ {
2587
+ "id": "contextmenu",
2588
+ "name": "ContextMenu",
2589
+ "category": "overlay",
2590
+ "desc": "右键菜单:光标定位 + 方向键 + danger 变体(shadcn)",
2591
+ "family": null,
2592
+ "variantOf": null,
2593
+ "tags": [
2594
+ "弹层"
2595
+ ],
2596
+ "sourceFile": "src/client/components/ContextMenu/ContextMenu.ts",
2597
+ "cssFile": "src/client/components/ContextMenu/ContextMenu.css",
2598
+ "testFile": "src/client/components/ContextMenu/ContextMenu.test.ts",
2599
+ "gotchas": [
2600
+ "portal 槽豁免;右键 + 触屏长按双通道"
2601
+ ],
2602
+ "usedInPatterns": [],
2603
+ "usedInApps": [],
2604
+ "relatedBackend": []
2605
+ },
2606
+ {
2607
+ "id": "mentions",
2608
+ "name": "Mentions",
2609
+ "category": "advanced",
2610
+ "desc": "@提及:composition 抑制 + 过滤插入(antd Mentions)",
2611
+ "family": null,
2612
+ "variantOf": null,
2613
+ "tags": [
2614
+ "输入"
2615
+ ],
2616
+ "sourceFile": "src/client/components/Mentions/Mentions.ts",
2617
+ "cssFile": "src/client/components/Mentions/Mentions.css",
2618
+ "testFile": "src/client/components/Mentions/Mentions.test.ts",
2619
+ "gotchas": [],
2620
+ "usedInPatterns": [],
2621
+ "usedInApps": [],
2622
+ "relatedBackend": []
2623
+ },
2624
+ {
2625
+ "id": "mentions-v2",
2626
+ "name": "Mentions 禁用态",
2627
+ "category": "input",
2628
+ "desc": "disabled 时不可输入(状态矩阵覆盖)",
2629
+ "family": null,
2630
+ "variantOf": "mentions",
2631
+ "tags": [
2632
+ "输入"
2633
+ ],
2634
+ "sourceFile": null,
2635
+ "cssFile": null,
2636
+ "testFile": null,
2637
+ "gotchas": [],
2638
+ "usedInPatterns": [],
2639
+ "usedInApps": [],
2640
+ "relatedBackend": []
2641
+ },
2642
+ {
2643
+ "id": "collapse",
2644
+ "name": "Collapse",
2645
+ "category": "navigation",
2646
+ "desc": "行内折叠:异步 loading + extra 操作区(区别于 Accordion)",
2647
+ "family": null,
2648
+ "variantOf": null,
2649
+ "tags": [
2650
+ "导航"
2651
+ ],
2652
+ "sourceFile": "src/client/components/Collapse/Collapse.ts",
2653
+ "cssFile": "src/client/components/Collapse/Collapse.css",
2654
+ "testFile": "src/client/components/Collapse/Collapse.test.ts",
2655
+ "gotchas": [
2656
+ "受控纪律(§5.2):受控 activeKeys 必须配回调——缺回调静默不可点(console.warn 防护)"
2657
+ ],
2658
+ "usedInPatterns": [],
2659
+ "usedInApps": [],
2660
+ "relatedBackend": []
2661
+ },
2662
+ {
2663
+ "id": "tree",
2664
+ "name": "Tree",
2665
+ "category": "advanced",
2666
+ "desc": "树形:递归模型 + 勾选父子联动 + indeterminate(antd/EP Tree)",
2667
+ "family": null,
2668
+ "variantOf": null,
2669
+ "tags": [
2670
+ "选择"
2671
+ ],
2672
+ "sourceFile": "src/client/components/Tree/Tree.ts",
2673
+ "cssFile": "src/client/components/Tree/Tree.css",
2674
+ "testFile": "src/client/components/Tree/Tree.test.ts",
2675
+ "gotchas": [
2676
+ "受控纪律:selectedKeys/checkedKeys/expandedKeys 必须配回调(缺回调 console.warn)",
2677
+ "小尺寸 button 固定 min/max-height(§5.6):checkbox 14x36 竖条事故",
2678
+ "虚拟模式(virtual)键盘导航限于可见窗口(VirtualList 无 scrollTo——裁剪登记)"
2679
+ ],
2680
+ "usedInPatterns": [],
2681
+ "usedInApps": [],
2682
+ "relatedBackend": []
2683
+ },
2684
+ {
2685
+ "id": "tree-v2",
2686
+ "name": "Tree 勾选",
2687
+ "category": "advanced",
2688
+ "desc": "checkable 父子联动 + 受控 checkedKeys(变体覆盖)",
2689
+ "family": null,
2690
+ "variantOf": "tree",
2691
+ "tags": [
2692
+ "选择"
2693
+ ],
2694
+ "sourceFile": null,
2695
+ "cssFile": null,
2696
+ "testFile": null,
2697
+ "gotchas": [],
2698
+ "usedInPatterns": [],
2699
+ "usedInApps": [],
2700
+ "relatedBackend": []
2701
+ },
2702
+ {
2703
+ "id": "cascader",
2704
+ "name": "Cascader",
2705
+ "category": "advanced",
2706
+ "desc": "级联选择:多列面板逐级推进(antd/EP Cascader)",
2707
+ "family": null,
2708
+ "variantOf": null,
2709
+ "tags": [
2710
+ "选择"
2711
+ ],
2712
+ "sourceFile": "src/client/components/Cascader/Cascader.ts",
2713
+ "cssFile": "src/client/components/Cascader/Cascader.css",
2714
+ "testFile": "src/client/components/Cascader/Cascader.test.ts",
2715
+ "gotchas": [
2716
+ "受控纪律:受控 value 必须配回调——缺回调静默不可点",
2717
+ "多选(multiple)已裁剪(低频——单选+搜索已够,见 components-cuts.md)"
2718
+ ],
2719
+ "usedInPatterns": [],
2720
+ "usedInApps": [],
2721
+ "relatedBackend": []
2722
+ },
2723
+ {
2724
+ "id": "cascader-v2",
2725
+ "name": "Cascader 禁用/错误",
2726
+ "category": "advanced",
2727
+ "desc": "disabled + error 校验态(状态矩阵覆盖)",
2728
+ "family": null,
2729
+ "variantOf": "cascader",
2730
+ "tags": [
2731
+ "选择"
2732
+ ],
2733
+ "sourceFile": null,
2734
+ "cssFile": null,
2735
+ "testFile": null,
2736
+ "gotchas": [],
2737
+ "usedInPatterns": [],
2738
+ "usedInApps": [],
2739
+ "relatedBackend": []
2740
+ },
2741
+ {
2742
+ "id": "transfer",
2743
+ "name": "Transfer",
2744
+ "category": "advanced",
2745
+ "desc": "穿梭框:双列表 + 选中移动(antd/EP Transfer)",
2746
+ "family": null,
2747
+ "variantOf": null,
2748
+ "tags": [
2749
+ "选择"
2750
+ ],
2751
+ "sourceFile": "src/client/components/Transfer/Transfer.ts",
2752
+ "cssFile": "src/client/components/Transfer/Transfer.css",
2753
+ "testFile": "src/client/components/Transfer/Transfer.test.ts",
2754
+ "gotchas": [],
2755
+ "usedInPatterns": [],
2756
+ "usedInApps": [],
2757
+ "relatedBackend": []
2758
+ },
2759
+ {
2760
+ "id": "command",
2761
+ "name": "Command",
2762
+ "category": "overlay",
2763
+ "desc": "命令面板:⌘K 全局快捷键 + 键盘流(shadcn Command)",
2764
+ "family": null,
2765
+ "variantOf": null,
2766
+ "tags": [
2767
+ "弹层"
2768
+ ],
2769
+ "sourceFile": "src/client/components/Command/Command.ts",
2770
+ "cssFile": "src/client/components/Command/Command.css",
2771
+ "testFile": "src/client/components/Command/Command.test.ts",
2772
+ "gotchas": [],
2773
+ "usedInPatterns": [],
2774
+ "usedInApps": [],
2775
+ "relatedBackend": []
2776
+ },
2777
+ {
2778
+ "id": "menubar",
2779
+ "name": "Menubar",
2780
+ "category": "navigation",
2781
+ "desc": "水平菜单栏:←→ 切换 + ↓ 展开(shadcn Menubar)",
2782
+ "family": null,
2783
+ "variantOf": null,
2784
+ "tags": [
2785
+ "弹层"
2786
+ ],
2787
+ "sourceFile": "src/client/components/Menubar/Menubar.ts",
2788
+ "cssFile": "src/client/components/Menubar/Menubar.css",
2789
+ "testFile": "src/client/components/Menubar/Menubar.test.ts",
2790
+ "gotchas": [],
2791
+ "usedInPatterns": [],
2792
+ "usedInApps": [],
2793
+ "relatedBackend": []
2794
+ },
2795
+ {
2796
+ "id": "carousel",
2797
+ "name": "Carousel",
2798
+ "category": "virtual",
2799
+ "desc": "轮播:箭头/圆点/循环 + 自动播放(三库共识)",
2800
+ "family": null,
2801
+ "variantOf": null,
2802
+ "tags": [
2803
+ "虚拟化"
2804
+ ],
2805
+ "sourceFile": "src/client/components/Carousel/Carousel.ts",
2806
+ "cssFile": "src/client/components/Carousel/Carousel.css",
2807
+ "testFile": "src/client/components/Carousel/Carousel.test.ts",
2808
+ "gotchas": [
2809
+ "小尺寸 button 固定 min/max-height(§5.6):圆点 8x45 竖条事故"
2810
+ ],
2811
+ "usedInPatterns": [],
2812
+ "usedInApps": [],
2813
+ "relatedBackend": []
2814
+ },
2815
+ {
2816
+ "id": "resizable",
2817
+ "name": "Resizable",
2818
+ "category": "virtual",
2819
+ "desc": "拖拽分割面板:pointer + 键盘方向键 + clamp(shadcn)",
2820
+ "family": null,
2821
+ "variantOf": null,
2822
+ "tags": [
2823
+ "虚拟化"
2824
+ ],
2825
+ "sourceFile": "src/client/components/Resizable/Resizable.ts",
2826
+ "cssFile": "src/client/components/Resizable/Resizable.css",
2827
+ "testFile": "src/client/components/Resizable/Resizable.test.ts",
2828
+ "gotchas": [],
2829
+ "usedInPatterns": [],
2830
+ "usedInApps": [],
2831
+ "relatedBackend": []
2832
+ },
2833
+ {
2834
+ "id": "calendar",
2835
+ "name": "Calendar",
2836
+ "category": "advanced",
2837
+ "desc": "月历:事件点 + 月切换 + 日期选择(antd/EP Calendar)",
2838
+ "family": null,
2839
+ "variantOf": null,
2840
+ "tags": [
2841
+ "选择"
2842
+ ],
2843
+ "sourceFile": "src/client/components/Calendar/Calendar.ts",
2844
+ "cssFile": "src/client/components/Calendar/Calendar.css",
2845
+ "testFile": "src/client/components/Calendar/Calendar.test.ts",
2846
+ "gotchas": [
2847
+ "受控纪律:受控 month/value 必须配回调——缺回调静默不可点(console.warn 防护)"
2848
+ ],
2849
+ "usedInPatterns": [],
2850
+ "usedInApps": [],
2851
+ "relatedBackend": []
2852
+ },
2853
+ {
2854
+ "id": "calendar-v2",
2855
+ "name": "Calendar 事件",
2856
+ "category": "advanced",
2857
+ "desc": "事件标记 + 日期选择交互(变体覆盖)",
2858
+ "family": null,
2859
+ "variantOf": "calendar",
2860
+ "tags": [
2861
+ "选择"
2862
+ ],
2863
+ "sourceFile": null,
2864
+ "cssFile": null,
2865
+ "testFile": null,
2866
+ "gotchas": [],
2867
+ "usedInPatterns": [],
2868
+ "usedInApps": [],
2869
+ "relatedBackend": []
2870
+ },
2871
+ {
2872
+ "id": "watermark",
2873
+ "name": "Watermark",
2874
+ "category": "display",
2875
+ "desc": "水印:canvas 平铺绘制 + overlay(antd Watermark)",
2876
+ "family": null,
2877
+ "variantOf": null,
2878
+ "tags": [
2879
+ "展示"
2880
+ ],
2881
+ "sourceFile": "src/client/components/Watermark/Watermark.ts",
2882
+ "cssFile": "src/client/components/Watermark/Watermark.css",
2883
+ "testFile": "src/client/components/Watermark/Watermark.test.ts",
2884
+ "gotchas": [],
2885
+ "usedInPatterns": [],
2886
+ "usedInApps": [],
2887
+ "relatedBackend": []
2888
+ },
2889
+ {
2890
+ "id": "virtuallist",
2891
+ "name": "VirtualList",
2892
+ "category": "virtual",
2893
+ "desc": "虚拟列表:spacer + 可见窗口,200 条只渲染 ~12 个 DOM",
2894
+ "family": null,
2895
+ "variantOf": null,
2896
+ "tags": [
2897
+ "虚拟化"
2898
+ ],
2899
+ "sourceFile": "src/client/components/VirtualList/VirtualList.ts",
2900
+ "cssFile": "src/client/components/VirtualList/VirtualList.css",
2901
+ "testFile": "src/client/components/VirtualList/VirtualList.test.ts",
2902
+ "gotchas": [],
2903
+ "usedInPatterns": [],
2904
+ "usedInApps": [],
2905
+ "relatedBackend": []
2906
+ },
2907
+ {
2908
+ "id": "virtualtable",
2909
+ "name": "VirtualTable",
2910
+ "category": "virtual",
2911
+ "desc": "虚拟表格:10k 行固定表头 + 可见窗口渲染 + 排序",
2912
+ "family": null,
2913
+ "variantOf": null,
2914
+ "tags": [
2915
+ "展示",
2916
+ "虚拟化"
2917
+ ],
2918
+ "sourceFile": "src/client/components/VirtualTable/VirtualTable.ts",
2919
+ "cssFile": "src/client/components/VirtualTable/VirtualTable.css",
2920
+ "testFile": "src/client/components/VirtualTable/VirtualTable.test.ts",
2921
+ "gotchas": [],
2922
+ "usedInPatterns": [],
2923
+ "usedInApps": [],
2924
+ "relatedBackend": []
2925
+ },
2926
+ {
2927
+ "id": "virtualtable-v2",
2928
+ "name": "VirtualTable 大数据",
2929
+ "category": "virtual",
2930
+ "desc": "10 万行虚拟滚动(只渲染可见窗口——性能展示)",
2931
+ "family": null,
2932
+ "variantOf": "virtualtable",
2933
+ "tags": [
2934
+ "展示",
2935
+ "虚拟化"
2936
+ ],
2937
+ "sourceFile": null,
2938
+ "cssFile": null,
2939
+ "testFile": null,
2940
+ "gotchas": [],
2941
+ "usedInPatterns": [],
2942
+ "usedInApps": [],
2943
+ "relatedBackend": []
2944
+ },
2945
+ {
2946
+ "id": "infinitescroll",
2947
+ "name": "InfiniteScroll",
2948
+ "category": "virtual",
2949
+ "desc": "无限滚动:底部哨兵触底加载 + loading/end 态",
2950
+ "family": null,
2951
+ "variantOf": null,
2952
+ "tags": [
2953
+ "虚拟化"
2954
+ ],
2955
+ "sourceFile": "src/client/components/InfiniteScroll/InfiniteScroll.ts",
2956
+ "cssFile": "src/client/components/InfiniteScroll/InfiniteScroll.css",
2957
+ "testFile": "src/client/components/InfiniteScroll/InfiniteScroll.test.ts",
2958
+ "gotchas": [],
2959
+ "usedInPatterns": [],
2960
+ "usedInApps": [],
2961
+ "relatedBackend": []
2962
+ },
2963
+ {
2964
+ "id": "infinitescroll-v2",
2965
+ "name": "InfiniteScroll 失败重试",
2966
+ "category": "virtual",
2967
+ "desc": "加载失败提示 + 滚动重试(状态矩阵覆盖)",
2968
+ "family": null,
2969
+ "variantOf": "infinitescroll",
2970
+ "tags": [
2971
+ "虚拟化"
2972
+ ],
2973
+ "sourceFile": null,
2974
+ "cssFile": null,
2975
+ "testFile": null,
2976
+ "gotchas": [],
2977
+ "usedInPatterns": [],
2978
+ "usedInApps": [],
2979
+ "relatedBackend": []
2980
+ },
2981
+ {
2982
+ "id": "qrcode",
2983
+ "name": "QRCode",
2984
+ "category": "display",
2985
+ "desc": "二维码:自研 QR 编码(Reed-Solomon + 8 掩码)零依赖 SVG",
2986
+ "family": null,
2987
+ "variantOf": null,
2988
+ "tags": [
2989
+ "展示"
2990
+ ],
2991
+ "sourceFile": "src/client/components/QRCode/QRCode.ts",
2992
+ "cssFile": null,
2993
+ "testFile": "src/client/components/QRCode/QRCode.test.ts",
2994
+ "gotchas": [],
2995
+ "usedInPatterns": [],
2996
+ "usedInApps": [],
2997
+ "relatedBackend": []
2998
+ },
2999
+ {
3000
+ "id": "sheetgrid",
3001
+ "name": "SheetGrid",
3002
+ "category": "editor",
3003
+ "desc": "weifuwu/components/SheetGrid — xlsx 网格编辑器(ODES 事件流底座) 设计(design/office-events-plan.md):文档 = fold(事件流)——SheetGrid 的每个",
3004
+ "family": "file-preview",
3005
+ "variantOf": null,
3006
+ "tags": [
3007
+ "编辑文件"
3008
+ ],
3009
+ "sourceFile": "src/client/components/SheetGrid/SheetGrid.ts",
3010
+ "cssFile": "src/client/components/SheetGrid/SheetGrid.css",
3011
+ "testFile": "src/client/components/SheetGrid/SheetGrid.test.ts",
3012
+ "gotchas": [],
3013
+ "usedInPatterns": [],
3014
+ "usedInApps": [],
3015
+ "relatedBackend": []
3016
+ },
3017
+ {
3018
+ "id": "slidecanvas",
3019
+ "name": "SlideCanvas",
3020
+ "category": "editor",
3021
+ "desc": "weifuwu/components/SlideCanvas — pptx 画布编辑器(ODES 事件流——阶段 3) 设计(design/office-events-plan.md):文档 = fold(事件流)——每个编辑 =",
3022
+ "family": "file-preview",
3023
+ "variantOf": null,
3024
+ "tags": [
3025
+ "编辑文件"
3026
+ ],
3027
+ "sourceFile": "src/client/components/SlideCanvas/SlideCanvas.ts",
3028
+ "cssFile": "src/client/components/SlideCanvas/SlideCanvas.css",
3029
+ "testFile": "src/client/components/SlideCanvas/SlideCanvas.test.ts",
3030
+ "gotchas": [],
3031
+ "usedInPatterns": [],
3032
+ "usedInApps": [],
3033
+ "relatedBackend": []
3034
+ },
3035
+ {
3036
+ "id": "togglegroup",
3037
+ "name": "ToggleGroup",
3038
+ "category": "input",
3039
+ "desc": "(无 demo 卡片——组件目录存在)",
3040
+ "family": null,
3041
+ "variantOf": null,
3042
+ "tags": [
3043
+ "输入"
3044
+ ],
3045
+ "sourceFile": "src/client/components/ToggleGroup/ToggleGroup.ts",
3046
+ "cssFile": "src/client/components/ToggleGroup/ToggleGroup.css",
3047
+ "testFile": "src/client/components/ToggleGroup/ToggleGroup.test.ts",
3048
+ "gotchas": [],
3049
+ "usedInPatterns": [],
3050
+ "usedInApps": [],
3051
+ "relatedBackend": []
3052
+ },
3053
+ {
3054
+ "id": "title",
3055
+ "name": "Title",
3056
+ "category": "core",
3057
+ "desc": "标题排版(语义标签 + 语义色 -text 变体)——Typography 家族",
3058
+ "family": null,
3059
+ "variantOf": null,
3060
+ "tags": [
3061
+ "通用布局"
3062
+ ],
3063
+ "sourceFile": "src/client/components/Typography/Typography.ts",
3064
+ "cssFile": "src/client/components/Typography/Typography.css",
3065
+ "testFile": "src/client/components/Typography/Typography.test.ts",
3066
+ "gotchas": [],
3067
+ "usedInPatterns": [
3068
+ "docs",
3069
+ "dashboard",
3070
+ "landing"
3071
+ ],
3072
+ "usedInApps": [],
3073
+ "relatedBackend": []
3074
+ },
3075
+ {
3076
+ "id": "text",
3077
+ "name": "Text",
3078
+ "category": "core",
3079
+ "desc": "正文排版(语义色 -text 变体 + mark/code/删除线)——Typography 家族",
3080
+ "family": null,
3081
+ "variantOf": null,
3082
+ "tags": [
3083
+ "通用布局"
3084
+ ],
3085
+ "sourceFile": "src/client/components/Typography/Typography.ts",
3086
+ "cssFile": "src/client/components/Typography/Typography.css",
3087
+ "testFile": "src/client/components/Typography/Typography.test.ts",
3088
+ "gotchas": [],
3089
+ "usedInPatterns": [
3090
+ "app-shell",
3091
+ "workspace",
3092
+ "focus-task",
3093
+ "dashboard",
3094
+ "data-screen",
3095
+ "landing",
3096
+ "mobile"
3097
+ ],
3098
+ "usedInApps": [],
3099
+ "relatedBackend": []
3100
+ },
3101
+ {
3102
+ "id": "paragraph",
3103
+ "name": "Paragraph",
3104
+ "category": "core",
3105
+ "desc": "段落排版——Typography 家族",
3106
+ "family": null,
3107
+ "variantOf": null,
3108
+ "tags": [
3109
+ "通用布局"
3110
+ ],
3111
+ "sourceFile": "src/client/components/Typography/Typography.ts",
3112
+ "cssFile": "src/client/components/Typography/Typography.css",
3113
+ "testFile": "src/client/components/Typography/Typography.test.ts",
3114
+ "gotchas": [],
3115
+ "usedInPatterns": [
3116
+ "docs",
3117
+ "landing"
3118
+ ],
3119
+ "usedInApps": [],
3120
+ "relatedBackend": []
3121
+ },
3122
+ {
3123
+ "id": "tabbar",
3124
+ "name": "TabBar",
3125
+ "category": "navigation",
3126
+ "desc": "底部标签栏——移动端 App 主导航(3-5 tab + icon/badge/受控激活 + safe-area 避让)",
3127
+ "family": null,
3128
+ "variantOf": null,
3129
+ "tags": [],
3130
+ "sourceFile": "src/client/components/TabBar/TabBar.ts",
3131
+ "cssFile": "src/client/components/TabBar/TabBar.css",
3132
+ "testFile": "src/client/components/TabBar/TabBar.test.ts",
3133
+ "gotchas": [],
3134
+ "usedInPatterns": [],
3135
+ "usedInApps": [],
3136
+ "relatedBackend": []
3137
+ },
3138
+ {
3139
+ "id": "actionsheet",
3140
+ "name": "ActionSheet",
3141
+ "category": "overlay",
3142
+ "desc": "动作面板——移动端底部滑出(命令列表 + 取消按钮,usePopup 会话级模态)",
3143
+ "family": null,
3144
+ "variantOf": null,
3145
+ "tags": [],
3146
+ "sourceFile": "src/client/components/ActionSheet/ActionSheet.ts",
3147
+ "cssFile": "src/client/components/ActionSheet/ActionSheet.css",
3148
+ "testFile": "src/client/components/ActionSheet/ActionSheet.test.ts",
3149
+ "gotchas": [],
3150
+ "usedInPatterns": [],
3151
+ "usedInApps": [],
3152
+ "relatedBackend": []
3153
+ },
3154
+ {
3155
+ "id": "prompttemplate",
3156
+ "name": "PromptTemplate",
3157
+ "category": "ai",
3158
+ "desc": "提示词模板编辑器——变量 chips 插入 + 实时预览填充(AI 场景痛点)",
3159
+ "family": null,
3160
+ "variantOf": null,
3161
+ "tags": [],
3162
+ "sourceFile": "src/client/components/PromptTemplate/PromptTemplate.ts",
3163
+ "cssFile": "src/client/components/PromptTemplate/PromptTemplate.css",
3164
+ "testFile": "src/client/components/PromptTemplate/PromptTemplate.test.ts",
3165
+ "gotchas": [
3166
+ "textarea value 必须走 property(attribute 只是 defaultValue——DOM value 恒空/光标失效事故,vdom3 渲染器已修)",
3167
+ "受控输入纪律:value 由父控制 + onChange 通知"
3168
+ ],
3169
+ "usedInPatterns": [],
3170
+ "usedInApps": [],
3171
+ "relatedBackend": []
3172
+ }
3173
+ ],
3174
+ "primitives": [
3175
+ {
3176
+ "id": "grid",
3177
+ "name": "网格",
3178
+ "cssFile": "_grid.css",
3179
+ "kind": "primitive",
3180
+ "desc": "CSS Grid 容器——--wf-cols 控制列(auto-fill/模板/比例)",
3181
+ "classes": [
3182
+ "wf-grid"
3183
+ ]
3184
+ },
3185
+ {
3186
+ "id": "stack",
3187
+ "name": "纵向堆叠",
3188
+ "cssFile": "_stack.css",
3189
+ "kind": "primitive",
3190
+ "desc": "flex column 容器——--wf-gap 控制间距(页面/卡片骨架首选)",
3191
+ "classes": [
3192
+ "wf-stack"
3193
+ ]
3194
+ },
3195
+ {
3196
+ "id": "row",
3197
+ "name": "横向行",
3198
+ "cssFile": "_row.css",
3199
+ "kind": "primitive",
3200
+ "desc": "flex row 容器——/between/around/evenly/right 分布变体",
3201
+ "classes": [
3202
+ "wf-row",
3203
+ "wf-between",
3204
+ "wf-around",
3205
+ "wf-evenly",
3206
+ "wf-right"
3207
+ ]
3208
+ },
3209
+ {
3210
+ "id": "center",
3211
+ "name": "居中",
3212
+ "cssFile": "_center.css",
3213
+ "kind": "primitive",
3214
+ "desc": "双向居中(Hero/空状态/认证页)",
3215
+ "classes": [
3216
+ "wf-center"
3217
+ ]
3218
+ },
3219
+ {
3220
+ "id": "fill",
3221
+ "name": "填满",
3222
+ "cssFile": "_fill.css",
3223
+ "kind": "primitive",
3224
+ "desc": "flex:1 占满剩余空间(内容区/弹性布局)",
3225
+ "classes": [
3226
+ "wf-fill"
3227
+ ]
3228
+ },
3229
+ {
3230
+ "id": "container",
3231
+ "name": "页面容器",
3232
+ "cssFile": "_container.css",
3233
+ "kind": "primitive",
3234
+ "desc": "水平居中定宽容器——--wf-max 控制宽度",
3235
+ "classes": [
3236
+ "wf-container"
3237
+ ]
3238
+ },
3239
+ {
3240
+ "id": "cluster",
3241
+ "name": "自动换行簇",
3242
+ "cssFile": "_cluster.css",
3243
+ "kind": "primitive",
3244
+ "desc": "flex-wrap 簇布局(标签/按钮组)",
3245
+ "classes": [
3246
+ "wf-cluster"
3247
+ ]
3248
+ },
3249
+ {
3250
+ "id": "split",
3251
+ "name": "分栏",
3252
+ "cssFile": "_split.css",
3253
+ "kind": "primitive",
3254
+ "desc": "两栏拆分——--wf-split-ratio 控制比例",
3255
+ "classes": [
3256
+ "wf-split"
3257
+ ]
3258
+ },
3259
+ {
3260
+ "id": "layer",
3261
+ "name": "层叠",
3262
+ "cssFile": "_layer.css",
3263
+ "kind": "primitive",
3264
+ "desc": "absolute 层叠容器(角标/覆盖层)",
3265
+ "classes": [
3266
+ "wf-layer"
3267
+ ]
3268
+ },
3269
+ {
3270
+ "id": "app-shell",
3271
+ "name": "应用外壳",
3272
+ "cssFile": "_app-shell.css",
3273
+ "kind": "primitive",
3274
+ "desc": "wf-app-shell 可折叠侧栏 + wf-nav 导航(菜单/分组/激活态)",
3275
+ "classes": [
3276
+ "wf-app-shell",
3277
+ "wf-nav",
3278
+ "wf-nav-item",
3279
+ "wf-nav-group",
3280
+ "wf-sidebar"
3281
+ ]
3282
+ },
3283
+ {
3284
+ "id": "hidden",
3285
+ "name": "显隐与显示类型",
3286
+ "cssFile": "_hidden.css",
3287
+ "kind": "primitive",
3288
+ "desc": "wf-hidden/wf-block/wf-flex…(含 @lg 断点变体——响应式切换)",
3289
+ "classes": [
3290
+ "wf-hidden",
3291
+ "wf-hidden@lg",
3292
+ "wf-flex@lg",
3293
+ "wf-block"
3294
+ ]
3295
+ },
3296
+ {
3297
+ "id": "position",
3298
+ "name": "定位",
3299
+ "cssFile": "_fixed.css",
3300
+ "kind": "primitive",
3301
+ "desc": "fixed/sticky + top/bottom/right 吸附(吸顶/悬浮/回顶)",
3302
+ "classes": [
3303
+ "wf-fixed",
3304
+ "wf-sticky",
3305
+ "wf-top",
3306
+ "wf-bottom"
3307
+ ]
3308
+ },
3309
+ {
3310
+ "id": "scroll",
3311
+ "name": "滚动与裁剪",
3312
+ "cssFile": "_scroll.css",
3313
+ "kind": "primitive",
3314
+ "desc": "溢出滚动容器 + clip/nowrap(横向滚动条/卡片裁剪)",
3315
+ "classes": [
3316
+ "wf-scroll",
3317
+ "wf-clip",
3318
+ "wf-nowrap"
3319
+ ]
3320
+ },
3321
+ {
3322
+ "id": "safe-area",
3323
+ "name": "安全区",
3324
+ "cssFile": "_safe-area.css",
3325
+ "kind": "primitive",
3326
+ "desc": "wf-safe-top/bottom(移动端刘海/底部栏适配)",
3327
+ "classes": [
3328
+ "wf-safe-top",
3329
+ "wf-safe-bottom"
3330
+ ]
3331
+ },
3332
+ {
3333
+ "id": "anchor",
3334
+ "name": "锚点定位",
3335
+ "cssFile": "_anchor.css",
3336
+ "kind": "primitive",
3337
+ "desc": "wf-anchor(锚定定位——fixed 相对容器)",
3338
+ "classes": [
3339
+ "wf-anchor"
3340
+ ]
3341
+ },
3342
+ {
3343
+ "id": "align",
3344
+ "name": "对齐",
3345
+ "cssFile": "_align-self.css",
3346
+ "kind": "primitive",
3347
+ "desc": "align-self 系列(stretch/start/end/center——单元格对齐)",
3348
+ "classes": [
3349
+ "wf-stretch",
3350
+ "wf-align-self-start"
3351
+ ]
3352
+ },
3353
+ {
3354
+ "id": "spacing",
3355
+ "name": "间距工具",
3356
+ "cssFile": "_spacing.css",
3357
+ "kind": "utility",
3358
+ "desc": "90 个 p/m/gap 类——刻度阶梯(--wf-space-*)",
3359
+ "classes": [
3360
+ "wf-p-md",
3361
+ "wf-m-0",
3362
+ "wf-gap-sm",
3363
+ "wf-gap-lg"
3364
+ ]
3365
+ },
3366
+ {
3367
+ "id": "surface",
3368
+ "name": "表面工具",
3369
+ "cssFile": "_surface.css",
3370
+ "kind": "utility",
3371
+ "desc": "20 个背景/圆角/边框类(卡片/表单面;flat 变体=平面表面)",
3372
+ "classes": [
3373
+ "wf-surface",
3374
+ "wf-surface--flat",
3375
+ "wf-bg-secondary",
3376
+ "wf-rounded-md",
3377
+ "wf-border-t"
3378
+ ]
3379
+ },
3380
+ {
3381
+ "id": "border",
3382
+ "name": "边框工具",
3383
+ "cssFile": "_border.css",
3384
+ "kind": "utility",
3385
+ "desc": "边框/分隔线(wf-border/b/t/l/r)",
3386
+ "classes": [
3387
+ "wf-border",
3388
+ "wf-border-b"
3389
+ ]
3390
+ },
3391
+ {
3392
+ "id": "text",
3393
+ "name": "文本工具",
3394
+ "cssFile": "_text.css",
3395
+ "kind": "utility",
3396
+ "desc": "42 个字号/字重/颜色/对齐类(-text 语义色变体)",
3397
+ "classes": [
3398
+ "wf-text-sm",
3399
+ "wf-text-bold",
3400
+ "wf-text-secondary",
3401
+ "wf-text-primary"
3402
+ ]
3403
+ }
3404
+ ],
3405
+ "patterns": [
3406
+ {
3407
+ "id": "app-shell",
3408
+ "name": "后台应用壳",
3409
+ "group": "工作台",
3410
+ "desc": "wf-app-shell 可折叠侧栏 + 内容区",
3411
+ "file": "patterns/AppShell.tsx",
3412
+ "uses": [
3413
+ "Button",
3414
+ "PageHeader",
3415
+ "Table",
3416
+ "Badge",
3417
+ "Icon",
3418
+ "Divider",
3419
+ "Pagination",
3420
+ "StatCard",
3421
+ "Space",
3422
+ "Card",
3423
+ "Text"
3424
+ ],
3425
+ "usedInApps": [
3426
+ "admin"
3427
+ ]
3428
+ },
3429
+ {
3430
+ "id": "workspace",
3431
+ "name": "分栏工作台",
3432
+ "group": "工作台",
3433
+ "desc": "wf-grid 三栏(文件树 + CodeBlock + Descriptions)",
3434
+ "file": "patterns/SplitWorkspace.tsx",
3435
+ "uses": [
3436
+ "Text",
3437
+ "Button",
3438
+ "CodeBlock",
3439
+ "Descriptions",
3440
+ "Divider",
3441
+ "Icon",
3442
+ "List",
3443
+ "Tabs",
3444
+ "Space"
3445
+ ],
3446
+ "usedInApps": []
3447
+ },
3448
+ {
3449
+ "id": "focus-task",
3450
+ "name": "聚焦任务页",
3451
+ "group": "工作台",
3452
+ "desc": "wf-center 居中 + Form 表单全家桶",
3453
+ "file": "patterns/FocusTask.tsx",
3454
+ "uses": [
3455
+ "Text",
3456
+ "Button",
3457
+ "Card",
3458
+ "Checkbox",
3459
+ "Field",
3460
+ "Form",
3461
+ "Icon",
3462
+ "Input",
3463
+ "Space",
3464
+ "Alert",
3465
+ "Divider"
3466
+ ],
3467
+ "usedInApps": []
3468
+ },
3469
+ {
3470
+ "id": "docs",
3471
+ "name": "文档站",
3472
+ "group": "内容展示",
3473
+ "desc": "Anchor 目录 + prose 正文 + CodeBlock",
3474
+ "file": "patterns/Docs.tsx",
3475
+ "uses": [
3476
+ "Title",
3477
+ "Paragraph",
3478
+ "Anchor",
3479
+ "BackTop",
3480
+ "Breadcrumb",
3481
+ "Button",
3482
+ "CodeBlock",
3483
+ "Divider",
3484
+ "Icon",
3485
+ "Tag",
3486
+ "Space"
3487
+ ],
3488
+ "usedInApps": []
3489
+ },
3490
+ {
3491
+ "id": "dashboard",
3492
+ "name": "仪表盘",
3493
+ "group": "内容展示",
3494
+ "desc": "wf-grid 响应式 KPI + 时间范围数据联动",
3495
+ "file": "patterns/Dashboard.tsx",
3496
+ "uses": [
3497
+ "Title",
3498
+ "Text",
3499
+ "StatCard",
3500
+ "PageHeader",
3501
+ "ProgressBar",
3502
+ "SegmentedControl",
3503
+ "Switch",
3504
+ "Table",
3505
+ "Badge",
3506
+ "Card",
3507
+ "Divider",
3508
+ "Icon",
3509
+ "Space"
3510
+ ],
3511
+ "usedInApps": []
3512
+ },
3513
+ {
3514
+ "id": "data-screen",
3515
+ "name": "数据大屏",
3516
+ "group": "内容展示",
3517
+ "desc": "wf-fill 全屏 + wf-layer/wf-pop 容器内角标 + Sparkline",
3518
+ "file": "patterns/DataScreen.tsx",
3519
+ "uses": [
3520
+ "Text",
3521
+ "Badge",
3522
+ "Card",
3523
+ "Icon",
3524
+ "Sparkline",
3525
+ "StatCard",
3526
+ "Space"
3527
+ ],
3528
+ "usedInApps": []
3529
+ },
3530
+ {
3531
+ "id": "landing",
3532
+ "name": "营销落地页",
3533
+ "group": "营销推广",
3534
+ "desc": "wf-center Hero + wf-grid 特性 + CTA",
3535
+ "file": "patterns/Landing.tsx",
3536
+ "uses": [
3537
+ "Title",
3538
+ "Paragraph",
3539
+ "Text",
3540
+ "Badge",
3541
+ "BackTop",
3542
+ "Button",
3543
+ "Card",
3544
+ "Divider",
3545
+ "Icon",
3546
+ "Link",
3547
+ "Space",
3548
+ "Avatar"
3549
+ ],
3550
+ "usedInApps": []
3551
+ },
3552
+ {
3553
+ "id": "mobile",
3554
+ "name": "移动端 App",
3555
+ "group": "营销推广",
3556
+ "desc": "wf-safe-top/bottom + SearchInput + List + 底部 Tab",
3557
+ "file": "patterns/Mobile.tsx",
3558
+ "uses": [
3559
+ "Text",
3560
+ "Avatar",
3561
+ "Badge",
3562
+ "Divider",
3563
+ "Icon",
3564
+ "List",
3565
+ "SearchInput",
3566
+ "Space"
3567
+ ],
3568
+ "usedInApps": []
3569
+ },
3570
+ {
3571
+ "id": "list-page",
3572
+ "name": "列表页",
3573
+ "group": "内容展示",
3574
+ "desc": "搜索 + 表格 + 分页 + 状态标签——最常用业务列表",
3575
+ "file": "patterns/ListPage.tsx",
3576
+ "uses": [
3577
+ "PageHeader",
3578
+ "SearchInput",
3579
+ "Table",
3580
+ "Tag",
3581
+ "Pagination",
3582
+ "Button",
3583
+ "Icon",
3584
+ "EmptyState",
3585
+ "Card"
3586
+ ],
3587
+ "usedInApps": []
3588
+ },
3589
+ {
3590
+ "id": "detail-page",
3591
+ "name": "详情页",
3592
+ "group": "内容展示",
3593
+ "desc": "描述列表 + 时间线 + 操作区——业务对象详情",
3594
+ "file": "patterns/DetailPage.tsx",
3595
+ "uses": [
3596
+ "PageHeader",
3597
+ "Descriptions",
3598
+ "Timeline",
3599
+ "Tag",
3600
+ "Button",
3601
+ "Space",
3602
+ "Card",
3603
+ "Divider"
3604
+ ],
3605
+ "usedInApps": []
3606
+ },
3607
+ {
3608
+ "id": "settings-page",
3609
+ "name": "设置页",
3610
+ "group": "内容展示",
3611
+ "desc": "Tabs 分区 + 表单 + 开关——多块设置",
3612
+ "file": "patterns/SettingsPage.tsx",
3613
+ "uses": [
3614
+ "PageHeader",
3615
+ "Tabs",
3616
+ "Form",
3617
+ "Field",
3618
+ "Input",
3619
+ "Switch",
3620
+ "Select",
3621
+ "Button",
3622
+ "Alert",
3623
+ "Space"
3624
+ ],
3625
+ "usedInApps": []
3626
+ }
3627
+ ],
3628
+ "apps": [
3629
+ {
3630
+ "id": "todo",
3631
+ "name": "任务管理",
3632
+ "desc": "经典 CRUD 应用:列表/详情/新建——多页路由 + createStore 跨页状态 + 表单受控。后端:MemorySql 持久化。",
3633
+ "dir": "apps/todo",
3634
+ "usesPatterns": [],
3635
+ "uses": [
3636
+ "Button",
3637
+ "Input",
3638
+ "Checkbox",
3639
+ "Form",
3640
+ "Tag",
3641
+ "EmptyState",
3642
+ "PageHeader"
3643
+ ],
3644
+ "production": false,
3645
+ "quality": [
3646
+ "键盘可达",
3647
+ "375/768 无溢出",
3648
+ "亮暗主题",
3649
+ "loading/error/empty 态",
3650
+ "零控制台错误"
3651
+ ]
3652
+ },
3653
+ {
3654
+ "id": "auth",
3655
+ "name": "登录注册",
3656
+ "desc": "登录/注册 → 受保护页 → 登出:应用级状态(user store)+ 路由守卫 + ctx.data。后端:认证中间件。",
3657
+ "dir": "apps/auth",
3658
+ "usesPatterns": [],
3659
+ "uses": [
3660
+ "Card",
3661
+ "Form",
3662
+ "Input",
3663
+ "PasswordInput",
3664
+ "Button",
3665
+ "Alert"
3666
+ ],
3667
+ "production": false,
3668
+ "quality": [
3669
+ "键盘可达",
3670
+ "表单校验",
3671
+ "错误态",
3672
+ "会话持久化",
3673
+ "零控制台错误"
3674
+ ]
3675
+ },
3676
+ {
3677
+ "id": "admin",
3678
+ "name": "管理后台",
3679
+ "desc": "AppShell + Dashboard/Table/Form 多页——layout 包裹复用 + 主题。后端:rateLimit + 查询端点。源于 agent-platform 架构提炼。",
3680
+ "dir": "apps/admin",
3681
+ "usesPatterns": [
3682
+ "app-shell"
3683
+ ],
3684
+ "uses": [
3685
+ "Layout",
3686
+ "Menu",
3687
+ "NavMenu",
3688
+ "Table",
3689
+ "Form",
3690
+ "ThemeSwitch",
3691
+ "StatCard",
3692
+ "Chart",
3693
+ "Badge",
3694
+ "Avatar",
3695
+ "Tag"
3696
+ ],
3697
+ "production": false,
3698
+ "quality": [
3699
+ "键盘可达",
3700
+ "侧栏折叠",
3701
+ "表格排序",
3702
+ "亮暗主题",
3703
+ "loading/empty 态"
3704
+ ]
3705
+ },
3706
+ {
3707
+ "id": "multi",
3708
+ "name": "应用编排",
3709
+ "desc": "父应用嵌子应用:registerApp/hApp + app:* 边界事件——子应用独立状态。后端:ws 广播。",
3710
+ "dir": "apps/multi",
3711
+ "usesPatterns": [],
3712
+ "uses": [
3713
+ "Card",
3714
+ "Button",
3715
+ "Input",
3716
+ "Tag",
3717
+ "Tabs"
3718
+ ],
3719
+ "production": false,
3720
+ "quality": [
3721
+ "子应用独立状态",
3722
+ "边界事件观测",
3723
+ "零控制台错误"
3724
+ ]
3725
+ },
3726
+ {
3727
+ "id": "agent-platform",
3728
+ "name": "agent-platform(生产级)",
3729
+ "desc": "多租户 AI Agent 平台——weifuwu 中间件全量消费方(认证/AI/沙箱/工具链/商业化/私有化)。实战驱动框架开发的生产级参考。",
3730
+ "dir": "",
3731
+ "usesPatterns": [],
3732
+ "uses": [
3733
+ "AiChat",
3734
+ "AuthPage",
3735
+ "Table",
3736
+ "Form",
3737
+ "Modal",
3738
+ "Drawer",
3739
+ "Menu",
3740
+ "StatCard",
3741
+ "ThemeSwitch"
3742
+ ],
3743
+ "production": true,
3744
+ "quality": [
3745
+ "真实产品",
3746
+ "多租户",
3747
+ "私有化部署",
3748
+ "商业化闭环"
3749
+ ]
3750
+ }
3751
+ ],
3752
+ "backend": [
3753
+ {
3754
+ "id": "router",
3755
+ "name": "Router 与请求",
3756
+ "group": "core",
3757
+ "desc": "Trie 路由 + 路径参数 :id + 通配符 + 方法分发——showcase 自身就是活体证明",
3758
+ "middleware": "ctx.route",
3759
+ "endpoint": "/api/demo/router",
3760
+ "relatedComponents": []
3761
+ },
3762
+ {
3763
+ "id": "middleware",
3764
+ "name": "ctx 注入链",
3765
+ "group": "core",
3766
+ "desc": "中间件面注入 ctx.sql/redis/ui/api/auth/ws/limit/email/queue/cron/ai——装配即依赖注入",
3767
+ "middleware": "ctx.*",
3768
+ "endpoint": null,
3769
+ "relatedComponents": []
3770
+ },
3771
+ {
3772
+ "id": "http",
3773
+ "name": "HTTP 原语",
3774
+ "group": "core",
3775
+ "desc": "Request/Response 标准接口 + SSE + CORS + 静态服务",
3776
+ "middleware": "—",
3777
+ "endpoint": "/api/demo/http",
3778
+ "relatedComponents": []
3779
+ },
3780
+ {
3781
+ "id": "sql",
3782
+ "name": "ctx.sql(自研 PG 协议层)",
3783
+ "group": "data",
3784
+ "desc": "PgConnection 实现 Sql 契约——演示用 MemorySql(零 docker),文档说明换 postgres() 一行代码",
3785
+ "middleware": "ctx.sql",
3786
+ "endpoint": "/api/demo/sql",
3787
+ "relatedComponents": [
3788
+ "Form",
3789
+ "Table"
3790
+ ]
3791
+ },
3792
+ {
3793
+ "id": "redis",
3794
+ "name": "ctx.redis(自研 RESP 协议层)",
3795
+ "group": "data",
3796
+ "desc": "RedisClient 实现 Redis 契约——缓存/计数/发布订阅;演示用 MemoryRedis",
3797
+ "middleware": "ctx.redis",
3798
+ "endpoint": "/api/demo/redis",
3799
+ "relatedComponents": [
3800
+ "Table"
3801
+ ]
3802
+ },
3803
+ {
3804
+ "id": "ws",
3805
+ "name": "WebSocket",
3806
+ "group": "realtime",
3807
+ "desc": "app.ws(path, handler)——双向实时(聊天/推送/协作)",
3808
+ "middleware": "ctx.ws",
3809
+ "endpoint": "/ws/echo",
3810
+ "relatedComponents": [
3811
+ "AiChat"
3812
+ ]
3813
+ },
3814
+ {
3815
+ "id": "sse",
3816
+ "name": "SSE 事件流",
3817
+ "group": "realtime",
3818
+ "desc": "Server-Sent Events——服务端推送(流式回复/进度/通知);wire-fake chat 即活体",
3819
+ "middleware": "—",
3820
+ "endpoint": "/api/chat",
3821
+ "relatedComponents": [
3822
+ "AiChat"
3823
+ ]
3824
+ },
3825
+ {
3826
+ "id": "ai",
3827
+ "name": "ctx.ai(chat/stream/agent/approve)",
3828
+ "group": "ai",
3829
+ "desc": "AI 对话全链路:流式 token / 工具调用 / HITL 审批——wf: 协议对页面透明",
3830
+ "middleware": "ctx.ai",
3831
+ "endpoint": "/api/chat",
3832
+ "relatedComponents": [
3833
+ "AiChat",
3834
+ "ToolCallCard",
3835
+ "ApprovalCard"
3836
+ ]
3837
+ },
3838
+ {
3839
+ "id": "limit",
3840
+ "name": "rateLimit(ctx.limit)",
3841
+ "group": "saas",
3842
+ "desc": "限流中间件——超额返回 429(演示端点轻阈值)",
3843
+ "middleware": "ctx.limit",
3844
+ "endpoint": "/api/demo/limit",
3845
+ "relatedComponents": []
3846
+ },
3847
+ {
3848
+ "id": "auth",
3849
+ "name": "认证(ctx.auth/user)",
3850
+ "group": "saas",
3851
+ "desc": "登录态/会话/权限——userSystem 集成",
3852
+ "middleware": "ctx.auth",
3853
+ "endpoint": null,
3854
+ "relatedComponents": [
3855
+ "AuthPage"
3856
+ ]
3857
+ },
3858
+ {
3859
+ "id": "email",
3860
+ "name": "邮件(ctx.email)",
3861
+ "group": "saas",
3862
+ "desc": "Mailer 契约——演示用内存捕获回显(mock 输出可读)",
3863
+ "middleware": "ctx.email",
3864
+ "endpoint": "/api/demo/email",
3865
+ "relatedComponents": []
3866
+ },
3867
+ {
3868
+ "id": "queue",
3869
+ "name": "任务队列(ctx.queue)",
3870
+ "group": "saas",
3871
+ "desc": "QueueClientModule——池命令 + 阻塞 worker(注入 Redis 模式)",
3872
+ "middleware": "ctx.queue",
3873
+ "endpoint": "/api/demo/queue",
3874
+ "relatedComponents": []
3875
+ },
3876
+ {
3877
+ "id": "schedule",
3878
+ "name": "定时任务(ctx.schedule/cron)",
3879
+ "group": "saas",
3880
+ "desc": "cron 表达式调度——演示:日志计数端点",
3881
+ "middleware": "ctx.schedule",
3882
+ "endpoint": "/api/demo/cron",
3883
+ "relatedComponents": []
3884
+ },
3885
+ {
3886
+ "id": "graphql",
3887
+ "name": "GraphQL",
3888
+ "group": "core",
3889
+ "desc": "app.graphql(handler)——SDL + resolvers map 绑定",
3890
+ "middleware": "—",
3891
+ "endpoint": "/api/demo/graphql",
3892
+ "relatedComponents": []
3893
+ }
3894
+ ],
3895
+ "capabilities": [
3896
+ {
3897
+ "id": "two-phase",
3898
+ "name": "两阶段异步组件",
3899
+ "desc": "mount(工厂,只一次)+ render(每次渲染)——工厂可 await,renderFn 强制异步",
3900
+ "srcFile": "src/client/ui-dom/vdom3/build.ts",
3901
+ "selfUsedIn": [
3902
+ "showcase 所有页面"
3903
+ ]
3904
+ },
3905
+ {
3906
+ "id": "render-only",
3907
+ "name": "render-only 状态",
3908
+ "desc": "只有 ctx.render() 一种触发——状态是普通对象(let/createStore),无 $ Proxy 无隐式触发",
3909
+ "srcFile": "src/client/ui-dom/vdom3/router.ts",
3910
+ "selfUsedIn": [
3911
+ "搜索框",
3912
+ "主题切换",
3913
+ "应用页内嵌 router"
3914
+ ]
3915
+ },
3916
+ {
3917
+ "id": "store",
3918
+ "name": "createStore + useExternal",
3919
+ "desc": "共享状态原语:普通对象 + subscribe/set/update/notify——跨组件通道",
3920
+ "srcFile": "src/client/ui-dom/store.ts",
3921
+ "selfUsedIn": [
3922
+ "主题/语言偏好跨页同步"
3923
+ ]
3924
+ },
3925
+ {
3926
+ "id": "router",
3927
+ "name": "UIRouter 路由",
3928
+ "desc": "pathname 路由 + :param + layout 包裹复用 + 隔离模式(页面内嵌子路由)",
3929
+ "srcFile": "src/client/ui-dom/vdom3/router.ts",
3930
+ "selfUsedIn": [
3931
+ "showcase 八域导航",
3932
+ "app demo 嵌入"
3933
+ ]
3934
+ },
3935
+ {
3936
+ "id": "data",
3937
+ "name": "ctx.data 数据管道",
3938
+ "desc": "get/set/has + 并发合并——SSR/hydration/SPA 三场景自动适配",
3939
+ "srcFile": "src/client/ui-dom/",
3940
+ "selfUsedIn": [
3941
+ "(P2:示例页)"
3942
+ ]
3943
+ },
3944
+ {
3945
+ "id": "events",
3946
+ "name": "事件流(stream)",
3947
+ "desc": "DOM↔事件流全链路因果可回放——__wf_tail 实时观测",
3948
+ "srcFile": "src/client/ui-dom/vdom3/events.ts",
3949
+ "selfUsedIn": [
3950
+ "__wf_tail 观测面板"
3951
+ ]
3952
+ },
3953
+ {
3954
+ "id": "app-node",
3955
+ "name": "多应用(registerApp/hApp)",
3956
+ "desc": "注册表 + 独立状态 + app:* 边界事件——应用编排",
3957
+ "srcFile": "src/client/ui-dom/vdom3/registry.ts",
3958
+ "selfUsedIn": [
3959
+ "multi 应用模板"
3960
+ ]
3961
+ },
3962
+ {
3963
+ "id": "hooks",
3964
+ "name": "hooks 族",
3965
+ "desc": "useMedia/useInView/useChat/usePopup…——事件驱动重渲染",
3966
+ "srcFile": "src/client/ui-dom/vdom3/",
3967
+ "selfUsedIn": [
3968
+ "懒渲染",
3969
+ "弹层"
3970
+ ]
3971
+ },
3972
+ {
3973
+ "id": "popup",
3974
+ "name": "usePopup 弹窗基座",
3975
+ "desc": "portal + 定位 + 外部点击/Escape + 会话级模态——新弹层一律复用",
3976
+ "srcFile": "src/client/ui-dom/popup.ts",
3977
+ "selfUsedIn": [
3978
+ "Drawer/代码抽屉/下拉"
3979
+ ]
3980
+ },
3981
+ {
3982
+ "id": "self-id",
3983
+ "name": "selfId 精准刷新",
3984
+ "desc": "自定义组件 ID——任意位置 render([id]) 跨组件精准定位",
3985
+ "srcFile": "src/client/ui-dom/vdom3/",
3986
+ "selfUsedIn": [
3987
+ "(示例页)"
3988
+ ]
3989
+ },
3990
+ {
3991
+ "id": "i18n",
3992
+ "name": "i18n 中间件",
3993
+ "desc": "locale/setLocale/t + 页面级重渲染(demo 专用 AppMiddleware)",
3994
+ "srcFile": "src/client/ui-dom/i18n.ts",
3995
+ "selfUsedIn": [
3996
+ "中英切换"
3997
+ ]
3998
+ },
3999
+ {
4000
+ "id": "theme",
4001
+ "name": "主题系统",
4002
+ "desc": "--wf-* token 双层(亮/暗/自动)+ ThemeSwitch + localStorage 持久化",
4003
+ "srcFile": "src/layout/_tokens.css",
4004
+ "selfUsedIn": [
4005
+ "ThemeSwitch 全站"
4006
+ ]
4007
+ }
4008
+ ],
4009
+ "community": [],
4010
+ "guides": [
4011
+ {
4012
+ "id": "start",
4013
+ "name": "快速开始",
4014
+ "desc": "从零到第一个页面:装包 → 选型 → 取码 → 运行"
4015
+ },
4016
+ {
4017
+ "id": "choose",
4018
+ "name": "选型决策树",
4019
+ "desc": "组件 vs 原语 vs 页面模式 vs 应用模板——什么场景抄什么"
4020
+ },
4021
+ {
4022
+ "id": "quality",
4023
+ "name": "人类质量标准",
4024
+ "desc": "LLM 交付前验收门槛:可访问性/响应式/主题/动效/状态矩阵/性能/纪律"
4025
+ },
4026
+ {
4027
+ "id": "component-model",
4028
+ "name": "两阶段组件模型",
4029
+ "desc": "mount/render 生命周期职责表 + 事件函数放哪层(AGENTS.md §3.1 展开)"
4030
+ },
4031
+ {
4032
+ "id": "render-only",
4033
+ "name": "render-only 状态",
4034
+ "desc": "改状态 → 显式 render();createStore 跨组件;selfId 精准刷新"
4035
+ },
4036
+ {
4037
+ "id": "custom-component",
4038
+ "name": "自定义组件开发指南",
4039
+ "desc": "usePopup / useControlled / 动画 / AI 组件 / 类型纪律 / 测试写法(从 docs 迁移)"
4040
+ },
4041
+ {
4042
+ "id": "page-building",
4043
+ "name": "页面组装方法论",
4044
+ "desc": "从零搭页面:页面解剖学五层 + 组装 5 步套路 + 完整示例(\"第一行写什么\")"
4045
+ },
4046
+ {
4047
+ "id": "layout-choice",
4048
+ "name": "布局选型指南",
4049
+ "desc": "什么时候用哪个原语:决策树(骨架/分区/间距/定位/响应式)+ 组件与原语边界"
4050
+ },
4051
+ {
4052
+ "id": "production",
4053
+ "name": "生产级案例",
4054
+ "desc": "agent-platform 架构提炼:中间件全家桶装配、14 页 SPA 组织、商业化能力"
4055
+ },
4056
+ {
4057
+ "id": "frontend",
4058
+ "name": "前端总览与 API 速查",
4059
+ "desc": "从 docs/frontend.md 迁移(叙述性指南——正文见 content/guides/frontend.md)"
4060
+ },
4061
+ {
4062
+ "id": "components-guide",
4063
+ "name": "组件库使用示例速查",
4064
+ "desc": "从 docs/components.md 迁移(叙述性指南——正文见 content/guides/components-guide.md)"
4065
+ },
4066
+ {
4067
+ "id": "middleware",
4068
+ "name": "中间件与 ctx 注入链",
4069
+ "desc": "从 docs/frontend-middleware.md 迁移(叙述性指南——正文见 content/guides/middleware.md)"
4070
+ },
4071
+ {
4072
+ "id": "server-guide",
4073
+ "name": "后端开发指南",
4074
+ "desc": "从 docs/server.md 迁移(叙述性指南——正文见 content/guides/server-guide.md)"
4075
+ },
4076
+ {
4077
+ "id": "data-guide",
4078
+ "name": "数据层指南(sql/redis)",
4079
+ "desc": "从 docs/data.md 迁移(叙述性指南——正文见 content/guides/data-guide.md)"
4080
+ },
4081
+ {
4082
+ "id": "realtime-guide",
4083
+ "name": "实时能力指南(ws/sse)",
4084
+ "desc": "从 docs/realtime.md 迁移(叙述性指南——正文见 content/guides/realtime-guide.md)"
4085
+ },
4086
+ {
4087
+ "id": "saas-guide",
4088
+ "name": "SaaS 能力指南(auth/limit/email/queue/cron)",
4089
+ "desc": "从 docs/saas.md 迁移(叙述性指南——正文见 content/guides/saas-guide.md)"
4090
+ },
4091
+ {
4092
+ "id": "layout-guide",
4093
+ "name": "布局原语使用指南",
4094
+ "desc": "从 docs/layout.md 迁移(叙述性指南——正文见 content/guides/layout-guide.md)"
4095
+ },
4096
+ {
4097
+ "id": "styling",
4098
+ "name": "样式体系指南",
4099
+ "desc": "从 docs/styling.md 迁移(叙述性指南——正文见 content/guides/styling.md)"
4100
+ },
4101
+ {
4102
+ "id": "mobile-guide",
4103
+ "name": "移动端开发指南",
4104
+ "desc": "从 docs/mobile.md 迁移(叙述性指南——正文见 content/guides/mobile-guide.md)"
4105
+ },
4106
+ {
4107
+ "id": "ui-dom-guide",
4108
+ "name": "前端运行时指南(UIRouter/渲染器)",
4109
+ "desc": "从 docs/frontend-ui-dom.md 迁移(叙述性指南——正文见 content/guides/ui-dom-guide.md)"
4110
+ }
4111
+ ],
4112
+ "needs": [
4113
+ {
4114
+ "id": "admin",
4115
+ "name": "管理后台",
4116
+ "desc": "侧栏导航 + 仪表盘 + 数据表格 + 表单——最常见的企业应用",
4117
+ "template": "admin",
4118
+ "patterns": [
4119
+ "app-shell",
4120
+ "dashboard"
4121
+ ],
4122
+ "components": [
4123
+ "Layout",
4124
+ "Menu",
4125
+ "Table",
4126
+ "Form",
4127
+ "StatCard",
4128
+ "ThemeSwitch",
4129
+ "Pagination"
4130
+ ],
4131
+ "backend": [
4132
+ "sql",
4133
+ "limit"
4134
+ ],
4135
+ "guide": "复制 examples/apps/admin/ → 按改造指南换业务数据 → 加页面"
4136
+ },
4137
+ {
4138
+ "id": "ai-chat",
4139
+ "name": "AI 对话应用",
4140
+ "desc": "流式对话 + 工具调用 + HITL 审批 + 推理展示",
4141
+ "template": "multi",
4142
+ "patterns": [],
4143
+ "components": [
4144
+ "AiChat",
4145
+ "ChatInput",
4146
+ "ToolCallCard",
4147
+ "ApprovalCard",
4148
+ "ReasoningBlock",
4149
+ "SessionList"
4150
+ ],
4151
+ "backend": [
4152
+ "ai",
4153
+ "sse"
4154
+ ],
4155
+ "guide": "wire-fake /api/chat 已就绪——接真实 ctx.ai 换端点即可"
4156
+ },
4157
+ {
4158
+ "id": "auth-app",
4159
+ "name": "登录/权限应用",
4160
+ "desc": "注册登录 + 受保护页 + 会话持久化",
4161
+ "template": "auth",
4162
+ "patterns": [],
4163
+ "components": [
4164
+ "AuthPage",
4165
+ "Form",
4166
+ "Input",
4167
+ "PasswordInput",
4168
+ "Alert"
4169
+ ],
4170
+ "backend": [
4171
+ "auth"
4172
+ ],
4173
+ "guide": "复制 examples/apps/auth/ → 换用户存储(userSystem 中间件)"
4174
+ },
4175
+ {
4176
+ "id": "todo-tool",
4177
+ "name": "工具型应用",
4178
+ "desc": "任务/清单/轻量 CRUD——经典起步应用",
4179
+ "template": "todo",
4180
+ "patterns": [],
4181
+ "components": [
4182
+ "Form",
4183
+ "Input",
4184
+ "Checkbox",
4185
+ "Tag",
4186
+ "EmptyState",
4187
+ "PageHeader"
4188
+ ],
4189
+ "backend": [
4190
+ "sql"
4191
+ ],
4192
+ "guide": "复制 examples/apps/todo/ → 改数据模型(api.ts 表结构)"
4193
+ },
4194
+ {
4195
+ "id": "dashboard",
4196
+ "name": "数据看板",
4197
+ "desc": "KPI 指标 + 图表 + 数据表格——分析型页面",
4198
+ "template": "admin",
4199
+ "patterns": [
4200
+ "dashboard",
4201
+ "data-screen"
4202
+ ],
4203
+ "components": [
4204
+ "StatCard",
4205
+ "Chart",
4206
+ "Table",
4207
+ "Sparkline",
4208
+ "VirtualTable"
4209
+ ],
4210
+ "backend": [
4211
+ "sql"
4212
+ ],
4213
+ "guide": "patterns/dashboard 复制 → Chart 数据接真实 API"
4214
+ },
4215
+ {
4216
+ "id": "content-site",
4217
+ "name": "内容展示站",
4218
+ "desc": "文档站/落地页/营销页——内容为主",
4219
+ "template": "",
4220
+ "patterns": [
4221
+ "docs",
4222
+ "landing"
4223
+ ],
4224
+ "components": [
4225
+ "Markdown",
4226
+ "CodeBlock",
4227
+ "Anchor",
4228
+ "Card",
4229
+ "Badge"
4230
+ ],
4231
+ "backend": [],
4232
+ "guide": "patterns/docs 或 landing 复制 → 填内容"
4233
+ },
4234
+ {
4235
+ "id": "mobile-app",
4236
+ "name": "移动端应用",
4237
+ "desc": "底部 Tab + 安全区 + 移动端适配",
4238
+ "template": "",
4239
+ "patterns": [
4240
+ "mobile"
4241
+ ],
4242
+ "components": [
4243
+ "SearchInput",
4244
+ "List",
4245
+ "Tabs",
4246
+ "Drawer",
4247
+ "Tag"
4248
+ ],
4249
+ "backend": [],
4250
+ "guide": "patterns/mobile 复制 → 移动端断点纪律(44px 命中区)"
4251
+ },
4252
+ {
4253
+ "id": "team-collab",
4254
+ "name": "团队协作工具",
4255
+ "desc": "多应用编排 + 实时协作",
4256
+ "template": "multi",
4257
+ "patterns": [],
4258
+ "components": [
4259
+ "SortableList",
4260
+ "Kanban",
4261
+ "Tabs",
4262
+ "AvatarGroup",
4263
+ "Mentions"
4264
+ ],
4265
+ "backend": [
4266
+ "ws",
4267
+ "queue"
4268
+ ],
4269
+ "guide": "复制 examples/apps/multi/ → 加子应用(registerApp)"
4270
+ }
4271
+ ],
4272
+ "cases": [
4273
+ {
4274
+ "id": "agent-platform",
4275
+ "name": "agent-platform",
4276
+ "type": "production",
4277
+ "desc": "多租户 AI Agent 平台——认证/AI 引擎/实时消息/沙箱/工具链/商业化全家桶",
4278
+ "highlights": [
4279
+ "中间件全量消费方",
4280
+ "14 页 SPA",
4281
+ "私有化部署",
4282
+ "实战驱动框架开发"
4283
+ ],
4284
+ "url": "https://github.com/weifuwu/weifuwu/tree/main/apps/agent-platform"
4285
+ },
4286
+ {
4287
+ "id": "showcase",
4288
+ "name": "showcase 平台",
4289
+ "type": "showcase",
4290
+ "desc": "本平台自身——weifuwu 发展引擎(用 weifuwu 构建的网站,自举证明)",
4291
+ "highlights": [
4292
+ "六域 500+ 文档",
4293
+ "157 组件活体",
4294
+ "SSR + SPA 双轨",
4295
+ "LLM 友好"
4296
+ ],
4297
+ "url": "https://weifuwu.dev"
4298
+ },
4299
+ {
4300
+ "id": "todo-app",
4301
+ "name": "任务管理应用",
4302
+ "type": "template",
4303
+ "desc": "todo 模板——多页路由 + createStore 跨页状态 + MemorySql 持久化",
4304
+ "highlights": [
4305
+ "全栈模板",
4306
+ "复制即用"
4307
+ ],
4308
+ "url": "https://github.com/weifuwu/weifuwu/tree/main/examples/apps/todo"
4309
+ },
4310
+ {
4311
+ "id": "admin-app",
4312
+ "name": "管理后台应用",
4313
+ "type": "template",
4314
+ "desc": "admin 模板——AppShell + 多页 + 表格 + KPI",
4315
+ "highlights": [
4316
+ "Layout 骨架",
4317
+ "路由 layout 包裹"
4318
+ ],
4319
+ "url": "https://github.com/weifuwu/weifuwu/tree/main/examples/apps/admin"
4320
+ },
4321
+ {
4322
+ "id": "auth-app",
4323
+ "name": "登录注册应用",
4324
+ "type": "template",
4325
+ "desc": "auth 模板——登录/注册/受保护页/会话持久化",
4326
+ "highlights": [
4327
+ "路由守卫",
4328
+ "AuthPage 组件"
4329
+ ],
4330
+ "url": "https://github.com/weifuwu/weifuwu/tree/main/examples/apps/auth"
4331
+ },
4332
+ {
4333
+ "id": "multi-app",
4334
+ "name": "应用编排工作台",
4335
+ "type": "template",
4336
+ "desc": "multi 模板——父应用嵌子应用(registerApp + 边界事件)",
4337
+ "highlights": [
4338
+ "多应用",
4339
+ "独立状态"
4340
+ ],
4341
+ "url": "https://github.com/weifuwu/weifuwu/tree/main/examples/apps/multi"
4342
+ }
4343
+ ]
4344
+ }