weifuwu 0.87.0 → 0.89.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 (392) hide show
  1. package/README.md +111 -135
  2. package/dist/client/components/ActionSheet/ActionSheet.d.ts +1 -1
  3. package/dist/client/components/AiChat/AiChat.d.ts +3 -4
  4. package/dist/client/components/ChatInput/ChatInput.d.ts +5 -0
  5. package/dist/client/components/CitationCard/CitationCard.d.ts +1 -1
  6. package/dist/client/components/Command/Command.d.ts +1 -1
  7. package/dist/client/components/ContextMenu/ContextMenu.d.ts +1 -1
  8. package/dist/client/components/DatePicker/DatePicker.d.ts +1 -1
  9. package/dist/client/components/Dropdown/Dropdown.d.ts +1 -1
  10. package/dist/client/components/Editor/model/html.d.ts +10 -0
  11. package/dist/client/components/ImageCropper/ImageCropper.d.ts +6 -2
  12. package/dist/client/components/Menu/Menu.d.ts +1 -1
  13. package/dist/client/components/NavMenu/NavMenu.d.ts +1 -1
  14. package/dist/client/components/Popconfirm/Popconfirm.d.ts +1 -1
  15. package/dist/client/components/SlideCanvas/SlideCanvas.d.ts +1 -1
  16. package/dist/client/components/Tour/Tour.d.ts +1 -1
  17. package/dist/client/components/TreeSelect/TreeSelect.d.ts +1 -1
  18. package/dist/client/components/index.js +41 -41
  19. package/dist/client/components/style.css +298 -644
  20. package/dist/client/layout/weifuwu-layout.css +286 -640
  21. package/dist/client/vdom/browser/Browser.d.ts +2 -0
  22. package/dist/client/vdom/commands.d.ts +4 -1
  23. package/dist/client/vdom/context/UIContext.d.ts +8 -0
  24. package/dist/client/vdom/core/diff/attrs.d.ts +10 -2
  25. package/dist/client/vdom/core/field/attributes.d.ts +12 -0
  26. package/dist/client/vdom/core/field/events.d.ts +8 -0
  27. package/dist/client/vdom/core/field/input-sync.d.ts +14 -0
  28. package/dist/client/vdom/core/field/key.d.ts +3 -0
  29. package/dist/client/vdom/core/field/props.d.ts +13 -1
  30. package/dist/client/vdom/core/field/ref.d.ts +6 -0
  31. package/dist/client/vdom/core/field/style.d.ts +7 -1
  32. package/dist/client/vdom/core/node/component.d.ts +3 -4
  33. package/dist/client/vdom/core/node/native.d.ts +6 -1
  34. package/dist/client/vdom/core/patch/index.d.ts +24 -1
  35. package/dist/client/vdom/core/patch/processors.d.ts +8 -1
  36. package/dist/client/vdom/core/protocol.d.ts +45 -0
  37. package/dist/client/vdom/core/router.d.ts +7 -0
  38. package/dist/client/vdom/core/ssr/absorb.d.ts +31 -4
  39. package/dist/client/vdom/core/transform/index.d.ts +6 -6
  40. package/dist/client/vdom/core/v2/cycle.d.ts +54 -0
  41. package/dist/client/vdom/core/v2/diff.d.ts +80 -0
  42. package/dist/client/vdom/core/v2/integrate.d.ts +24 -0
  43. package/dist/client/vdom/core/v2/render.d.ts +28 -0
  44. package/dist/client/vdom/core/v2/schedule.d.ts +33 -0
  45. package/dist/client/vdom/core/v2/serve.d.ts +4 -0
  46. package/dist/client/vdom/core/v2/spy.d.ts +21 -0
  47. package/dist/client/vdom/core/v2/ssr.d.ts +14 -0
  48. package/dist/client/vdom/core/vnode.d.ts +9 -6
  49. package/dist/client/vdom/dev/error-counter.d.ts +27 -0
  50. package/dist/client/vdom/dev/render-health.d.ts +60 -0
  51. package/dist/client/vdom/hooks/chat.d.ts +32 -5
  52. package/dist/client/vdom/hooks/drag-media.d.ts +3 -1
  53. package/dist/client/vdom/hooks/env.d.ts +32 -0
  54. package/dist/client/vdom/hooks/popup-manager.d.ts +21 -0
  55. package/dist/client/vdom/hooks/popup.d.ts +4 -1
  56. package/dist/client/vdom/hooks/stable.d.ts +4 -0
  57. package/dist/client/vdom/hooks/use-observable.d.ts +13 -0
  58. package/dist/client/vdom/index.d.ts +14 -6
  59. package/dist/client/vdom/index.js +4 -7
  60. package/dist/client/vdom/jsx-runtime.js +1 -1
  61. package/dist/client/vdom/middlewares/api.d.ts +8 -0
  62. package/dist/client/vdom/middlewares/auth-i18n.d.ts +7 -0
  63. package/dist/client/vdom/middlewares/ws.d.ts +41 -1
  64. package/dist/client/vdom/observable/index.d.ts +13 -0
  65. package/dist/client/vdom/observable/observable.d.ts +26 -0
  66. package/dist/client/vdom/observable/operators.d.ts +76 -0
  67. package/dist/client/vdom/observable/sources.d.ts +54 -0
  68. package/dist/client/vdom/observable/types.d.ts +45 -0
  69. package/dist/client/vdom/store.d.ts +17 -2
  70. package/dist/client/vdom/testing.js +2 -2
  71. package/dist/server/ai/agent.d.ts +18 -0
  72. package/dist/server/ai/client.d.ts +14 -2
  73. package/dist/server/ai/contracts.d.ts +2 -2
  74. package/dist/server/ai/sse.d.ts +6 -0
  75. package/dist/server/core/collect.d.ts +31 -0
  76. package/dist/server/core/error-counter.d.ts +11 -0
  77. package/dist/server/core/hub.d.ts +2 -0
  78. package/dist/server/core/router.d.ts +12 -9
  79. package/dist/server/db/contracts.d.ts +24 -0
  80. package/dist/server/db/memory-redis.d.ts +3 -4
  81. package/dist/server/db/memory-sql.d.ts +20 -4
  82. package/dist/server/db/postgres-server.d.ts +2 -0
  83. package/dist/server/db/query.d.ts +21 -0
  84. package/dist/server/db/redis-server.d.ts +4 -2
  85. package/dist/server/db/sql-parser.d.ts +2 -1
  86. package/dist/server/email/index.d.ts +2 -0
  87. package/dist/server/index.d.ts +4 -1
  88. package/dist/server/index.js +3927 -1982
  89. package/dist/server/messager/index.d.ts +21 -2
  90. package/dist/server/middleware/compress.d.ts +25 -0
  91. package/dist/server/ui/index.d.ts +8 -1
  92. package/dist/server/user/index.d.ts +4 -0
  93. package/dist/shared/router/chain.d.ts +9 -0
  94. package/dist/shared/router/context.d.ts +35 -0
  95. package/dist/shared/router/ctx-fields.d.ts +20 -0
  96. package/dist/shared/router/pipeline.d.ts +70 -0
  97. package/dist/shared/router/trie.d.ts +11 -3
  98. package/dist/shared/router/types.d.ts +23 -0
  99. package/docs/style-guide.md +44 -41
  100. package/package.json +13 -10
  101. package/content/apps/admin.md +0 -55
  102. package/content/apps/agent-platform.md +0 -35
  103. package/content/apps/auth.md +0 -49
  104. package/content/apps/multi.md +0 -44
  105. package/content/apps/todo.md +0 -51
  106. package/content/backend/ai.md +0 -28
  107. package/content/backend/auth.md +0 -20
  108. package/content/backend/email.md +0 -23
  109. package/content/backend/graphql.md +0 -23
  110. package/content/backend/http.md +0 -23
  111. package/content/backend/limit.md +0 -23
  112. package/content/backend/middleware.md +0 -17
  113. package/content/backend/queue.md +0 -23
  114. package/content/backend/redis.md +0 -26
  115. package/content/backend/router.md +0 -23
  116. package/content/backend/schedule.md +0 -23
  117. package/content/backend/sql.md +0 -27
  118. package/content/backend/sse.md +0 -26
  119. package/content/backend/ws.md +0 -26
  120. package/content/capabilities/app-node.md +0 -21
  121. package/content/capabilities/data.md +0 -21
  122. package/content/capabilities/events.md +0 -21
  123. package/content/capabilities/hooks.md +0 -22
  124. package/content/capabilities/i18n.md +0 -21
  125. package/content/capabilities/popup.md +0 -21
  126. package/content/capabilities/render-only.md +0 -23
  127. package/content/capabilities/router.md +0 -22
  128. package/content/capabilities/self-id.md +0 -21
  129. package/content/capabilities/store.md +0 -21
  130. package/content/capabilities/theme.md +0 -21
  131. package/content/capabilities/two-phase.md +0 -21
  132. package/content/components/accordion.md +0 -50
  133. package/content/components/actionsheet.md +0 -46
  134. package/content/components/affix.md +0 -51
  135. package/content/components/aichat.md +0 -57
  136. package/content/components/alert.md +0 -52
  137. package/content/components/alertgroup.md +0 -45
  138. package/content/components/anchor.md +0 -52
  139. package/content/components/app.md +0 -37
  140. package/content/components/approvalcard.md +0 -56
  141. package/content/components/appshell.md +0 -50
  142. package/content/components/aspectratio.md +0 -47
  143. package/content/components/authpage.md +0 -61
  144. package/content/components/autocomplete-v2.md +0 -40
  145. package/content/components/autocomplete.md +0 -56
  146. package/content/components/avatar.md +0 -51
  147. package/content/components/avatargroup.md +0 -47
  148. package/content/components/backtop.md +0 -53
  149. package/content/components/badge.md +0 -55
  150. package/content/components/breadcrumb.md +0 -49
  151. package/content/components/button.md +0 -63
  152. package/content/components/calendar-v2.md +0 -40
  153. package/content/components/calendar.md +0 -50
  154. package/content/components/card.md +0 -58
  155. package/content/components/carousel.md +0 -52
  156. package/content/components/cascader-v2.md +0 -39
  157. package/content/components/cascader.md +0 -54
  158. package/content/components/chart.md +0 -53
  159. package/content/components/chatinput.md +0 -63
  160. package/content/components/checkbox.md +0 -51
  161. package/content/components/checkboxgroup.md +0 -52
  162. package/content/components/citationcard.md +0 -48
  163. package/content/components/codeblock.md +0 -48
  164. package/content/components/codeeditor.md +0 -47
  165. package/content/components/collapse.md +0 -49
  166. package/content/components/colorpicker.md +0 -50
  167. package/content/components/command.md +0 -50
  168. package/content/components/confirm.md +0 -57
  169. package/content/components/contextmenu.md +0 -48
  170. package/content/components/copybutton.md +0 -51
  171. package/content/components/datepicker.md +0 -52
  172. package/content/components/descriptions-v2.md +0 -39
  173. package/content/components/descriptions.md +0 -52
  174. package/content/components/diffview-v2.md +0 -39
  175. package/content/components/diffview.md +0 -50
  176. package/content/components/divider.md +0 -48
  177. package/content/components/drawer.md +0 -55
  178. package/content/components/dropdown.md +0 -53
  179. package/content/components/editor.md +0 -49
  180. package/content/components/emptystate.md +0 -51
  181. package/content/components/exportcsv.md +0 -38
  182. package/content/components/field.md +0 -54
  183. package/content/components/filepreview-office.md +0 -37
  184. package/content/components/filepreview.md +0 -49
  185. package/content/components/filetree.md +0 -56
  186. package/content/components/fileupload-v2.md +0 -39
  187. package/content/components/fileupload.md +0 -57
  188. package/content/components/floatbutton.md +0 -52
  189. package/content/components/form-v2.md +0 -41
  190. package/content/components/form.md +0 -60
  191. package/content/components/grid.md +0 -51
  192. package/content/components/highlight-v2.md +0 -39
  193. package/content/components/highlight.md +0 -46
  194. package/content/components/hovercard.md +0 -51
  195. package/content/components/icon.md +0 -50
  196. package/content/components/imagecropper.md +0 -45
  197. package/content/components/img.md +0 -56
  198. package/content/components/infinitescroll-v2.md +0 -40
  199. package/content/components/infinitescroll.md +0 -54
  200. package/content/components/input.md +0 -65
  201. package/content/components/inputnumber.md +0 -58
  202. package/content/components/inview.md +0 -56
  203. package/content/components/jsonschemaform.md +0 -53
  204. package/content/components/jsonviewer-v2.md +0 -39
  205. package/content/components/jsonviewer.md +0 -49
  206. package/content/components/kanban.md +0 -46
  207. package/content/components/label.md +0 -48
  208. package/content/components/layout.md +0 -54
  209. package/content/components/layoutcontent.md +0 -43
  210. package/content/components/layoutheader.md +0 -43
  211. package/content/components/layoutsider.md +0 -43
  212. package/content/components/link.md +0 -52
  213. package/content/components/list.md +0 -44
  214. package/content/components/loading.md +0 -45
  215. package/content/components/logviewer-v2.md +0 -39
  216. package/content/components/logviewer.md +0 -53
  217. package/content/components/markdown.md +0 -51
  218. package/content/components/markdowneditor.md +0 -47
  219. package/content/components/math.md +0 -42
  220. package/content/components/mentions-v2.md +0 -39
  221. package/content/components/mentions.md +0 -52
  222. package/content/components/menu.md +0 -56
  223. package/content/components/menubar.md +0 -44
  224. package/content/components/messagebubble.md +0 -50
  225. package/content/components/modal.md +0 -59
  226. package/content/components/navmenu.md +0 -47
  227. package/content/components/notification.md +0 -51
  228. package/content/components/pageheader.md +0 -53
  229. package/content/components/pagination.md +0 -49
  230. package/content/components/paragraph.md +0 -45
  231. package/content/components/passwordinput.md +0 -57
  232. package/content/components/pininput-v2.md +0 -39
  233. package/content/components/pininput.md +0 -50
  234. package/content/components/pipeline.md +0 -49
  235. package/content/components/popconfirm.md +0 -58
  236. package/content/components/popover.md +0 -61
  237. package/content/components/progressbar.md +0 -50
  238. package/content/components/prompttemplate.md +0 -49
  239. package/content/components/qrcode.md +0 -50
  240. package/content/components/radiogroup.md +0 -53
  241. package/content/components/rate.md +0 -53
  242. package/content/components/reasoningblock.md +0 -47
  243. package/content/components/relationgraph.md +0 -52
  244. package/content/components/resizable.md +0 -53
  245. package/content/components/result.md +0 -49
  246. package/content/components/scrollbar.md +0 -49
  247. package/content/components/searchinput.md +0 -51
  248. package/content/components/segmentedcontrol.md +0 -59
  249. package/content/components/select-searchable.md +0 -47
  250. package/content/components/select.md +0 -66
  251. package/content/components/sessionlist.md +0 -52
  252. package/content/components/sheetgrid.md +0 -44
  253. package/content/components/skeleton.md +0 -55
  254. package/content/components/slidecanvas.md +0 -44
  255. package/content/components/slider.md +0 -62
  256. package/content/components/sortablelist.md +0 -39
  257. package/content/components/space.md +0 -52
  258. package/content/components/sparkline.md +0 -52
  259. package/content/components/statcard-countdown.md +0 -39
  260. package/content/components/statcard.md +0 -56
  261. package/content/components/steps.md +0 -48
  262. package/content/components/switch.md +0 -50
  263. package/content/components/tabbar.md +0 -45
  264. package/content/components/table-v2.md +0 -40
  265. package/content/components/table.md +0 -66
  266. package/content/components/tabs.md +0 -56
  267. package/content/components/tag.md +0 -51
  268. package/content/components/tagsinput-v2.md +0 -39
  269. package/content/components/tagsinput.md +0 -54
  270. package/content/components/text.md +0 -45
  271. package/content/components/textarea.md +0 -57
  272. package/content/components/themeswitch.md +0 -69
  273. package/content/components/timeline.md +0 -50
  274. package/content/components/title.md +0 -45
  275. package/content/components/toast.md +0 -52
  276. package/content/components/toggle-togglegroup.md +0 -52
  277. package/content/components/togglegroup.md +0 -47
  278. package/content/components/toolcallcard.md +0 -51
  279. package/content/components/tooltip.md +0 -50
  280. package/content/components/tour.md +0 -50
  281. package/content/components/transfer.md +0 -52
  282. package/content/components/tree-v2.md +0 -39
  283. package/content/components/tree.md +0 -59
  284. package/content/components/treeselect.md +0 -54
  285. package/content/components/typography.md +0 -51
  286. package/content/components/videoplayer.md +0 -52
  287. package/content/components/virtuallist.md +0 -52
  288. package/content/components/virtualtable-v2.md +0 -39
  289. package/content/components/virtualtable.md +0 -55
  290. package/content/components/watermark.md +0 -53
  291. package/content/components/wave.md +0 -43
  292. package/content/guides/ai-chat-family.md +0 -24
  293. package/content/guides/choose.md +0 -67
  294. package/content/guides/component-model.md +0 -32
  295. package/content/guides/component-standards.md +0 -123
  296. package/content/guides/components-guide.md +0 -813
  297. package/content/guides/custom-component.md +0 -321
  298. package/content/guides/data-guide.md +0 -281
  299. package/content/guides/file-preview-family.md +0 -18
  300. package/content/guides/frontend.md +0 -968
  301. package/content/guides/layout-choice.md +0 -64
  302. package/content/guides/layout-guide.md +0 -241
  303. package/content/guides/middleware.md +0 -459
  304. package/content/guides/mobile-guide.md +0 -105
  305. package/content/guides/page-building.md +0 -98
  306. package/content/guides/production.md +0 -37
  307. package/content/guides/quality.md +0 -60
  308. package/content/guides/realtime-guide.md +0 -296
  309. package/content/guides/render-only.md +0 -44
  310. package/content/guides/saas-guide.md +0 -253
  311. package/content/guides/server-guide.md +0 -359
  312. package/content/guides/start.md +0 -41
  313. package/content/guides/styling.md +0 -154
  314. package/content/guides/ui-dom-guide.md +0 -157
  315. package/content/index.json +0 -4344
  316. package/content/index.md +0 -181
  317. package/content/layout/align.md +0 -20
  318. package/content/layout/anchor.md +0 -19
  319. package/content/layout/app-shell.md +0 -23
  320. package/content/layout/border.md +0 -20
  321. package/content/layout/center.md +0 -19
  322. package/content/layout/cluster.md +0 -19
  323. package/content/layout/container.md +0 -19
  324. package/content/layout/fill.md +0 -19
  325. package/content/layout/grid.md +0 -19
  326. package/content/layout/hidden.md +0 -22
  327. package/content/layout/layer.md +0 -19
  328. package/content/layout/position.md +0 -22
  329. package/content/layout/row.md +0 -23
  330. package/content/layout/safe-area.md +0 -20
  331. package/content/layout/scroll.md +0 -21
  332. package/content/layout/spacing.md +0 -22
  333. package/content/layout/split.md +0 -19
  334. package/content/layout/stack.md +0 -19
  335. package/content/layout/surface.md +0 -23
  336. package/content/layout/text.md +0 -22
  337. package/content/patterns/app-shell.md +0 -34
  338. package/content/patterns/dashboard.md +0 -36
  339. package/content/patterns/data-screen.md +0 -30
  340. package/content/patterns/detail-page.md +0 -31
  341. package/content/patterns/docs.md +0 -34
  342. package/content/patterns/focus-task.md +0 -34
  343. package/content/patterns/landing.md +0 -35
  344. package/content/patterns/list-page.md +0 -32
  345. package/content/patterns/mobile.md +0 -31
  346. package/content/patterns/settings-page.md +0 -33
  347. package/content/patterns/workspace.md +0 -32
  348. package/dist/cli/content-sync.test.d.ts +0 -1
  349. package/dist/cli/docs-cli.test.d.ts +0 -1
  350. package/dist/cli/docs.d.ts +0 -2
  351. package/dist/cli/docs.mjs +0 -10961
  352. package/dist/client/vdom/core/build.d.ts +0 -36
  353. package/dist/client/vdom/core/diff/children.d.ts +0 -29
  354. package/dist/client/vdom/core/diff/index.d.ts +0 -22
  355. package/dist/client/vdom/core/diff/output.d.ts +0 -30
  356. package/dist/client/vdom/core/diff/same.d.ts +0 -22
  357. package/dist/client/vdom/core/serve.d.ts +0 -75
  358. package/dist/client/vdom/core/ssr/index.d.ts +0 -25
  359. package/examples/apps/admin/README.md +0 -23
  360. package/examples/apps/admin/api.ts +0 -27
  361. package/examples/apps/admin/app.tsx +0 -144
  362. package/examples/apps/admin/main.tsx +0 -8
  363. package/examples/apps/admin/server.ts +0 -37
  364. package/examples/apps/auth/README.md +0 -23
  365. package/examples/apps/auth/api.ts +0 -49
  366. package/examples/apps/auth/app.tsx +0 -137
  367. package/examples/apps/auth/main.tsx +0 -8
  368. package/examples/apps/auth/server.ts +0 -37
  369. package/examples/apps/multi/README.md +0 -23
  370. package/examples/apps/multi/app.tsx +0 -83
  371. package/examples/apps/multi/main.tsx +0 -8
  372. package/examples/apps/multi/server.ts +0 -33
  373. package/examples/apps/todo/README.md +0 -23
  374. package/examples/apps/todo/api.ts +0 -26
  375. package/examples/apps/todo/app.tsx +0 -128
  376. package/examples/apps/todo/main.tsx +0 -9
  377. package/examples/apps/todo/server.ts +0 -39
  378. package/examples/hello-world/README.md +0 -9
  379. package/examples/hello-world/client.ts +0 -14
  380. package/examples/hello-world/routes.tsx +0 -26
  381. package/examples/hello-world/server.ts +0 -46
  382. package/examples/patterns/AppShell.tsx +0 -224
  383. package/examples/patterns/Dashboard.tsx +0 -153
  384. package/examples/patterns/DataScreen.tsx +0 -104
  385. package/examples/patterns/DetailPage.tsx +0 -79
  386. package/examples/patterns/Docs.tsx +0 -105
  387. package/examples/patterns/FocusTask.tsx +0 -67
  388. package/examples/patterns/Landing.tsx +0 -90
  389. package/examples/patterns/ListPage.tsx +0 -77
  390. package/examples/patterns/Mobile.tsx +0 -154
  391. package/examples/patterns/SettingsPage.tsx +0 -98
  392. package/examples/patterns/SplitWorkspace.tsx +0 -113
@@ -1,4344 +0,0 @@
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
- }