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.
- package/README.md +111 -135
- package/dist/client/components/ActionSheet/ActionSheet.d.ts +1 -1
- package/dist/client/components/AiChat/AiChat.d.ts +3 -4
- package/dist/client/components/ChatInput/ChatInput.d.ts +5 -0
- package/dist/client/components/CitationCard/CitationCard.d.ts +1 -1
- package/dist/client/components/Command/Command.d.ts +1 -1
- package/dist/client/components/ContextMenu/ContextMenu.d.ts +1 -1
- package/dist/client/components/DatePicker/DatePicker.d.ts +1 -1
- package/dist/client/components/Dropdown/Dropdown.d.ts +1 -1
- package/dist/client/components/Editor/model/html.d.ts +10 -0
- package/dist/client/components/ImageCropper/ImageCropper.d.ts +6 -2
- package/dist/client/components/Menu/Menu.d.ts +1 -1
- package/dist/client/components/NavMenu/NavMenu.d.ts +1 -1
- package/dist/client/components/Popconfirm/Popconfirm.d.ts +1 -1
- package/dist/client/components/SlideCanvas/SlideCanvas.d.ts +1 -1
- package/dist/client/components/Tour/Tour.d.ts +1 -1
- package/dist/client/components/TreeSelect/TreeSelect.d.ts +1 -1
- package/dist/client/components/index.js +41 -41
- package/dist/client/components/style.css +298 -644
- package/dist/client/layout/weifuwu-layout.css +286 -640
- package/dist/client/vdom/browser/Browser.d.ts +2 -0
- package/dist/client/vdom/commands.d.ts +4 -1
- package/dist/client/vdom/context/UIContext.d.ts +8 -0
- package/dist/client/vdom/core/diff/attrs.d.ts +10 -2
- package/dist/client/vdom/core/field/attributes.d.ts +12 -0
- package/dist/client/vdom/core/field/events.d.ts +8 -0
- package/dist/client/vdom/core/field/input-sync.d.ts +14 -0
- package/dist/client/vdom/core/field/key.d.ts +3 -0
- package/dist/client/vdom/core/field/props.d.ts +13 -1
- package/dist/client/vdom/core/field/ref.d.ts +6 -0
- package/dist/client/vdom/core/field/style.d.ts +7 -1
- package/dist/client/vdom/core/node/component.d.ts +3 -4
- package/dist/client/vdom/core/node/native.d.ts +6 -1
- package/dist/client/vdom/core/patch/index.d.ts +24 -1
- package/dist/client/vdom/core/patch/processors.d.ts +8 -1
- package/dist/client/vdom/core/protocol.d.ts +45 -0
- package/dist/client/vdom/core/router.d.ts +7 -0
- package/dist/client/vdom/core/ssr/absorb.d.ts +31 -4
- package/dist/client/vdom/core/transform/index.d.ts +6 -6
- package/dist/client/vdom/core/v2/cycle.d.ts +54 -0
- package/dist/client/vdom/core/v2/diff.d.ts +80 -0
- package/dist/client/vdom/core/v2/integrate.d.ts +24 -0
- package/dist/client/vdom/core/v2/render.d.ts +28 -0
- package/dist/client/vdom/core/v2/schedule.d.ts +33 -0
- package/dist/client/vdom/core/v2/serve.d.ts +4 -0
- package/dist/client/vdom/core/v2/spy.d.ts +21 -0
- package/dist/client/vdom/core/v2/ssr.d.ts +14 -0
- package/dist/client/vdom/core/vnode.d.ts +9 -6
- package/dist/client/vdom/dev/error-counter.d.ts +27 -0
- package/dist/client/vdom/dev/render-health.d.ts +60 -0
- package/dist/client/vdom/hooks/chat.d.ts +32 -5
- package/dist/client/vdom/hooks/drag-media.d.ts +3 -1
- package/dist/client/vdom/hooks/env.d.ts +32 -0
- package/dist/client/vdom/hooks/popup-manager.d.ts +21 -0
- package/dist/client/vdom/hooks/popup.d.ts +4 -1
- package/dist/client/vdom/hooks/stable.d.ts +4 -0
- package/dist/client/vdom/hooks/use-observable.d.ts +13 -0
- package/dist/client/vdom/index.d.ts +14 -6
- package/dist/client/vdom/index.js +4 -7
- package/dist/client/vdom/jsx-runtime.js +1 -1
- package/dist/client/vdom/middlewares/api.d.ts +8 -0
- package/dist/client/vdom/middlewares/auth-i18n.d.ts +7 -0
- package/dist/client/vdom/middlewares/ws.d.ts +41 -1
- package/dist/client/vdom/observable/index.d.ts +13 -0
- package/dist/client/vdom/observable/observable.d.ts +26 -0
- package/dist/client/vdom/observable/operators.d.ts +76 -0
- package/dist/client/vdom/observable/sources.d.ts +54 -0
- package/dist/client/vdom/observable/types.d.ts +45 -0
- package/dist/client/vdom/store.d.ts +17 -2
- package/dist/client/vdom/testing.js +2 -2
- package/dist/server/ai/agent.d.ts +18 -0
- package/dist/server/ai/client.d.ts +14 -2
- package/dist/server/ai/contracts.d.ts +2 -2
- package/dist/server/ai/sse.d.ts +6 -0
- package/dist/server/core/collect.d.ts +31 -0
- package/dist/server/core/error-counter.d.ts +11 -0
- package/dist/server/core/hub.d.ts +2 -0
- package/dist/server/core/router.d.ts +12 -9
- package/dist/server/db/contracts.d.ts +24 -0
- package/dist/server/db/memory-redis.d.ts +3 -4
- package/dist/server/db/memory-sql.d.ts +20 -4
- package/dist/server/db/postgres-server.d.ts +2 -0
- package/dist/server/db/query.d.ts +21 -0
- package/dist/server/db/redis-server.d.ts +4 -2
- package/dist/server/db/sql-parser.d.ts +2 -1
- package/dist/server/email/index.d.ts +2 -0
- package/dist/server/index.d.ts +4 -1
- package/dist/server/index.js +3927 -1982
- package/dist/server/messager/index.d.ts +21 -2
- package/dist/server/middleware/compress.d.ts +25 -0
- package/dist/server/ui/index.d.ts +8 -1
- package/dist/server/user/index.d.ts +4 -0
- package/dist/shared/router/chain.d.ts +9 -0
- package/dist/shared/router/context.d.ts +35 -0
- package/dist/shared/router/ctx-fields.d.ts +20 -0
- package/dist/shared/router/pipeline.d.ts +70 -0
- package/dist/shared/router/trie.d.ts +11 -3
- package/dist/shared/router/types.d.ts +23 -0
- package/docs/style-guide.md +44 -41
- package/package.json +13 -10
- package/content/apps/admin.md +0 -55
- package/content/apps/agent-platform.md +0 -35
- package/content/apps/auth.md +0 -49
- package/content/apps/multi.md +0 -44
- package/content/apps/todo.md +0 -51
- package/content/backend/ai.md +0 -28
- package/content/backend/auth.md +0 -20
- package/content/backend/email.md +0 -23
- package/content/backend/graphql.md +0 -23
- package/content/backend/http.md +0 -23
- package/content/backend/limit.md +0 -23
- package/content/backend/middleware.md +0 -17
- package/content/backend/queue.md +0 -23
- package/content/backend/redis.md +0 -26
- package/content/backend/router.md +0 -23
- package/content/backend/schedule.md +0 -23
- package/content/backend/sql.md +0 -27
- package/content/backend/sse.md +0 -26
- package/content/backend/ws.md +0 -26
- package/content/capabilities/app-node.md +0 -21
- package/content/capabilities/data.md +0 -21
- package/content/capabilities/events.md +0 -21
- package/content/capabilities/hooks.md +0 -22
- package/content/capabilities/i18n.md +0 -21
- package/content/capabilities/popup.md +0 -21
- package/content/capabilities/render-only.md +0 -23
- package/content/capabilities/router.md +0 -22
- package/content/capabilities/self-id.md +0 -21
- package/content/capabilities/store.md +0 -21
- package/content/capabilities/theme.md +0 -21
- package/content/capabilities/two-phase.md +0 -21
- package/content/components/accordion.md +0 -50
- package/content/components/actionsheet.md +0 -46
- package/content/components/affix.md +0 -51
- package/content/components/aichat.md +0 -57
- package/content/components/alert.md +0 -52
- package/content/components/alertgroup.md +0 -45
- package/content/components/anchor.md +0 -52
- package/content/components/app.md +0 -37
- package/content/components/approvalcard.md +0 -56
- package/content/components/appshell.md +0 -50
- package/content/components/aspectratio.md +0 -47
- package/content/components/authpage.md +0 -61
- package/content/components/autocomplete-v2.md +0 -40
- package/content/components/autocomplete.md +0 -56
- package/content/components/avatar.md +0 -51
- package/content/components/avatargroup.md +0 -47
- package/content/components/backtop.md +0 -53
- package/content/components/badge.md +0 -55
- package/content/components/breadcrumb.md +0 -49
- package/content/components/button.md +0 -63
- package/content/components/calendar-v2.md +0 -40
- package/content/components/calendar.md +0 -50
- package/content/components/card.md +0 -58
- package/content/components/carousel.md +0 -52
- package/content/components/cascader-v2.md +0 -39
- package/content/components/cascader.md +0 -54
- package/content/components/chart.md +0 -53
- package/content/components/chatinput.md +0 -63
- package/content/components/checkbox.md +0 -51
- package/content/components/checkboxgroup.md +0 -52
- package/content/components/citationcard.md +0 -48
- package/content/components/codeblock.md +0 -48
- package/content/components/codeeditor.md +0 -47
- package/content/components/collapse.md +0 -49
- package/content/components/colorpicker.md +0 -50
- package/content/components/command.md +0 -50
- package/content/components/confirm.md +0 -57
- package/content/components/contextmenu.md +0 -48
- package/content/components/copybutton.md +0 -51
- package/content/components/datepicker.md +0 -52
- package/content/components/descriptions-v2.md +0 -39
- package/content/components/descriptions.md +0 -52
- package/content/components/diffview-v2.md +0 -39
- package/content/components/diffview.md +0 -50
- package/content/components/divider.md +0 -48
- package/content/components/drawer.md +0 -55
- package/content/components/dropdown.md +0 -53
- package/content/components/editor.md +0 -49
- package/content/components/emptystate.md +0 -51
- package/content/components/exportcsv.md +0 -38
- package/content/components/field.md +0 -54
- package/content/components/filepreview-office.md +0 -37
- package/content/components/filepreview.md +0 -49
- package/content/components/filetree.md +0 -56
- package/content/components/fileupload-v2.md +0 -39
- package/content/components/fileupload.md +0 -57
- package/content/components/floatbutton.md +0 -52
- package/content/components/form-v2.md +0 -41
- package/content/components/form.md +0 -60
- package/content/components/grid.md +0 -51
- package/content/components/highlight-v2.md +0 -39
- package/content/components/highlight.md +0 -46
- package/content/components/hovercard.md +0 -51
- package/content/components/icon.md +0 -50
- package/content/components/imagecropper.md +0 -45
- package/content/components/img.md +0 -56
- package/content/components/infinitescroll-v2.md +0 -40
- package/content/components/infinitescroll.md +0 -54
- package/content/components/input.md +0 -65
- package/content/components/inputnumber.md +0 -58
- package/content/components/inview.md +0 -56
- package/content/components/jsonschemaform.md +0 -53
- package/content/components/jsonviewer-v2.md +0 -39
- package/content/components/jsonviewer.md +0 -49
- package/content/components/kanban.md +0 -46
- package/content/components/label.md +0 -48
- package/content/components/layout.md +0 -54
- package/content/components/layoutcontent.md +0 -43
- package/content/components/layoutheader.md +0 -43
- package/content/components/layoutsider.md +0 -43
- package/content/components/link.md +0 -52
- package/content/components/list.md +0 -44
- package/content/components/loading.md +0 -45
- package/content/components/logviewer-v2.md +0 -39
- package/content/components/logviewer.md +0 -53
- package/content/components/markdown.md +0 -51
- package/content/components/markdowneditor.md +0 -47
- package/content/components/math.md +0 -42
- package/content/components/mentions-v2.md +0 -39
- package/content/components/mentions.md +0 -52
- package/content/components/menu.md +0 -56
- package/content/components/menubar.md +0 -44
- package/content/components/messagebubble.md +0 -50
- package/content/components/modal.md +0 -59
- package/content/components/navmenu.md +0 -47
- package/content/components/notification.md +0 -51
- package/content/components/pageheader.md +0 -53
- package/content/components/pagination.md +0 -49
- package/content/components/paragraph.md +0 -45
- package/content/components/passwordinput.md +0 -57
- package/content/components/pininput-v2.md +0 -39
- package/content/components/pininput.md +0 -50
- package/content/components/pipeline.md +0 -49
- package/content/components/popconfirm.md +0 -58
- package/content/components/popover.md +0 -61
- package/content/components/progressbar.md +0 -50
- package/content/components/prompttemplate.md +0 -49
- package/content/components/qrcode.md +0 -50
- package/content/components/radiogroup.md +0 -53
- package/content/components/rate.md +0 -53
- package/content/components/reasoningblock.md +0 -47
- package/content/components/relationgraph.md +0 -52
- package/content/components/resizable.md +0 -53
- package/content/components/result.md +0 -49
- package/content/components/scrollbar.md +0 -49
- package/content/components/searchinput.md +0 -51
- package/content/components/segmentedcontrol.md +0 -59
- package/content/components/select-searchable.md +0 -47
- package/content/components/select.md +0 -66
- package/content/components/sessionlist.md +0 -52
- package/content/components/sheetgrid.md +0 -44
- package/content/components/skeleton.md +0 -55
- package/content/components/slidecanvas.md +0 -44
- package/content/components/slider.md +0 -62
- package/content/components/sortablelist.md +0 -39
- package/content/components/space.md +0 -52
- package/content/components/sparkline.md +0 -52
- package/content/components/statcard-countdown.md +0 -39
- package/content/components/statcard.md +0 -56
- package/content/components/steps.md +0 -48
- package/content/components/switch.md +0 -50
- package/content/components/tabbar.md +0 -45
- package/content/components/table-v2.md +0 -40
- package/content/components/table.md +0 -66
- package/content/components/tabs.md +0 -56
- package/content/components/tag.md +0 -51
- package/content/components/tagsinput-v2.md +0 -39
- package/content/components/tagsinput.md +0 -54
- package/content/components/text.md +0 -45
- package/content/components/textarea.md +0 -57
- package/content/components/themeswitch.md +0 -69
- package/content/components/timeline.md +0 -50
- package/content/components/title.md +0 -45
- package/content/components/toast.md +0 -52
- package/content/components/toggle-togglegroup.md +0 -52
- package/content/components/togglegroup.md +0 -47
- package/content/components/toolcallcard.md +0 -51
- package/content/components/tooltip.md +0 -50
- package/content/components/tour.md +0 -50
- package/content/components/transfer.md +0 -52
- package/content/components/tree-v2.md +0 -39
- package/content/components/tree.md +0 -59
- package/content/components/treeselect.md +0 -54
- package/content/components/typography.md +0 -51
- package/content/components/videoplayer.md +0 -52
- package/content/components/virtuallist.md +0 -52
- package/content/components/virtualtable-v2.md +0 -39
- package/content/components/virtualtable.md +0 -55
- package/content/components/watermark.md +0 -53
- package/content/components/wave.md +0 -43
- package/content/guides/ai-chat-family.md +0 -24
- package/content/guides/choose.md +0 -67
- package/content/guides/component-model.md +0 -32
- package/content/guides/component-standards.md +0 -123
- package/content/guides/components-guide.md +0 -813
- package/content/guides/custom-component.md +0 -321
- package/content/guides/data-guide.md +0 -281
- package/content/guides/file-preview-family.md +0 -18
- package/content/guides/frontend.md +0 -968
- package/content/guides/layout-choice.md +0 -64
- package/content/guides/layout-guide.md +0 -241
- package/content/guides/middleware.md +0 -459
- package/content/guides/mobile-guide.md +0 -105
- package/content/guides/page-building.md +0 -98
- package/content/guides/production.md +0 -37
- package/content/guides/quality.md +0 -60
- package/content/guides/realtime-guide.md +0 -296
- package/content/guides/render-only.md +0 -44
- package/content/guides/saas-guide.md +0 -253
- package/content/guides/server-guide.md +0 -359
- package/content/guides/start.md +0 -41
- package/content/guides/styling.md +0 -154
- package/content/guides/ui-dom-guide.md +0 -157
- package/content/index.json +0 -4344
- package/content/index.md +0 -181
- package/content/layout/align.md +0 -20
- package/content/layout/anchor.md +0 -19
- package/content/layout/app-shell.md +0 -23
- package/content/layout/border.md +0 -20
- package/content/layout/center.md +0 -19
- package/content/layout/cluster.md +0 -19
- package/content/layout/container.md +0 -19
- package/content/layout/fill.md +0 -19
- package/content/layout/grid.md +0 -19
- package/content/layout/hidden.md +0 -22
- package/content/layout/layer.md +0 -19
- package/content/layout/position.md +0 -22
- package/content/layout/row.md +0 -23
- package/content/layout/safe-area.md +0 -20
- package/content/layout/scroll.md +0 -21
- package/content/layout/spacing.md +0 -22
- package/content/layout/split.md +0 -19
- package/content/layout/stack.md +0 -19
- package/content/layout/surface.md +0 -23
- package/content/layout/text.md +0 -22
- package/content/patterns/app-shell.md +0 -34
- package/content/patterns/dashboard.md +0 -36
- package/content/patterns/data-screen.md +0 -30
- package/content/patterns/detail-page.md +0 -31
- package/content/patterns/docs.md +0 -34
- package/content/patterns/focus-task.md +0 -34
- package/content/patterns/landing.md +0 -35
- package/content/patterns/list-page.md +0 -32
- package/content/patterns/mobile.md +0 -31
- package/content/patterns/settings-page.md +0 -33
- package/content/patterns/workspace.md +0 -32
- package/dist/cli/content-sync.test.d.ts +0 -1
- package/dist/cli/docs-cli.test.d.ts +0 -1
- package/dist/cli/docs.d.ts +0 -2
- package/dist/cli/docs.mjs +0 -10961
- package/dist/client/vdom/core/build.d.ts +0 -36
- package/dist/client/vdom/core/diff/children.d.ts +0 -29
- package/dist/client/vdom/core/diff/index.d.ts +0 -22
- package/dist/client/vdom/core/diff/output.d.ts +0 -30
- package/dist/client/vdom/core/diff/same.d.ts +0 -22
- package/dist/client/vdom/core/serve.d.ts +0 -75
- package/dist/client/vdom/core/ssr/index.d.ts +0 -25
- package/examples/apps/admin/README.md +0 -23
- package/examples/apps/admin/api.ts +0 -27
- package/examples/apps/admin/app.tsx +0 -144
- package/examples/apps/admin/main.tsx +0 -8
- package/examples/apps/admin/server.ts +0 -37
- package/examples/apps/auth/README.md +0 -23
- package/examples/apps/auth/api.ts +0 -49
- package/examples/apps/auth/app.tsx +0 -137
- package/examples/apps/auth/main.tsx +0 -8
- package/examples/apps/auth/server.ts +0 -37
- package/examples/apps/multi/README.md +0 -23
- package/examples/apps/multi/app.tsx +0 -83
- package/examples/apps/multi/main.tsx +0 -8
- package/examples/apps/multi/server.ts +0 -33
- package/examples/apps/todo/README.md +0 -23
- package/examples/apps/todo/api.ts +0 -26
- package/examples/apps/todo/app.tsx +0 -128
- package/examples/apps/todo/main.tsx +0 -9
- package/examples/apps/todo/server.ts +0 -39
- package/examples/hello-world/README.md +0 -9
- package/examples/hello-world/client.ts +0 -14
- package/examples/hello-world/routes.tsx +0 -26
- package/examples/hello-world/server.ts +0 -46
- package/examples/patterns/AppShell.tsx +0 -224
- package/examples/patterns/Dashboard.tsx +0 -153
- package/examples/patterns/DataScreen.tsx +0 -104
- package/examples/patterns/DetailPage.tsx +0 -79
- package/examples/patterns/Docs.tsx +0 -105
- package/examples/patterns/FocusTask.tsx +0 -67
- package/examples/patterns/Landing.tsx +0 -90
- package/examples/patterns/ListPage.tsx +0 -77
- package/examples/patterns/Mobile.tsx +0 -154
- package/examples/patterns/SettingsPage.tsx +0 -98
- package/examples/patterns/SplitWorkspace.tsx +0 -113
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# Wave · components
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
点击水波纹动效——包装任意可点击元素(纯 CSS,reduced-motion 自动降级)
|
|
6
|
-
|
|
7
|
-
## 典型场景
|
|
8
|
-
|
|
9
|
-
- 基础元素(按钮/图标/文本/卡片/标签)——任意页面的构成单元
|
|
10
|
-
|
|
11
|
-
## API
|
|
12
|
-
|
|
13
|
-
| prop | 类型 | 必填 | 说明 |
|
|
14
|
-
|------|------|------|------|
|
|
15
|
-
| `children` | `any` | 否 | |
|
|
16
|
-
| `className` | `string` | 否 | |
|
|
17
|
-
| `color` | `string` | 否 | 波纹颜色(默认 currentColor 12% 透明) |
|
|
18
|
-
|
|
19
|
-
## 用法示例
|
|
20
|
-
|
|
21
|
-
> (P1 迁移 CODE 字符串)
|
|
22
|
-
|
|
23
|
-
## 纪律/坑
|
|
24
|
-
|
|
25
|
-
> 浏览器纪律(§5.5):组件能力经 ctx.browser / ctx.ui.useXXX——禁裸 window/document
|
|
26
|
-
|
|
27
|
-
## 关系
|
|
28
|
-
|
|
29
|
-
- ↑ 用于页面模式:(暂无)
|
|
30
|
-
- ↑ 用于应用:(暂无)
|
|
31
|
-
- → 后端能力:(暂无)
|
|
32
|
-
|
|
33
|
-
## 文件位置
|
|
34
|
-
|
|
35
|
-
| 文件 | 路径 |
|
|
36
|
-
|------|------|
|
|
37
|
-
| 源码 | `src/client/components/Wave/Wave.ts` |
|
|
38
|
-
| 样式 | `src/client/components/Wave/Wave.css` |
|
|
39
|
-
| 测试 | `src/client/components/Wave/Wave.test.ts` |
|
|
40
|
-
|
|
41
|
-
## 验证
|
|
42
|
-
|
|
43
|
-
> agent-browser 走查:打开 `/components/core/wave` ——(P1 填充具体步骤)
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# AI 会话家族 · components
|
|
2
|
-
|
|
3
|
-
> AI 会话场景组件族(07 命名治理:**不合并**——每个组件独立深度使用,统一归 ai 分类)。
|
|
4
|
-
> 组合方式:`useChat()` handle 是粘合剂——会话状态 + 流式事件。
|
|
5
|
-
|
|
6
|
-
| 组件 | 职责 | 组合 |
|
|
7
|
-
|------|------|------|
|
|
8
|
-
| AiChat | 标准对话界面(气泡+工具卡+审批卡+自动滚动) | 接收 useChat handle——最常用 |
|
|
9
|
-
| ChatInput | 独立聊天输入条(IME/多行/流式停止) | AiChat 内部抽取;业务自拼对话页时用 |
|
|
10
|
-
| MessageBubble | 单条消息气泡(role/status/actions) | 自拼对话页 |
|
|
11
|
-
| SessionList | 会话管理列表(分组/重命名/删除/搜索) | 侧栏 |
|
|
12
|
-
| ReasoningBlock | CoT 推理折叠展示 | AiChat renderMessage 内 |
|
|
13
|
-
| ToolCallCard | 工具调用三态卡片 | AiChat 内嵌 |
|
|
14
|
-
| CitationCard | RAG 引用来源展示 | AiChat renderMessage 内 |
|
|
15
|
-
| ApprovalCard | HITL 人工审批(允许/拒绝/修改参数) | AiChat 内嵌;agent 审批流 |
|
|
16
|
-
| PromptTemplate | 提示词模板编辑器(变量插入+预览) | 构建 agent 配置页 |
|
|
17
|
-
|
|
18
|
-
## 组合示例
|
|
19
|
-
|
|
20
|
-
```tsx
|
|
21
|
-
// 最小对话页 = ChatInput + MessageBubble + SessionList(业务布局自控)
|
|
22
|
-
// 标准对话 = AiChat(开箱即用)
|
|
23
|
-
// Agent 配置 = PromptTemplate(系统提示词)+ JsonSchemaForm(工具参数)
|
|
24
|
-
```
|
package/content/guides/choose.md
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# 选型决策树
|
|
2
|
-
|
|
3
|
-
> 核心原则:**先查框架再动手**——weifuwu 已提供的能力绝不重复造轮子。
|
|
4
|
-
> 检查顺序:components → layout 原语 → patterns → apps → capabilities。
|
|
5
|
-
|
|
6
|
-
## 决策树
|
|
7
|
-
|
|
8
|
-
```
|
|
9
|
-
要做一个界面元素?
|
|
10
|
-
├─ 已有组件(Button/Input/Table/Modal/Tabs/Tree…135 个)
|
|
11
|
-
│ └─ → content/components/<id>.md 查 API + 纪律,直接使用
|
|
12
|
-
├─ 是布局结构(容器/间距/对齐/导航壳/响应式显隐)
|
|
13
|
-
│ └─ → content/layout/*.md 用 wf-* 原语(零手写 CSS)
|
|
14
|
-
│ ├─ 页面骨架 → wf-app-shell / wf-stack / wf-container
|
|
15
|
-
│ ├─ 间距/排版 → wf-gap-* / wf-text-* / wf-p-* 工具
|
|
16
|
-
│ └─ 响应式 → wf-hidden@lg / wf-flex@lg 断点变体
|
|
17
|
-
└─ 是完整页面/应用
|
|
18
|
-
├─ 单页结构(后台壳/仪表盘/落地页/移动端)→ content/patterns/*.md 复制
|
|
19
|
-
├─ 多页应用(路由 + 状态 + 后端)→ content/apps/*.md 复制模板改
|
|
20
|
-
│ ├─ 任务管理 → todo
|
|
21
|
-
│ ├─ 登录/权限 → auth
|
|
22
|
-
│ ├─ 管理后台 → admin
|
|
23
|
-
│ └─ 应用编排 → multi
|
|
24
|
-
└─ 生产级参考 → apps/agent-platform/(真实产品架构)
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## 取码(选定后怎么拿源码)
|
|
28
|
-
|
|
29
|
-
| 选型结果 | 取码路径 |
|
|
30
|
-
|---------|---------|
|
|
31
|
-
| 组件片段 | 组件文档「用法示例」节复制(或 `examples/` 无独立文件——直接按 API 写) |
|
|
32
|
-
| 页面模式 | `examples/patterns/<file>.tsx` 复制文件 |
|
|
33
|
-
| 应用模板 | `examples/apps/<id>/` 整个目录复制(app.tsx + api.ts + server.ts + main.tsx) |
|
|
34
|
-
|
|
35
|
-
`examples/` 随 npm 包发布——`node_modules/weifuwu/examples/` 可离线取码。
|
|
36
|
-
|
|
37
|
-
## 组件 vs 原语(最常见混淆)
|
|
38
|
-
|
|
39
|
-
| 场景 | 用组件 | 用原语 |
|
|
40
|
-
|------|--------|--------|
|
|
41
|
-
| 布局容器/间距/显隐 | ❌ | ✅ wf-stack/wf-grid/wf-gap-* |
|
|
42
|
-
| 导航结构(侧栏/菜单项) | ❌ | ✅ wf-nav/wf-nav-item(或 Menu 组件) |
|
|
43
|
-
| 可交互元素(按钮/输入/选择) | ✅ 组件 | ❌ |
|
|
44
|
-
| 弹层(下拉/弹窗/tooltip) | ✅ 组件(openPopup 命令式) | ❌ |
|
|
45
|
-
| 纯视觉容器(卡片面/分隔) | 两者皆可 | ✅ wf-surface/wf-border |
|
|
46
|
-
|
|
47
|
-
## 近义组件选型(名字相近/功能重叠——一句话决策)
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
列表类:List(<500 条)→ VirtualList / VirtualTable(>500 条)
|
|
51
|
-
选择类:固定选项 → Select;自由输入联想 → AutoComplete;纯搜索 → SearchInput
|
|
52
|
-
编辑类:轻量 md → Editor;代码 → CodeEditor;分屏预览 → MarkdownEditor
|
|
53
|
-
树形类:展示/勾选 → Tree;下拉选择 → TreeSelect;路径级联 → Cascader
|
|
54
|
-
折叠类:多开 → Collapse;单开(互斥)→ Accordion
|
|
55
|
-
通知类:轻反馈 → Toast;持久通知 → Notification
|
|
56
|
-
主题类:pressed 语义 → ToggleGroup;选中态样式 → SegmentedControl
|
|
57
|
-
图片类:展示 → Img;裁剪 → ImageCropper;头像 → Avatar
|
|
58
|
-
Office 文档:预览/编辑 → FilePreview;xlsx → FilePreview.Sheet;pptx → FilePreview.Slide
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## 关键纪律(选型时就要知道)
|
|
62
|
-
|
|
63
|
-
1. **浮层必须组件 + openPopup**:dropdown/select/datepicker/menubar/cascader/mentions/contextmenu/tooltip/popover/hovercard/modal/drawer/toast/notification/confirm/tour/command——这些已有组件,直接复用;新弹层组件必须 `ctx.ui.openPopup`(anchor 必传)
|
|
64
|
-
2. **受控组件配回调**:传 active/value/checkedKeys 等受控 props 必须同时传 onChange——缺回调 = 静默不可点
|
|
65
|
-
3. **列表 key 纪律**:有内部状态的组件列表 + 动态增删重排 → 显式 key;纯元素列表 → 无 key(位置身份)
|
|
66
|
-
4. **浏览器能力走 ctx.browser**:禁裸 window/document/localStorage/matchMedia
|
|
67
|
-
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# 两阶段组件模型
|
|
2
|
-
|
|
3
|
-
```tsx
|
|
4
|
-
const MyComp: Component = async (initProps, ctx) => { // ── mount(只一次)
|
|
5
|
-
let count = initProps.initial ?? 0 // 状态初始化/订阅/定时器
|
|
6
|
-
return async (props) => { // ── render(每次渲染)
|
|
7
|
-
return h('button', { onClick: () => { count++; ctx.ui.render() } }, count)
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## 职责表
|
|
13
|
-
|
|
14
|
-
| 阶段 | 职责 | 可访问 | 事件函数 |
|
|
15
|
-
|------|------|--------|---------|
|
|
16
|
-
| mount | 初始化状态/订阅/定时器/稳定引用回调 | initProps、ctx、mount let、稳定 handle | 只依赖稳定引用 → mount 定义(零重绑) |
|
|
17
|
-
| render | 读最新 props/派生数据/输出视图 | 最新 props、mount 闭包、ctx | 依赖最新 props → render 内定义(重绑是正确性要求) |
|
|
18
|
-
| ref | DOM 持有/第三方初始化/清理 | el 或 null | **必须 mount 作用域定义**(内联 ref 每渲染新函数 → ref(null) 反复触发) |
|
|
19
|
-
|
|
20
|
-
## 铁律
|
|
21
|
-
|
|
22
|
-
1. **renderFn 强制异步**(`async (props) => Promise<VNode>`)——两阶段都可 await
|
|
23
|
-
2. **渲染只发生在 render() 调用处**——状态是普通对象(let/createStore),无 $ Proxy
|
|
24
|
-
3. **工厂按实例执行**——数据必须走 ctx.data(自带缓存+并发合并)
|
|
25
|
-
4. mount 捕获的 initProps 不得用于渲染(必须用渲染期 props)
|
|
26
|
-
5. 初始状态必须确定性(禁 window.innerWidth 之类直接初始化 → SSR mismatch)
|
|
27
|
-
|
|
28
|
-
## 相关
|
|
29
|
-
|
|
30
|
-
- 状态存放:`let` + render()(内部)/ createStore + useExternal(共享)
|
|
31
|
-
- 完整纪律:AGENTS.md §3/§4
|
|
32
|
-
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# 组件编写标准(强制)
|
|
2
|
-
|
|
3
|
-
> 本文是 weifuwu 组件的**强制标准**——不是建议。每条标准标注强制执行机制:
|
|
4
|
-
> **L1 类型强制**(编译期失败)/ **L2 运行时检测**(dev error/warn——写错即报)/
|
|
5
|
-
> **L3 契约测试**(引擎行为——vdom-x.test.ts 验收)/ **文档红线**(引擎无法检测——靠审查)。
|
|
6
|
-
> 配套:[自定义组件指南](custom-component.md)(流程)· [质量标准](quality.md)(质量)
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## S1 组件形态
|
|
11
|
-
|
|
12
|
-
| # | 标准 | 强制 | 违反时 |
|
|
13
|
-
|---|------|------|--------|
|
|
14
|
-
| S1.1 | 两阶段签名 `Component<P, C>`——外层 mount 一次,内层 renderFn 每次渲染 | **L1** | 编译失败(类型) |
|
|
15
|
-
| S1.2 | **render-only**:改状态后显式 `ctx.render()`——无自动渲染 | 文档红线 | 交互不更新(审查/测试抓) |
|
|
16
|
-
| S1.3 | renderFn 的 await 只允许 `ctx.data`(管道保证 resolve) | 文档红线 | 挂起(永不 resolve) |
|
|
17
|
-
| S1.4 | 工厂(mount)内禁止副作用/昂贵操作——数据走 `ctx.data` | 文档红线 | 重复执行(N 实例 = N 次) |
|
|
18
|
-
|
|
19
|
-
## S2 children 结构(值域协议)
|
|
20
|
-
|
|
21
|
-
**children 只接受四类值**:vnode / 数组(隐式 Fragment——任意嵌套递归展开)/
|
|
22
|
-
string·number(文本)/ 空洞(`false`·`null`·`undefined`·`true`——占位不渲染)。
|
|
23
|
-
|
|
24
|
-
| # | 标准 | 强制 | 违反时 |
|
|
25
|
-
|---|------|------|--------|
|
|
26
|
-
| S2.1 | children 值域协议(对象/函数/Symbol = 非法输入) | **L2** | `console.warn` + 诊断占位 |
|
|
27
|
-
| S2.2 | 数组 = 隐式 Fragment(嵌套递归展开——路径稳定) | **L3** | 契约测试 X-B5 |
|
|
28
|
-
| S2.3 | 条件渲染:三元优先(`cond ? <X/> : null`);`cond && <X/>` 的 cond 保证 boolean | 文档红线 | `0 && <X/>` 渲染 "0" |
|
|
29
|
-
| S2.4 | **禁 `x || <Fallback/>`**(0/''/NaN 脏值泄漏)——用 `x != null ? ... : null` | 文档红线 | 渲染 "0"/空文本 |
|
|
30
|
-
| S2.5 | **children 数组禁 `filter(Boolean)`**——占位法已处理空洞(长度恒定保位置) | **L2** | A 级检测 dev error |
|
|
31
|
-
| S2.6 | 条件渲染的 false 是占位(同构——不塌缩兄弟) | **L3** | 契约测试 X-B4 |
|
|
32
|
-
|
|
33
|
-
## S3 列表
|
|
34
|
-
|
|
35
|
-
| # | 标准 | 强制 | 违反时 |
|
|
36
|
-
|---|------|------|--------|
|
|
37
|
-
| S3.1 | **有状态组件实例列表必须显式 key**(业务身份——增删/重排状态跟随) | **L2** | A 级检测 dev error(长度变化 + 无 key 组件项——portal 槽豁免) |
|
|
38
|
-
| S3.2 | 无内部状态元素列表无 key(位置身份——patch 正确) | 文档红线 | 状态错位(误加 key 噪音) |
|
|
39
|
-
| S3.3 | keyed 项路径 `.k{key}` 稳定(单 keyed 项不翻转) | **L3** | 契约测试 X-B3 |
|
|
40
|
-
|
|
41
|
-
## S4 状态与受控
|
|
42
|
-
|
|
43
|
-
| # | 标准 | 强制 | 违反时 |
|
|
44
|
-
|---|------|------|--------|
|
|
45
|
-
| S4.1 | **受控 props 必须配回调**(active/value/checkedKeys 等——父独占状态,回调是唯一出口) | **L2** | `console.warn`(按 name 幂等) |
|
|
46
|
-
| S4.2 | 受控输入用 `ctx.ui.useControlledInput`(输入态不依赖受控 value 回流——防焦点丢失) | 文档红线 | 输入失焦 |
|
|
47
|
-
| S4.3 | 共享状态 `createStore` + `ctx.ui.useExternal` | 文档红线 | — |
|
|
48
|
-
| S4.4 | 内部状态闭包 `let` + 显式 render(不触发渲染的缓存用 let 不 render) | 文档红线 | — |
|
|
49
|
-
| S4.5 | **props 里的对象变更必须换引用**(不可变更新——`[...items, x]` 而非 `items.push(x)`)——剪枝是引用比较——同引用内容变化永远不触发重渲染(deepFreeze 豁免对象——含函数属性——不被冻结) | 文档红线 | 内容变了 UI 不更新 |
|
|
50
|
-
|
|
51
|
-
## S5 浮层
|
|
52
|
-
|
|
53
|
-
| # | 标准 | 强制 | 违反时 |
|
|
54
|
-
|---|------|------|--------|
|
|
55
|
-
| S5.1 | **浮层唯一入口 `ctx.ui.openPopup`**(命令式——toast 心智)——portal 机制已删除 | **L3** + 文档红线 | 契约 + 场景 |
|
|
56
|
-
| S5.2 | 浮层根 `position: fixed` + JS 坐标 + `#__wf_portal`(禁 absolute 相对父容器) | 文档红线 | overflow/transform 裁剪 |
|
|
57
|
-
| S5.3 | 新弹层组件先查 openPopup 能力(定位/Escape/外部点击/presence/mask——anchor 必传) | 文档红线 | 重复造轮子 |
|
|
58
|
-
|
|
59
|
-
## S6 生命周期
|
|
60
|
-
|
|
61
|
-
| # | 标准 | 强制 | 违反时 |
|
|
62
|
-
|---|------|------|--------|
|
|
63
|
-
| S6.1 | **ref 定义在 mount 作用域**(内联 ref 每渲染新函数 → 旧 ref(null) 反复触发清理) | 文档红线 | 清理逻辑反复执行 |
|
|
64
|
-
| S6.2 | 卸载清理:`onUnmount`(退订/清定时器/removeEventListener) | **L3** | 契约 X-G1 |
|
|
65
|
-
| S6.3 | 浏览器能力走 `ctx.browser`(禁裸 `window.`/`document.`/`localStorage` 等) | 审计基线 | grep 审计(CI 噪音) |
|
|
66
|
-
|
|
67
|
-
## S7 环境
|
|
68
|
-
|
|
69
|
-
| # | 标准 | 强制 | 违反时 |
|
|
70
|
-
|---|------|------|--------|
|
|
71
|
-
| S7.1 | 工厂层取数走 `ctx.data`(三场景:SSR 收集/hydration 种子/SPA fetch + 并发合并) | **L3** | 契约 X-A5/X-G3 |
|
|
72
|
-
| S7.2 | 个性化/会话数据不进 ctx.data(SSR 序列化泄漏)——留客户端 let + fetch | 文档红线 | 数据泄露 |
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## S8 路由与 SSR(引擎标准——每个 vdom 必须实现——vdom-x 验收)
|
|
77
|
-
|
|
78
|
-
| # | 标准 | 强制 | 违反时 |
|
|
79
|
-
|---|------|------|--------|
|
|
80
|
-
| S8.1 | **UIRouter**:`get(path, handler)` / `notFound`——Trie 匹配(静态段优先参数段优先通配段——`:id` 参数 + `*` 通配)——类比后端 Router | **L3** | 契约 X-R1 |
|
|
81
|
-
| S8.2 | **uiServe**(客户端):SSR 首帧收养(hydrate——路径 id 精确吸收零重建)+ 导航(navigate/链接拦截/popstate) | **L3** | 契约 X-R2/X-R3 |
|
|
82
|
-
| S8.3 | **uiSsr**(服务端):match → 页面 → SSR HTML + 数据种子——同一 UIRouter 实例两端共享(匹配/参数同源) | **L3** | 契约 X-R3 |
|
|
83
|
-
| S8.4 | 导航渲染:根级异类型 = 整树原子替换;同类型(params 变化)= 实例复用 | **L3** | 契约 X-R2 |
|
|
84
|
-
| S8.5 | 页面组件 ctx.route(path/params——共享可变对象——导航更新内容引用恒定) | 文档红线 | 复用组件读旧 params |
|
|
85
|
-
|
|
86
|
-
> **引擎兼容契约**:UIRouter/uiServe/uiSsr 是每个 vdom 的**必选项**(公共面
|
|
87
|
-
> `weifuwu/ui-dom` 导出——vdom5 替换实现即切换——X-R1~R3 验收)。
|
|
88
|
-
> **vdom3 退役条件**:vdom4 通过全部 vdom-x 契约(含 X-R)→ vdom3 删除
|
|
89
|
-
> (组件库测试引擎切换 + 公共面去 v3 导出——见 design/vdom4-risk.md)。
|
|
90
|
-
|
|
91
|
-
## S9 公共面稳定契约(weifuwu/ui-dom index.ts——对外接口)
|
|
92
|
-
|
|
93
|
-
| # | 标准 | 强制 | 违反时 |
|
|
94
|
-
|---|------|------|--------|
|
|
95
|
-
| S9.1 | **`weifuwu/ui-dom` 公共面 = 对外契约**——内部引擎实现(vdom4/vdom5)切换**不影响功能**——应用/组件只依赖公共面 | **L3** | 契约 X-S1/X-S2 |
|
|
96
|
-
| S9.2 | 契约 API 清单(vdom 无关面):`h/jsx/jsxs/jsxDEV` + `createStore` + `createClientBrowser` + 中间件(`api/auth/ws/i18n`)——**结构符号内化:`Fragment` 不在公共面**(数组 = 隐式 Fragment;浮层 = openPopup 命令式;`<></>` 经 jsx-runtime 子路径自动导入) | **L3** | X-S1 |
|
|
97
|
-
| S9.3 | 引擎契约面:`createRoot`(handle: ready/engine/unmount)+ `UIRouter/uiServe/uiSsr`(S8) | **L3** | X-S2/X-R |
|
|
98
|
-
| S9.4 | **禁止公共面泄漏引擎专属实现**(v3 专属导出过渡期标注——vdom3 退役时移除——不得成为契约) | 文档红线 | 切换时功能变化 |
|
|
99
|
-
|
|
100
|
-
> **公共面 = 兼容性承诺**:vdom-x 全部测试(X-A~R + X-S)经公共面取引擎入口——
|
|
101
|
-
> vdom5 只改 index.ts 的 v4 面实现——测试零改动——全绿 = 公共面功能不变。
|
|
102
|
-
|
|
103
|
-
## 强制执行机制总览
|
|
104
|
-
|
|
105
|
-
| 机制 | 覆盖 | 位置 |
|
|
106
|
-
|------|------|------|
|
|
107
|
-
| **L1 类型** | S1.1 | `Component`/`RenderFn` 类型(contracts/vnode.ts) |
|
|
108
|
-
| **L2 运行时检测** | S2.1/S2.5/S3.1/S4.1 | vdom4 diff.ts(A 级检测/非法输入/受控 warn——幂等) |
|
|
109
|
-
| **L3 契约测试** | S2.2/S2.6/S3.3/S5.1/S6.2/S7.1 | `src/test/vdom-x.test.ts`(41 测试——vdom5 验收) |
|
|
110
|
-
| **审计测试** | L2 检测自身工作 | `src/test/component-standards.test.ts` |
|
|
111
|
-
| **审计基线** | S6.3 | `grep -rnE '\bwindow\.|document\.' src/components/`(0 允许) |
|
|
112
|
-
|
|
113
|
-
## 开发流程(强制)
|
|
114
|
-
|
|
115
|
-
1. 写组件 → 类型检查(L1 编译期)
|
|
116
|
-
2. dev 运行 → L2 检测报错即修(受控缺回调/key 缺失/非法 children/filter)
|
|
117
|
-
3. 提测 → 契约测试(L3——引擎行为)
|
|
118
|
-
4. 发布 → 全量(1538+)
|
|
119
|
-
|
|
120
|
-
## 与引擎的契约(vdom5 必须满足)
|
|
121
|
-
|
|
122
|
-
vdom-x.test.ts 的 41 测试 = 上述 L3 条目的可执行化。新引擎一行替换入口——
|
|
123
|
-
全绿 = 组件库零改动迁移 + 标准自动满足。
|