weifuwu 0.86.0 → 0.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -45
- package/content/apps/admin.md +55 -0
- package/content/apps/agent-platform.md +35 -0
- package/content/apps/auth.md +49 -0
- package/content/apps/multi.md +44 -0
- package/content/apps/todo.md +51 -0
- package/content/backend/ai.md +28 -0
- package/content/backend/auth.md +20 -0
- package/content/backend/email.md +23 -0
- package/content/backend/graphql.md +23 -0
- package/content/backend/http.md +23 -0
- package/content/backend/limit.md +23 -0
- package/content/backend/middleware.md +17 -0
- package/content/backend/queue.md +23 -0
- package/content/backend/redis.md +26 -0
- package/content/backend/router.md +23 -0
- package/content/backend/schedule.md +23 -0
- package/content/backend/sql.md +27 -0
- package/content/backend/sse.md +26 -0
- package/content/backend/ws.md +26 -0
- package/content/capabilities/app-node.md +21 -0
- package/content/capabilities/data.md +21 -0
- package/content/capabilities/events.md +21 -0
- package/content/capabilities/hooks.md +22 -0
- package/content/capabilities/i18n.md +21 -0
- package/content/capabilities/popup.md +21 -0
- package/content/capabilities/render-only.md +23 -0
- package/content/capabilities/router.md +22 -0
- package/content/capabilities/self-id.md +21 -0
- package/content/capabilities/store.md +21 -0
- package/content/capabilities/theme.md +21 -0
- package/content/capabilities/two-phase.md +21 -0
- package/content/components/accordion.md +50 -0
- package/content/components/actionsheet.md +46 -0
- package/content/components/affix.md +51 -0
- package/content/components/aichat.md +57 -0
- package/content/components/alert.md +52 -0
- package/content/components/alertgroup.md +45 -0
- package/content/components/anchor.md +52 -0
- package/content/components/app.md +37 -0
- package/content/components/approvalcard.md +56 -0
- package/content/components/appshell.md +50 -0
- package/content/components/aspectratio.md +47 -0
- package/content/components/authpage.md +61 -0
- package/content/components/autocomplete-v2.md +40 -0
- package/content/components/autocomplete.md +56 -0
- package/content/components/avatar.md +51 -0
- package/content/components/avatargroup.md +47 -0
- package/content/components/backtop.md +53 -0
- package/content/components/badge.md +55 -0
- package/content/components/breadcrumb.md +49 -0
- package/content/components/button.md +63 -0
- package/content/components/calendar-v2.md +40 -0
- package/content/components/calendar.md +50 -0
- package/content/components/card.md +58 -0
- package/content/components/carousel.md +52 -0
- package/content/components/cascader-v2.md +39 -0
- package/content/components/cascader.md +54 -0
- package/content/components/chart.md +53 -0
- package/content/components/chatinput.md +63 -0
- package/content/components/checkbox.md +51 -0
- package/content/components/checkboxgroup.md +52 -0
- package/content/components/citationcard.md +48 -0
- package/content/components/codeblock.md +48 -0
- package/content/components/codeeditor.md +47 -0
- package/content/components/collapse.md +49 -0
- package/content/components/colorpicker.md +50 -0
- package/content/components/command.md +50 -0
- package/content/components/confirm.md +57 -0
- package/content/components/contextmenu.md +48 -0
- package/content/components/copybutton.md +51 -0
- package/content/components/datepicker.md +52 -0
- package/content/components/descriptions-v2.md +39 -0
- package/content/components/descriptions.md +52 -0
- package/content/components/diffview-v2.md +39 -0
- package/content/components/diffview.md +50 -0
- package/content/components/divider.md +48 -0
- package/content/components/drawer.md +55 -0
- package/content/components/dropdown.md +53 -0
- package/content/components/editor.md +49 -0
- package/content/components/emptystate.md +51 -0
- package/content/components/exportcsv.md +38 -0
- package/content/components/field.md +54 -0
- package/content/components/filepreview-office.md +37 -0
- package/content/components/filepreview.md +49 -0
- package/content/components/filetree.md +56 -0
- package/content/components/fileupload-v2.md +39 -0
- package/content/components/fileupload.md +57 -0
- package/content/components/floatbutton.md +52 -0
- package/content/components/form-v2.md +41 -0
- package/content/components/form.md +60 -0
- package/content/components/grid.md +51 -0
- package/content/components/highlight-v2.md +39 -0
- package/content/components/highlight.md +46 -0
- package/content/components/hovercard.md +51 -0
- package/content/components/icon.md +50 -0
- package/content/components/imagecropper.md +45 -0
- package/content/components/img.md +56 -0
- package/content/components/infinitescroll-v2.md +40 -0
- package/content/components/infinitescroll.md +54 -0
- package/content/components/input.md +65 -0
- package/content/components/inputnumber.md +58 -0
- package/content/components/inview.md +56 -0
- package/content/components/jsonschemaform.md +53 -0
- package/content/components/jsonviewer-v2.md +39 -0
- package/content/components/jsonviewer.md +49 -0
- package/content/components/kanban.md +46 -0
- package/content/components/label.md +48 -0
- package/content/components/layout.md +54 -0
- package/content/components/layoutcontent.md +43 -0
- package/content/components/layoutheader.md +43 -0
- package/content/components/layoutsider.md +43 -0
- package/content/components/link.md +52 -0
- package/content/components/list.md +44 -0
- package/content/components/loading.md +45 -0
- package/content/components/logviewer-v2.md +39 -0
- package/content/components/logviewer.md +53 -0
- package/content/components/markdown.md +51 -0
- package/content/components/markdowneditor.md +47 -0
- package/content/components/math.md +42 -0
- package/content/components/mentions-v2.md +39 -0
- package/content/components/mentions.md +52 -0
- package/content/components/menu.md +56 -0
- package/content/components/menubar.md +44 -0
- package/content/components/messagebubble.md +50 -0
- package/content/components/modal.md +59 -0
- package/content/components/navmenu.md +47 -0
- package/content/components/notification.md +51 -0
- package/content/components/pageheader.md +53 -0
- package/content/components/pagination.md +49 -0
- package/content/components/paragraph.md +45 -0
- package/content/components/passwordinput.md +57 -0
- package/content/components/pininput-v2.md +39 -0
- package/content/components/pininput.md +50 -0
- package/content/components/pipeline.md +49 -0
- package/content/components/popconfirm.md +58 -0
- package/content/components/popover.md +61 -0
- package/content/components/progressbar.md +50 -0
- package/content/components/prompttemplate.md +49 -0
- package/content/components/qrcode.md +50 -0
- package/content/components/radiogroup.md +53 -0
- package/content/components/rate.md +53 -0
- package/content/components/reasoningblock.md +47 -0
- package/content/components/relationgraph.md +52 -0
- package/content/components/resizable.md +53 -0
- package/content/components/result.md +49 -0
- package/content/components/scrollbar.md +49 -0
- package/content/components/searchinput.md +51 -0
- package/content/components/segmentedcontrol.md +59 -0
- package/content/components/select-searchable.md +47 -0
- package/content/components/select.md +66 -0
- package/content/components/sessionlist.md +52 -0
- package/content/components/sheetgrid.md +44 -0
- package/content/components/skeleton.md +55 -0
- package/content/components/slidecanvas.md +44 -0
- package/content/components/slider.md +62 -0
- package/content/components/sortablelist.md +39 -0
- package/content/components/space.md +52 -0
- package/content/components/sparkline.md +52 -0
- package/content/components/statcard-countdown.md +39 -0
- package/content/components/statcard.md +56 -0
- package/content/components/steps.md +48 -0
- package/content/components/switch.md +50 -0
- package/content/components/tabbar.md +45 -0
- package/content/components/table-v2.md +40 -0
- package/content/components/table.md +66 -0
- package/content/components/tabs.md +56 -0
- package/content/components/tag.md +51 -0
- package/content/components/tagsinput-v2.md +39 -0
- package/content/components/tagsinput.md +54 -0
- package/content/components/text.md +45 -0
- package/content/components/textarea.md +57 -0
- package/content/components/themeswitch.md +69 -0
- package/content/components/timeline.md +50 -0
- package/content/components/title.md +45 -0
- package/content/components/toast.md +52 -0
- package/content/components/toggle-togglegroup.md +52 -0
- package/content/components/togglegroup.md +47 -0
- package/content/components/toolcallcard.md +51 -0
- package/content/components/tooltip.md +50 -0
- package/content/components/tour.md +50 -0
- package/content/components/transfer.md +52 -0
- package/content/components/tree-v2.md +39 -0
- package/content/components/tree.md +59 -0
- package/content/components/treeselect.md +54 -0
- package/content/components/typography.md +51 -0
- package/content/components/videoplayer.md +52 -0
- package/content/components/virtuallist.md +52 -0
- package/content/components/virtualtable-v2.md +39 -0
- package/content/components/virtualtable.md +55 -0
- package/content/components/watermark.md +53 -0
- package/content/components/wave.md +43 -0
- package/content/guides/ai-chat-family.md +24 -0
- package/content/guides/choose.md +67 -0
- package/content/guides/component-model.md +32 -0
- package/content/guides/component-standards.md +123 -0
- package/{docs/components.md → content/guides/components-guide.md} +31 -7
- package/{docs/custom-components.md → content/guides/custom-component.md} +70 -55
- package/{docs/data.md → content/guides/data-guide.md} +5 -2
- package/content/guides/file-preview-family.md +18 -0
- package/{docs → content/guides}/frontend.md +122 -52
- package/content/guides/layout-choice.md +64 -0
- package/{docs/layout.md → content/guides/layout-guide.md} +12 -8
- package/{docs/frontend-middleware.md → content/guides/middleware.md} +34 -3
- package/{docs/mobile.md → content/guides/mobile-guide.md} +20 -24
- package/content/guides/page-building.md +98 -0
- package/content/guides/production.md +37 -0
- package/content/guides/quality.md +60 -0
- package/{docs/realtime.md → content/guides/realtime-guide.md} +6 -3
- package/content/guides/render-only.md +44 -0
- package/{docs/saas.md → content/guides/saas-guide.md} +8 -5
- package/{docs/server.md → content/guides/server-guide.md} +5 -2
- package/content/guides/start.md +41 -0
- package/{docs → content/guides}/styling.md +5 -1
- package/{docs/frontend-ui-dom.md → content/guides/ui-dom-guide.md} +7 -1
- package/content/index.json +4344 -0
- package/content/index.md +181 -0
- package/content/layout/align.md +20 -0
- package/content/layout/anchor.md +19 -0
- package/content/layout/app-shell.md +23 -0
- package/content/layout/border.md +20 -0
- package/content/layout/center.md +19 -0
- package/content/layout/cluster.md +19 -0
- package/content/layout/container.md +19 -0
- package/content/layout/fill.md +19 -0
- package/content/layout/grid.md +19 -0
- package/content/layout/hidden.md +22 -0
- package/content/layout/layer.md +19 -0
- package/content/layout/position.md +22 -0
- package/content/layout/row.md +23 -0
- package/content/layout/safe-area.md +20 -0
- package/content/layout/scroll.md +21 -0
- package/content/layout/spacing.md +22 -0
- package/content/layout/split.md +19 -0
- package/content/layout/stack.md +19 -0
- package/content/layout/surface.md +23 -0
- package/content/layout/text.md +22 -0
- package/content/patterns/app-shell.md +34 -0
- package/content/patterns/dashboard.md +36 -0
- package/content/patterns/data-screen.md +30 -0
- package/content/patterns/detail-page.md +31 -0
- package/content/patterns/docs.md +34 -0
- package/content/patterns/focus-task.md +34 -0
- package/content/patterns/landing.md +35 -0
- package/content/patterns/list-page.md +32 -0
- package/content/patterns/mobile.md +31 -0
- package/content/patterns/settings-page.md +33 -0
- package/content/patterns/workspace.md +32 -0
- package/dist/cli/apps-typecheck.test.d.ts +11 -0
- package/dist/cli/docs.d.ts +2 -0
- package/dist/cli/docs.mjs +10961 -0
- package/dist/cli/home-flash.test.d.ts +1 -0
- package/dist/{components → client/components}/Accordion/Accordion.d.ts +1 -1
- package/dist/client/components/ActionSheet/ActionSheet.d.ts +37 -0
- package/dist/{components → client/components}/Affix/Affix.d.ts +1 -1
- package/dist/{components → client/components}/AiChat/AiChat.d.ts +3 -3
- package/dist/{components → client/components}/Alert/Alert.d.ts +1 -1
- package/dist/{components → client/components}/AlertGroup/AlertGroup.d.ts +1 -1
- package/dist/{components → client/components}/Anchor/Anchor.d.ts +1 -1
- package/dist/client/components/AppShell/AppShell.d.ts +55 -0
- package/dist/{components → client/components}/ApprovalCard/ApprovalCard.d.ts +2 -2
- package/dist/{components → client/components}/AspectRatio/AspectRatio.d.ts +1 -1
- package/dist/{components → client/components}/AuthPage/AuthPage.d.ts +2 -2
- package/dist/{components → client/components}/AutoComplete/AutoComplete.d.ts +1 -1
- package/dist/{components → client/components}/Avatar/Avatar.d.ts +1 -1
- package/dist/{components → client/components}/AvatarGroup/AvatarGroup.d.ts +1 -1
- package/dist/{components → client/components}/BackTop/BackTop.d.ts +1 -1
- package/dist/{components → client/components}/Badge/Badge.d.ts +1 -1
- package/dist/{components → client/components}/Breadcrumb/Breadcrumb.d.ts +1 -1
- package/dist/{components → client/components}/Button/Button.d.ts +1 -1
- package/dist/{components → client/components}/Calendar/Calendar.d.ts +1 -1
- package/dist/{components → client/components}/Card/Card.d.ts +1 -1
- package/dist/{components → client/components}/Carousel/Carousel.d.ts +1 -1
- package/dist/{components → client/components}/Cascader/Cascader.d.ts +1 -1
- package/dist/{components → client/components}/Chart/Chart.d.ts +1 -1
- package/dist/{components → client/components}/Chart/chart-utils.d.ts +5 -1
- package/dist/{components → client/components}/ChatInput/ChatInput.d.ts +7 -7
- package/dist/{components → client/components}/Checkbox/Checkbox.d.ts +1 -1
- package/dist/{components → client/components}/CheckboxGroup/CheckboxGroup.d.ts +1 -1
- package/dist/{components → client/components}/CitationCard/CitationCard.d.ts +3 -3
- package/dist/{components → client/components}/CodeBlock/CodeBlock.d.ts +1 -1
- package/dist/client/components/CodeEditor/CodeEditor.d.ts +18 -0
- package/dist/{components → client/components}/Collapse/Collapse.d.ts +1 -1
- package/dist/{components → client/components}/ColorPicker/ColorPicker.d.ts +1 -1
- package/dist/{components → client/components}/Command/Command.d.ts +1 -1
- package/dist/{components → client/components}/Confirm/Confirm.d.ts +2 -7
- package/dist/{components → client/components}/ContextMenu/ContextMenu.d.ts +1 -1
- package/dist/{components → client/components}/CopyButton/CopyButton.d.ts +1 -1
- package/dist/{components → client/components}/DatePicker/DatePicker.d.ts +2 -2
- package/dist/{components → client/components}/Descriptions/Descriptions.d.ts +1 -1
- package/dist/{components → client/components}/DiffView/DiffView.d.ts +1 -1
- package/dist/{components → client/components}/Divider/Divider.d.ts +1 -1
- package/dist/{components → client/components}/Drawer/Drawer.d.ts +1 -1
- package/dist/{components → client/components}/Dropdown/Dropdown.d.ts +1 -1
- package/dist/{components → client/components}/Editor/Editor.d.ts +1 -1
- package/dist/{components → client/components}/Editor/tools/toolbar.d.ts +1 -1
- package/dist/{components → client/components}/EmptyState/EmptyState.d.ts +1 -1
- package/dist/client/components/ExportCSV/ExportCSV.d.ts +30 -0
- package/dist/{components → client/components}/Field/Field.d.ts +1 -1
- package/dist/{components → client/components}/FilePreview/FilePreview.d.ts +1 -1
- package/dist/client/components/FileTree/FileTree.d.ts +57 -0
- package/dist/{components → client/components}/FileUpload/FileUpload.d.ts +1 -1
- package/dist/{components → client/components}/FloatButton/FloatButton.d.ts +1 -1
- package/dist/{components → client/components}/Form/Form.d.ts +1 -1
- package/dist/{components → client/components}/Grid/Grid.d.ts +1 -1
- package/dist/{components → client/components}/Highlight/Highlight.d.ts +1 -1
- package/dist/{components → client/components}/HoverCard/HoverCard.d.ts +5 -4
- package/dist/{components → client/components}/Icon/Icon.d.ts +2 -2
- package/dist/client/components/ImageCropper/ImageCropper.d.ts +17 -0
- package/dist/{components → client/components}/Img/Img.d.ts +1 -1
- package/dist/{components → client/components}/InView/InView.d.ts +1 -1
- package/dist/{components → client/components}/InfiniteScroll/InfiniteScroll.d.ts +1 -1
- package/dist/{components → client/components}/Input/Input.d.ts +1 -1
- package/dist/{components → client/components}/InputNumber/InputNumber.d.ts +1 -1
- package/dist/{components → client/components}/JSONViewer/JSONViewer.d.ts +1 -1
- package/dist/{components → client/components}/JsonSchemaForm/JsonSchemaForm.d.ts +3 -3
- package/dist/{components → client/components}/Kanban/Kanban.d.ts +1 -1
- package/dist/{components → client/components}/Label/Label.d.ts +1 -1
- package/dist/{components → client/components}/Layout/Layout.d.ts +1 -1
- package/dist/{components → client/components}/Link/Link.d.ts +1 -1
- package/dist/{components → client/components}/List/List.d.ts +1 -1
- package/dist/{components → client/components}/Loading/Loading.d.ts +1 -1
- package/dist/{components → client/components}/LogViewer/LogViewer.d.ts +1 -1
- package/dist/{components → client/components}/Markdown/Markdown.d.ts +1 -1
- package/dist/client/components/MarkdownEditor/MarkdownEditor.d.ts +18 -0
- package/dist/client/components/Math/Math.d.ts +15 -0
- package/dist/{components → client/components}/Mentions/Mentions.d.ts +1 -1
- package/dist/{components → client/components}/Menu/Menu.d.ts +1 -1
- package/dist/{components → client/components}/Menubar/Menubar.d.ts +1 -1
- package/dist/{components → client/components}/MessageBubble/MessageBubble.d.ts +1 -1
- package/dist/{components → client/components}/Modal/Modal.d.ts +1 -1
- package/dist/{components → client/components}/NavMenu/NavMenu.d.ts +2 -2
- package/dist/{components → client/components}/Notification/Notification.d.ts +7 -2
- package/dist/{components → client/components}/PageHeader/PageHeader.d.ts +1 -1
- package/dist/{components → client/components}/Pagination/Pagination.d.ts +1 -1
- package/dist/{components → client/components}/PasswordInput/PasswordInput.d.ts +1 -1
- package/dist/{components → client/components}/PinInput/PinInput.d.ts +1 -1
- package/dist/{components → client/components}/Pipeline/Pipeline.d.ts +1 -1
- package/dist/{components → client/components}/Popconfirm/Popconfirm.d.ts +2 -2
- package/dist/{components → client/components}/Popover/Popover.d.ts +5 -4
- package/dist/{components → client/components}/ProgressBar/ProgressBar.d.ts +1 -1
- package/dist/client/components/PromptTemplate/PromptTemplate.d.ts +37 -0
- package/dist/{components → client/components}/QRCode/QRCode.d.ts +1 -1
- package/dist/{components → client/components}/RadioGroup/RadioGroup.d.ts +1 -1
- package/dist/{components → client/components}/Rate/Rate.d.ts +1 -1
- package/dist/{components → client/components}/ReasoningBlock/ReasoningBlock.d.ts +3 -3
- package/dist/client/components/RelationGraph/RelationGraph.d.ts +59 -0
- package/dist/{components → client/components}/Resizable/Resizable.d.ts +1 -1
- package/dist/{components → client/components}/Result/Result.d.ts +1 -1
- package/dist/{components → client/components}/Scrollbar/Scrollbar.d.ts +1 -1
- package/dist/{components → client/components}/SearchInput/SearchInput.d.ts +1 -1
- package/dist/{components → client/components}/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/{components → client/components}/Select/Select.d.ts +1 -1
- package/dist/{components → client/components}/SessionList/SessionList.d.ts +3 -3
- package/dist/{components → client/components}/SheetGrid/SheetGrid.d.ts +1 -1
- package/dist/{components → client/components}/Skeleton/Skeleton.d.ts +1 -1
- package/dist/{components → client/components}/SlideCanvas/SlideCanvas.d.ts +1 -1
- package/dist/client/components/Slider/Slider.d.ts +27 -0
- package/dist/client/components/SortableList/SortableList.d.ts +23 -0
- package/dist/{components → client/components}/Space/Space.d.ts +1 -1
- package/dist/{components → client/components}/Sparkline/Sparkline.d.ts +1 -1
- package/dist/{components → client/components}/StatCard/StatCard.d.ts +1 -1
- package/dist/{components → client/components}/Steps/Steps.d.ts +1 -1
- package/dist/{components → client/components}/Switch/Switch.d.ts +1 -1
- package/dist/client/components/TabBar/TabBar.d.ts +35 -0
- package/dist/{components → client/components}/Table/Table.d.ts +7 -1
- package/dist/client/components/Tabs/Tabs.d.ts +22 -0
- package/dist/{components → client/components}/Tag/Tag.d.ts +1 -1
- package/dist/{components → client/components}/TagsInput/TagsInput.d.ts +1 -1
- package/dist/{components → client/components}/Textarea/Textarea.d.ts +1 -1
- package/dist/{components → client/components}/ThemeSwitch/ThemeSwitch.d.ts +1 -1
- package/dist/{components → client/components}/Timeline/Timeline.d.ts +1 -1
- package/dist/{components → client/components}/Toast/Toast.d.ts +1 -1
- package/dist/{components → client/components}/ToggleGroup/ToggleGroup.d.ts +1 -1
- package/dist/{components → client/components}/ToolCallCard/ToolCallCard.d.ts +2 -2
- package/dist/{components → client/components}/Tooltip/Tooltip.d.ts +4 -3
- package/dist/{components → client/components}/Tour/Tour.d.ts +1 -1
- package/dist/{components → client/components}/Transfer/Transfer.d.ts +1 -1
- package/dist/{components → client/components}/Tree/Tree.d.ts +5 -1
- package/dist/{components → client/components}/TreeSelect/TreeSelect.d.ts +5 -1
- package/dist/{components → client/components}/Typography/Typography.d.ts +1 -1
- package/dist/client/components/VideoPlayer/VideoPlayer.d.ts +25 -0
- package/dist/{components → client/components}/VirtualList/VirtualList.d.ts +1 -1
- package/dist/{components → client/components}/VirtualTable/VirtualTable.d.ts +1 -1
- package/dist/{components → client/components}/Watermark/Watermark.d.ts +1 -1
- package/dist/client/components/Wave/Wave.d.ts +15 -0
- package/dist/{components → client/components}/index.d.ts +44 -5
- package/dist/client/components/index.js +57 -0
- package/dist/{components → client/components}/style.css +1081 -98
- package/dist/{layout → client/layout}/weifuwu-layout.css +60 -6
- package/dist/{office → client/office}/xml-serialize.d.ts +1 -1
- package/dist/client/vdom/browser/Browser.d.ts +73 -0
- package/dist/client/vdom/browser/create-client-browser.d.ts +11 -0
- package/dist/client/vdom/commands.d.ts +19 -0
- package/dist/client/vdom/context/UIContext.d.ts +61 -0
- package/dist/client/vdom/context/data.d.ts +17 -0
- package/dist/client/vdom/core/async-guard.d.ts +20 -0
- package/dist/client/vdom/core/build.d.ts +36 -0
- package/dist/client/vdom/core/command/create.d.ts +25 -0
- package/dist/client/vdom/core/command/index.d.ts +15 -0
- package/dist/client/vdom/core/command/insert.d.ts +32 -0
- package/dist/client/vdom/core/command/lifecycle.d.ts +47 -0
- package/dist/client/vdom/core/command/props.d.ts +22 -0
- package/dist/client/vdom/core/diff/attrs.d.ts +10 -0
- package/dist/client/vdom/core/diff/children.d.ts +29 -0
- package/dist/client/vdom/core/diff/cleanup.d.ts +44 -0
- package/dist/client/vdom/core/diff/index.d.ts +22 -0
- package/dist/client/vdom/core/diff/output.d.ts +30 -0
- package/dist/client/vdom/core/diff/same.d.ts +22 -0
- package/dist/client/vdom/core/field/attributes.d.ts +15 -0
- package/dist/client/vdom/core/field/events.d.ts +54 -0
- package/dist/client/vdom/core/field/index.d.ts +19 -0
- package/dist/client/vdom/core/field/key.d.ts +16 -0
- package/dist/client/vdom/core/field/props.d.ts +15 -0
- package/dist/client/vdom/core/field/ref.d.ts +38 -0
- package/dist/client/vdom/core/field/style.d.ts +17 -0
- package/dist/client/vdom/core/node/children.d.ts +20 -0
- package/dist/client/vdom/core/node/component.d.ts +93 -0
- package/dist/client/vdom/core/node/fragment.d.ts +14 -0
- package/dist/client/vdom/core/node/hole.d.ts +22 -0
- package/dist/client/vdom/core/node/index.d.ts +35 -0
- package/dist/client/vdom/core/node/keyed.d.ts +64 -0
- package/dist/client/vdom/core/node/native.d.ts +20 -0
- package/dist/client/vdom/core/node/portal.d.ts +11 -0
- package/dist/client/vdom/core/patch/fields.d.ts +15 -0
- package/dist/client/vdom/core/patch/index.d.ts +51 -0
- package/dist/client/vdom/core/patch/processors.d.ts +75 -0
- package/dist/client/vdom/core/patch/state-machine.d.ts +38 -0
- package/dist/client/vdom/core/patch/verify.d.ts +17 -0
- package/dist/client/vdom/core/router.d.ts +31 -0
- package/dist/client/vdom/core/serve.d.ts +75 -0
- package/dist/client/vdom/core/ssr/absorb.d.ts +53 -0
- package/dist/client/vdom/core/ssr/html.d.ts +32 -0
- package/dist/client/vdom/core/ssr/index.d.ts +25 -0
- package/dist/client/vdom/core/transform/component.d.ts +23 -0
- package/dist/client/vdom/core/transform/element.d.ts +21 -0
- package/dist/client/vdom/core/transform/fragment.d.ts +21 -0
- package/dist/client/vdom/core/transform/hole.d.ts +13 -0
- package/dist/client/vdom/core/transform/index.d.ts +46 -0
- package/dist/client/vdom/core/transform/states.d.ts +22 -0
- package/dist/client/vdom/core/transform/table.d.ts +28 -0
- package/dist/client/vdom/core/transform/text.d.ts +10 -0
- package/dist/client/vdom/core/vnode.d.ts +45 -0
- package/dist/client/vdom/dev/effect-guard.d.ts +8 -0
- package/dist/client/vdom/hooks/ai-stream.d.ts +46 -0
- package/dist/client/vdom/hooks/basic.d.ts +42 -0
- package/dist/client/vdom/hooks/chat.d.ts +91 -0
- package/dist/client/vdom/hooks/controlled.d.ts +27 -0
- package/dist/client/vdom/hooks/drag-media.d.ts +52 -0
- package/dist/client/vdom/hooks/env.d.ts +119 -0
- package/dist/client/vdom/hooks/input.d.ts +43 -0
- package/dist/client/vdom/hooks/observe.d.ts +60 -0
- package/dist/client/vdom/hooks/popup-manager.d.ts +92 -0
- package/dist/client/vdom/hooks/popup.d.ts +52 -0
- package/dist/client/vdom/hooks/stable.d.ts +45 -0
- package/dist/client/vdom/index.d.ts +67 -0
- package/dist/client/vdom/index.js +8 -0
- package/dist/client/vdom/jsx-runtime.d.ts +28 -0
- package/dist/client/vdom/jsx-runtime.js +1 -0
- package/dist/client/vdom/middlewares/api.d.ts +38 -0
- package/dist/client/vdom/middlewares/auth-i18n.d.ts +66 -0
- package/dist/client/vdom/middlewares/ws.d.ts +37 -0
- package/dist/client/vdom/store.d.ts +49 -0
- package/dist/client/vdom/testing.d.ts +46 -0
- package/dist/client/vdom/testing.js +2 -0
- package/dist/dev/index.d.ts +12 -0
- package/dist/dev/index.js +4 -4
- package/dist/{ai → server/ai}/contracts.d.ts +1 -1
- package/dist/{ai → server/ai}/index.d.ts +2 -2
- package/dist/{ai → server/ai}/types.d.ts +1 -1
- package/dist/{core → server/core}/router.d.ts +2 -4
- package/dist/{db → server/db}/contracts.d.ts +1 -1
- package/dist/server/db/postgres-server.d.ts +37 -0
- package/dist/server/db/redis-server.d.ts +32 -0
- package/dist/server/db/server.d.ts +30 -0
- package/dist/server/db/test-servers.d.ts +21 -0
- package/dist/{email → server/email}/contracts.d.ts +1 -1
- package/dist/{index.js → server/index.js} +3145 -2487
- package/dist/{ui → server/ui}/index.d.ts +2 -2
- package/dist/{user → server/user}/token.d.ts +1 -1
- package/dist/shared/router/trie.d.ts +61 -0
- package/docs/components-map.md +5 -5
- package/docs/style-guide.md +14 -2
- package/examples/apps/admin/README.md +23 -0
- package/examples/apps/admin/api.ts +27 -0
- package/examples/apps/admin/app.tsx +144 -0
- package/examples/apps/admin/main.tsx +8 -0
- package/examples/apps/admin/server.ts +37 -0
- package/examples/apps/auth/README.md +23 -0
- package/examples/apps/auth/api.ts +49 -0
- package/examples/apps/auth/app.tsx +137 -0
- package/examples/apps/auth/main.tsx +8 -0
- package/examples/apps/auth/server.ts +37 -0
- package/examples/apps/multi/README.md +23 -0
- package/examples/apps/multi/app.tsx +83 -0
- package/examples/apps/multi/main.tsx +8 -0
- package/examples/apps/multi/server.ts +33 -0
- package/examples/apps/todo/README.md +23 -0
- package/examples/apps/todo/api.ts +26 -0
- package/examples/apps/todo/app.tsx +128 -0
- package/examples/apps/todo/main.tsx +9 -0
- package/examples/apps/todo/server.ts +39 -0
- package/examples/hello-world/README.md +9 -0
- package/examples/hello-world/client.ts +14 -0
- package/examples/hello-world/routes.tsx +26 -0
- package/examples/hello-world/server.ts +46 -0
- package/examples/patterns/AppShell.tsx +224 -0
- package/examples/patterns/Dashboard.tsx +153 -0
- package/examples/patterns/DataScreen.tsx +104 -0
- package/examples/patterns/DetailPage.tsx +79 -0
- package/examples/patterns/Docs.tsx +105 -0
- package/examples/patterns/FocusTask.tsx +67 -0
- package/examples/patterns/Landing.tsx +90 -0
- package/examples/patterns/ListPage.tsx +77 -0
- package/examples/patterns/Mobile.tsx +154 -0
- package/examples/patterns/SettingsPage.tsx +98 -0
- package/examples/patterns/SplitWorkspace.tsx +113 -0
- package/package.json +61 -29
- package/dist/components/Slider/Slider.d.ts +0 -19
- package/dist/components/Tabs/Tabs.d.ts +0 -12
- package/dist/components/index.js +0 -55
- package/dist/ui-dom/Confirm.d.ts +0 -8
- package/dist/ui-dom/Notification.d.ts +0 -8
- package/dist/ui-dom/Toast.d.ts +0 -8
- package/dist/ui-dom/ai.d.ts +0 -59
- package/dist/ui-dom/browser.d.ts +0 -10
- package/dist/ui-dom/debug.d.ts +0 -21
- package/dist/ui-dom/hooks/chat.d.ts +0 -11
- package/dist/ui-dom/hooks/events.d.ts +0 -30
- package/dist/ui-dom/hooks/external.d.ts +0 -20
- package/dist/ui-dom/hooks/index.d.ts +0 -29
- package/dist/ui-dom/hooks/input.d.ts +0 -33
- package/dist/ui-dom/hooks/media.d.ts +0 -17
- package/dist/ui-dom/hooks/popup.d.ts +0 -30
- package/dist/ui-dom/hooks/stable.d.ts +0 -35
- package/dist/ui-dom/hooks/types.d.ts +0 -77
- package/dist/ui-dom/i18n.d.ts +0 -31
- package/dist/ui-dom/index.d.ts +0 -47
- package/dist/ui-dom/index.js +0 -41
- package/dist/ui-dom/jsx-runtime.d.ts +0 -4
- package/dist/ui-dom/jsx-runtime.js +0 -1
- package/dist/ui-dom/locale/en_US.d.ts +0 -69
- package/dist/ui-dom/locale/zh_CN.d.ts +0 -69
- package/dist/ui-dom/middleware/api.d.ts +0 -91
- package/dist/ui-dom/middleware/auth.d.ts +0 -30
- package/dist/ui-dom/middleware/ws.d.ts +0 -33
- package/dist/ui-dom/motion.d.ts +0 -8
- package/dist/ui-dom/popup-tracker.d.ts +0 -36
- package/dist/ui-dom/popup.d.ts +0 -42
- package/dist/ui-dom/store.d.ts +0 -24
- package/dist/ui-dom/testing.d.ts +0 -68
- package/dist/ui-dom/testing.js +0 -7
- package/dist/ui-dom/types.d.ts +0 -634
- package/dist/ui-dom/use-chat.d.ts +0 -95
- package/dist/ui-dom/vdom3/README.d.ts +0 -32
- package/dist/ui-dom/vdom3/app.d.ts +0 -20
- package/dist/ui-dom/vdom3/audit.d.ts +0 -29
- package/dist/ui-dom/vdom3/build.d.ts +0 -20
- package/dist/ui-dom/vdom3/commands.d.ts +0 -21
- package/dist/ui-dom/vdom3/comp-index.d.ts +0 -18
- package/dist/ui-dom/vdom3/delegate.d.ts +0 -53
- package/dist/ui-dom/vdom3/events.d.ts +0 -17
- package/dist/ui-dom/vdom3/index.d.ts +0 -42
- package/dist/ui-dom/vdom3/jsx.d.ts +0 -32
- package/dist/ui-dom/vdom3/record.d.ts +0 -16
- package/dist/ui-dom/vdom3/registry.d.ts +0 -30
- package/dist/ui-dom/vdom3/render.d.ts +0 -39
- package/dist/ui-dom/vdom3/replay.d.ts +0 -28
- package/dist/ui-dom/vdom3/root.d.ts +0 -24
- package/dist/ui-dom/vdom3/router.d.ts +0 -31
- package/dist/ui-dom/vdom3/scheduler.d.ts +0 -23
- package/dist/ui-dom/vdom3/ssr.d.ts +0 -27
- package/dist/ui-dom/vdom3/sync.d.ts +0 -22
- package/dist/ui-dom/vdom3/types.d.ts +0 -173
- package/dist/ui-dom/vdom3/ui.d.ts +0 -16
- package/dist/ui-dom/vdom3.js +0 -41
- package/dist/ui-dom/vnode.d.ts +0 -13
- /package/dist/{make-executable-schema.test.d.ts → cli/content-sync.test.d.ts} +0 -0
- /package/dist/{ui-dom/testing.test.d.ts → cli/docs-cli.test.d.ts} +0 -0
- /package/dist/{components → client/components}/CodeBlock/highlight.d.ts +0 -0
- /package/dist/{components → client/components}/DatePicker/calendar-utils.d.ts +0 -0
- /package/dist/{components → client/components}/DiffView/diff-utils.d.ts +0 -0
- /package/dist/{components → client/components}/Editor/edit-events.d.ts +0 -0
- /package/dist/{components → client/components}/Editor/model/apply.d.ts +0 -0
- /package/dist/{components → client/components}/Editor/model/diff.d.ts +0 -0
- /package/dist/{components → client/components}/Editor/model/dom.d.ts +0 -0
- /package/dist/{components → client/components}/Editor/model/history.d.ts +0 -0
- /package/dist/{components → client/components}/Editor/model/html.d.ts +0 -0
- /package/dist/{components → client/components}/Editor/model/inverse.d.ts +0 -0
- /package/dist/{components → client/components}/Editor/model/types.d.ts +0 -0
- /package/dist/{components → client/components}/Editor/tools/table.d.ts +0 -0
- /package/dist/{components → client/components}/Editor/tools/types.d.ts +0 -0
- /package/dist/{components → client/components}/FilePreview/markdown.d.ts +0 -0
- /package/dist/{components → client/components}/Markdown/parser.d.ts +0 -0
- /package/dist/{components → client/components}/OfficeEditor/ai/ai-bridge.d.ts +0 -0
- /package/dist/{components → client/components}/OfficeEditor/model/apply.d.ts +0 -0
- /package/dist/{components → client/components}/OfficeEditor/model/types.d.ts +0 -0
- /package/dist/{components → client/components}/Pipeline/dag-utils.d.ts +0 -0
- /package/dist/{components → client/components}/QRCode/qr.d.ts +0 -0
- /package/dist/{components → client/components}/Sparkline/sparkline-utils.d.ts +0 -0
- /package/dist/{office → client/office}/docx.d.ts +0 -0
- /package/dist/{office → client/office}/pptx.d.ts +0 -0
- /package/dist/{office → client/office}/xlsx.d.ts +0 -0
- /package/dist/{office → client/office}/xml.d.ts +0 -0
- /package/dist/{office → client/office}/zip.d.ts +0 -0
- /package/dist/{ai → server/ai}/agent.d.ts +0 -0
- /package/dist/{ai → server/ai}/client.d.ts +0 -0
- /package/dist/{ai → server/ai}/sse.d.ts +0 -0
- /package/dist/{core → server/core}/serve.d.ts +0 -0
- /package/dist/{core → server/core}/ws.d.ts +0 -0
- /package/dist/{db → server/db}/errors.d.ts +0 -0
- /package/dist/{db → server/db}/memory-redis.d.ts +0 -0
- /package/dist/{db → server/db}/memory-sql.d.ts +0 -0
- /package/dist/{db → server/db}/postgres/connection.d.ts +0 -0
- /package/dist/{db → server/db}/postgres/pool.d.ts +0 -0
- /package/dist/{db → server/db}/postgres/protocol.d.ts +0 -0
- /package/dist/{db → server/db}/postgres/schema.d.ts +0 -0
- /package/dist/{db → server/db}/query-builder.d.ts +0 -0
- /package/dist/{db → server/db}/query.d.ts +0 -0
- /package/dist/{db → server/db}/redis/client.d.ts +0 -0
- /package/dist/{db → server/db}/redis/commands.d.ts +0 -0
- /package/dist/{db → server/db}/redis/connection.d.ts +0 -0
- /package/dist/{db → server/db}/redis/pipeline.d.ts +0 -0
- /package/dist/{db → server/db}/redis/pool.d.ts +0 -0
- /package/dist/{db → server/db}/redis/resp.d.ts +0 -0
- /package/dist/{db → server/db}/redis/subscriber.d.ts +0 -0
- /package/dist/{db → server/db}/sql-parser.d.ts +0 -0
- /package/dist/{email → server/email}/index.d.ts +0 -0
- /package/dist/{email → server/email}/smtp.d.ts +0 -0
- /package/dist/{graphql.d.ts → server/graphql.d.ts} +0 -0
- /package/dist/{index.d.ts → server/index.d.ts} +0 -0
- /package/dist/{make-executable-schema.d.ts → server/make-executable-schema.d.ts} +0 -0
- /package/dist/{messager → server/messager}/index.d.ts +0 -0
- /package/dist/{middleware → server/middleware}/cors.d.ts +0 -0
- /package/dist/{middleware → server/middleware}/rate-limit.d.ts +0 -0
- /package/dist/{middleware → server/middleware}/static.d.ts +0 -0
- /package/dist/{postgres → server/postgres}/client.d.ts +0 -0
- /package/dist/{postgres → server/postgres}/index.d.ts +0 -0
- /package/dist/{postgres → server/postgres}/types.d.ts +0 -0
- /package/dist/{queue → server/queue}/index.d.ts +0 -0
- /package/dist/{redis → server/redis}/client.d.ts +0 -0
- /package/dist/{redis → server/redis}/index.d.ts +0 -0
- /package/dist/{redis → server/redis}/types.d.ts +0 -0
- /package/dist/{request.d.ts → server/request.d.ts} +0 -0
- /package/dist/{response.d.ts → server/response.d.ts} +0 -0
- /package/dist/{scheduler → server/scheduler}/cron.d.ts +0 -0
- /package/dist/{scheduler → server/scheduler}/index.d.ts +0 -0
- /package/dist/{types.d.ts → server/types.d.ts} +0 -0
- /package/dist/{ui → server/ui}/html-safe.d.ts +0 -0
- /package/dist/{user → server/user}/index.d.ts +0 -0
- /package/dist/{user → server/user}/password.d.ts +0 -0
|
@@ -160,9 +160,13 @@
|
|
|
160
160
|
/* 浮层面板底色(surface-2/3:浮层/模态——亮色同 bg 靠阴影区分,暗色抬升一级见 _dark.css) */
|
|
161
161
|
--wf-color-bg-elevated: var(--wf-color-bg);
|
|
162
162
|
|
|
163
|
-
/* ── 字体 ──
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
/* ── 字体 ──
|
|
164
|
+
* 西文优先(拉丁字形平台最优),CJK 显式回退(中文原生:PingFang/苹方、
|
|
165
|
+
* Hiragino/冬青、雅黑、思源 Noto Sans SC——三平台中文渲染一致) */
|
|
166
|
+
--wf-font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
|
|
167
|
+
'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Noto Sans SC', sans-serif;
|
|
168
|
+
--wf-font-mono: 'SF Mono', 'Fira Code', 'JetBrains Mono',
|
|
169
|
+
'PingFang SC', 'Microsoft YaHei', monospace;
|
|
166
170
|
|
|
167
171
|
--wf-font-size-xs: 12px;
|
|
168
172
|
--wf-font-size-sm: 13px;
|
|
@@ -196,9 +200,11 @@
|
|
|
196
200
|
变暗不可见,primary 是亮蓝——明暗主题聚焦均可见) ── */
|
|
197
201
|
--wf-focus-ring: 0 0 0 2px var(--wf-color-primary-bg), 0 0 0 1px var(--wf-color-primary);
|
|
198
202
|
|
|
199
|
-
/* ── 动效 ──
|
|
200
|
-
|
|
201
|
-
|
|
203
|
+
/* ── 动效 ──
|
|
204
|
+
* --wf-transition 为派生别名(hover 类过渡统一走 dur-fast + ease-out——微流明标准节奏)。
|
|
205
|
+
* 旧 --wf-transition-duration/timing 保留为兼容(不建议新引用——新代码直接用 --wf-dur-* 系列) */
|
|
206
|
+
--wf-transition-duration: var(--wf-dur-fast);
|
|
207
|
+
--wf-transition-timing: var(--wf-ease-out);
|
|
202
208
|
--wf-transition: var(--wf-transition-duration) var(--wf-transition-timing);
|
|
203
209
|
|
|
204
210
|
/* ── 动效语言:时长阶梯 + 缓动曲线 + 位移量(组件动效统一引用,不各自硬编码) ── */
|
|
@@ -217,6 +223,12 @@
|
|
|
217
223
|
--wf-motion-md: 8px;
|
|
218
224
|
--wf-motion-lg: 24px; /* drawer 全幅位移 */
|
|
219
225
|
|
|
226
|
+
/* 循环动效族(旋转/呼吸/闪烁/进度——时长阶梯之外的循环节拍——S5 审计强制引用) */
|
|
227
|
+
--wf-dur-spin: 0.6s; /* 旋转(spinner/loading/折叠) */
|
|
228
|
+
--wf-dur-pulse: 1.2s; /* 呼吸脉冲(在线点/骨架/思考) */
|
|
229
|
+
--wf-dur-blink: 1.1s; /* 光标闪烁(流式光标/AI 回复) */
|
|
230
|
+
--wf-dur-progress: 1.4s; /* 不确定进度循环(indeterminate) */
|
|
231
|
+
|
|
220
232
|
/* ── 色彩 — 信息(补充) ── */
|
|
221
233
|
--wf-color-info: var(--wf-sky-500);
|
|
222
234
|
--wf-color-info-bg: var(--wf-sky-50);
|
|
@@ -274,6 +286,7 @@
|
|
|
274
286
|
--wf-letter-spacing: normal;
|
|
275
287
|
--wf-letter-spacing-wide: 0.5px;
|
|
276
288
|
--wf-letter-spacing-wider: 1px;
|
|
289
|
+
--wf-heading-display-tracking: -0.5px; /* 顶级标题 display 档窄字距(PageHeader display——CJK 可覆盖) */
|
|
277
290
|
|
|
278
291
|
/* ── 数字 ── */
|
|
279
292
|
--wf-nums: 'tabular-nums'; /* 数字等宽(统计/表格数值防抖动) */
|
|
@@ -721,6 +734,34 @@ body.wf-dragging {
|
|
|
721
734
|
user-select: none;
|
|
722
735
|
-webkit-user-select: none;
|
|
723
736
|
}
|
|
737
|
+
|
|
738
|
+
/* ── 微流明 · 进行态语言:stream-in 内容渐显(AI 回复/流式列表/hero 元素) ──
|
|
739
|
+
* 微流明设计语言三支柱之二(design/design-language.md)——"进行中"是可见的流
|
|
740
|
+
* 用法:元素加 wf-stream-in 类(opacity 0→1 + 上移 4px)
|
|
741
|
+
*/
|
|
742
|
+
@keyframes wf-stream-in {
|
|
743
|
+
from { opacity: 0; transform: translateY(4px); }
|
|
744
|
+
to { opacity: 1; transform: translateY(0); }
|
|
745
|
+
}
|
|
746
|
+
.wf-stream-in {
|
|
747
|
+
animation: wf-stream-in var(--wf-dur-base) var(--wf-ease-out) both;
|
|
748
|
+
}
|
|
749
|
+
@media (prefers-reduced-motion: reduce) {
|
|
750
|
+
.wf-stream-in {
|
|
751
|
+
animation-duration: 0.01ms;
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
/* ── 首页 hero 打字机光标(微流明·进行态——reduced-motion 由下方降级块处理) ── */
|
|
756
|
+
.wf-hero-cursor {
|
|
757
|
+
animation: wf-hero-blink 1s step-end infinite;
|
|
758
|
+
color: var(--wf-color-primary);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
@keyframes wf-hero-blink {
|
|
762
|
+
0%, 100% { opacity: 1; }
|
|
763
|
+
50% { opacity: 0; }
|
|
764
|
+
}
|
|
724
765
|
}
|
|
725
766
|
|
|
726
767
|
@layer layout {
|
|
@@ -1004,6 +1045,11 @@ body.wf-dragging {
|
|
|
1004
1045
|
background: var(--wf-surface-bg);
|
|
1005
1046
|
}
|
|
1006
1047
|
|
|
1048
|
+
/* 平面表面(M4 表面语言——静态卡片/面板组合 wf-border 用:阴影仅抬升语义) */
|
|
1049
|
+
.wf-surface--flat {
|
|
1050
|
+
box-shadow: none;
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1007
1053
|
/* ── 背景色工具 — 引用语义 Token,免自定义 CSS ── */
|
|
1008
1054
|
.wf-bg-secondary { background: var(--wf-color-bg-secondary); }
|
|
1009
1055
|
.wf-bg-tertiary { background: var(--wf-color-bg-tertiary); }
|
|
@@ -1494,6 +1540,14 @@ body.wf-dragging {
|
|
|
1494
1540
|
/* 内容高于视口时在主区内滚动(壳固定视口高度后的唯一滚动出口) */
|
|
1495
1541
|
overflow-y: auto;
|
|
1496
1542
|
background: var(--wf-color-bg);
|
|
1543
|
+
/* 行宽约束(P5):默认 none 全宽(聊天/表格等全宽应用零影响);
|
|
1544
|
+
文档站/长文本场景设 --wf-main-max: 900px——直接子元素限宽居中 */
|
|
1545
|
+
--wf-main-max: none;
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
.wf-main > * {
|
|
1549
|
+
max-width: var(--wf-main-max);
|
|
1550
|
+
margin-inline: auto;
|
|
1497
1551
|
}
|
|
1498
1552
|
|
|
1499
1553
|
/* ── 触屏:导航项 44px 命中区 ── */
|
|
@@ -1796,6 +1850,10 @@ body.wf-dragging {
|
|
|
1796
1850
|
background: var(--wf-color-bg-tertiary);
|
|
1797
1851
|
}
|
|
1798
1852
|
|
|
1853
|
+
.wf-accordion-summary:active {
|
|
1854
|
+
background: var(--wf-state-pressed);
|
|
1855
|
+
}
|
|
1856
|
+
|
|
1799
1857
|
.wf-accordion-arrow {
|
|
1800
1858
|
transition: transform var(--wf-dur-base) var(--wf-ease-out);
|
|
1801
1859
|
color: var(--wf-color-text-secondary);
|
|
@@ -1819,6 +1877,157 @@ body.wf-dragging {
|
|
|
1819
1877
|
|
|
1820
1878
|
.wf-accordion-summary[disabled] { opacity: 0.5; cursor: not-allowed; }
|
|
1821
1879
|
|
|
1880
|
+
/* weifuwu/components — ActionSheet 动作面板(移动端底部滑出) */
|
|
1881
|
+
|
|
1882
|
+
.wf-actionsheet {
|
|
1883
|
+
position: fixed;
|
|
1884
|
+
inset: 0;
|
|
1885
|
+
z-index: var(--wf-z-popover);
|
|
1886
|
+
display: flex;
|
|
1887
|
+
flex-direction: column;
|
|
1888
|
+
justify-content: flex-end;
|
|
1889
|
+
padding: var(--wf-space-md);
|
|
1890
|
+
}
|
|
1891
|
+
|
|
1892
|
+
/* 遮罩(禁裸 rgba——audit 强制) */
|
|
1893
|
+
.wf-actionsheet-overlay {
|
|
1894
|
+
position: absolute;
|
|
1895
|
+
inset: 0;
|
|
1896
|
+
background: var(--wf-overlay);
|
|
1897
|
+
border: none;
|
|
1898
|
+
cursor: pointer;
|
|
1899
|
+
}
|
|
1900
|
+
|
|
1901
|
+
/* 面板:底部滑出(enter/exit 成对——audit 强制) */
|
|
1902
|
+
.wf-actionsheet-panel {
|
|
1903
|
+
position: relative;
|
|
1904
|
+
background: var(--wf-color-bg-elevated);
|
|
1905
|
+
border-radius: var(--wf-radius-lg);
|
|
1906
|
+
overflow: hidden;
|
|
1907
|
+
box-shadow: var(--wf-shadow-lg);
|
|
1908
|
+
}
|
|
1909
|
+
|
|
1910
|
+
.wf-actionsheet--enter .wf-actionsheet-panel {
|
|
1911
|
+
animation: wf-actionsheet-slidein var(--wf-dur-base) var(--wf-ease-out);
|
|
1912
|
+
}
|
|
1913
|
+
|
|
1914
|
+
.wf-actionsheet--exit .wf-actionsheet-panel {
|
|
1915
|
+
animation: wf-actionsheet-slideout var(--wf-dur-base) var(--wf-ease-in);
|
|
1916
|
+
}
|
|
1917
|
+
|
|
1918
|
+
.wf-actionsheet--enter .wf-actionsheet-overlay {
|
|
1919
|
+
animation: wf-actionsheet-overlay-fadein var(--wf-dur-fast) var(--wf-ease-out);
|
|
1920
|
+
}
|
|
1921
|
+
|
|
1922
|
+
.wf-actionsheet--exit .wf-actionsheet-overlay {
|
|
1923
|
+
animation: wf-actionsheet-overlay-fadeout var(--wf-dur-fast) var(--wf-ease-in);
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1926
|
+
@keyframes wf-actionsheet-slidein {
|
|
1927
|
+
from { transform: translateY(100%); }
|
|
1928
|
+
to { transform: translateY(0); }
|
|
1929
|
+
}
|
|
1930
|
+
|
|
1931
|
+
@keyframes wf-actionsheet-slideout {
|
|
1932
|
+
from { transform: translateY(0); }
|
|
1933
|
+
to { transform: translateY(100%); }
|
|
1934
|
+
}
|
|
1935
|
+
|
|
1936
|
+
@keyframes wf-actionsheet-overlay-fadein {
|
|
1937
|
+
from { opacity: 0; }
|
|
1938
|
+
to { opacity: 1; }
|
|
1939
|
+
}
|
|
1940
|
+
|
|
1941
|
+
@keyframes wf-actionsheet-overlay-fadeout {
|
|
1942
|
+
from { opacity: 1; }
|
|
1943
|
+
to { opacity: 0; }
|
|
1944
|
+
}
|
|
1945
|
+
|
|
1946
|
+
.wf-actionsheet-title {
|
|
1947
|
+
padding: var(--wf-space-md);
|
|
1948
|
+
text-align: center;
|
|
1949
|
+
font-size: var(--wf-font-size-sm);
|
|
1950
|
+
color: var(--wf-color-text-secondary);
|
|
1951
|
+
border-bottom: 1px solid var(--wf-color-border-light);
|
|
1952
|
+
}
|
|
1953
|
+
|
|
1954
|
+
/* 项:固定 min/max-height(§5.6——全局 button min-height:36px 防撑高) */
|
|
1955
|
+
.wf-actionsheet-item {
|
|
1956
|
+
display: flex;
|
|
1957
|
+
align-items: center;
|
|
1958
|
+
justify-content: center;
|
|
1959
|
+
gap: var(--wf-gap-xs);
|
|
1960
|
+
width: 100%;
|
|
1961
|
+
min-height: 48px;
|
|
1962
|
+
max-height: 48px;
|
|
1963
|
+
padding: 0 var(--wf-space-md);
|
|
1964
|
+
background: transparent;
|
|
1965
|
+
border: none;
|
|
1966
|
+
border-bottom: 1px solid var(--wf-color-border-light);
|
|
1967
|
+
font-size: var(--wf-font-size-base);
|
|
1968
|
+
color: var(--wf-color-text);
|
|
1969
|
+
cursor: pointer;
|
|
1970
|
+
transition: background-color var(--wf-dur-fast) var(--wf-ease-out);
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1973
|
+
.wf-actionsheet-item:hover:not(:disabled) {
|
|
1974
|
+
background: var(--wf-state-hover);
|
|
1975
|
+
}
|
|
1976
|
+
|
|
1977
|
+
.wf-actionsheet-item:active:not(:disabled) {
|
|
1978
|
+
background: var(--wf-state-pressed);
|
|
1979
|
+
}
|
|
1980
|
+
|
|
1981
|
+
.wf-actionsheet-item:focus-visible {
|
|
1982
|
+
outline: none;
|
|
1983
|
+
box-shadow: var(--wf-focus-ring);
|
|
1984
|
+
}
|
|
1985
|
+
|
|
1986
|
+
.wf-actionsheet-item--danger {
|
|
1987
|
+
color: var(--wf-color-error-text);
|
|
1988
|
+
}
|
|
1989
|
+
|
|
1990
|
+
.wf-actionsheet-item--disabled {
|
|
1991
|
+
color: var(--wf-color-text-disabled);
|
|
1992
|
+
cursor: not-allowed;
|
|
1993
|
+
}
|
|
1994
|
+
|
|
1995
|
+
/* 分隔(取消按钮上方的结构分隔——细边框美学) */
|
|
1996
|
+
.wf-actionsheet-divider {
|
|
1997
|
+
height: 8px;
|
|
1998
|
+
background: var(--wf-color-bg-secondary);
|
|
1999
|
+
}
|
|
2000
|
+
|
|
2001
|
+
.wf-actionsheet-cancel {
|
|
2002
|
+
width: 100%;
|
|
2003
|
+
min-height: 48px;
|
|
2004
|
+
max-height: 48px;
|
|
2005
|
+
background: transparent;
|
|
2006
|
+
border: none;
|
|
2007
|
+
font-size: var(--wf-font-size-base);
|
|
2008
|
+
font-weight: var(--wf-font-weight-semibold);
|
|
2009
|
+
color: var(--wf-color-text-secondary);
|
|
2010
|
+
cursor: pointer;
|
|
2011
|
+
transition: background-color var(--wf-dur-fast) var(--wf-ease-out);
|
|
2012
|
+
}
|
|
2013
|
+
|
|
2014
|
+
.wf-actionsheet-cancel:hover {
|
|
2015
|
+
background: var(--wf-state-hover);
|
|
2016
|
+
}
|
|
2017
|
+
|
|
2018
|
+
.wf-actionsheet-cancel:active {
|
|
2019
|
+
background: var(--wf-state-pressed);
|
|
2020
|
+
}
|
|
2021
|
+
|
|
2022
|
+
.wf-actionsheet-cancel:focus-visible {
|
|
2023
|
+
outline: none;
|
|
2024
|
+
box-shadow: var(--wf-focus-ring);
|
|
2025
|
+
}
|
|
2026
|
+
|
|
2027
|
+
.wf-actionsheet-icon {
|
|
2028
|
+
color: inherit;
|
|
2029
|
+
}
|
|
2030
|
+
|
|
1822
2031
|
/* weifuwu/components — Affix */
|
|
1823
2032
|
|
|
1824
2033
|
.wf-affix {
|
|
@@ -2013,7 +2222,7 @@ body.wf-dragging {
|
|
|
2013
2222
|
|
|
2014
2223
|
.wf-alertgroup-time {
|
|
2015
2224
|
color: var(--wf-color-text-tertiary);
|
|
2016
|
-
font-size: 12px
|
|
2225
|
+
font-size: var(--wf-font-size-xs); /* 12px 同值 token 化——compact 预设可缩放 */
|
|
2017
2226
|
}
|
|
2018
2227
|
|
|
2019
2228
|
.wf-alertgroup-close {
|
|
@@ -2077,6 +2286,87 @@ body.wf-dragging {
|
|
|
2077
2286
|
box-shadow: var(--wf-focus-ring);
|
|
2078
2287
|
}
|
|
2079
2288
|
|
|
2289
|
+
/* weifuwu/components — AppShell(应用壳——品牌区/用户区细节——栅格复用 layout app-shell)
|
|
2290
|
+
* M1:旧 token 体系迁移(--wf-text-tertiary/--wf-bg-hover → 语义 token)+
|
|
2291
|
+
* CJK 感知(heading case/tracking 引用 token)+ 循环动效 token。
|
|
2292
|
+
*/
|
|
2293
|
+
.wf-app-shell-brand-text {
|
|
2294
|
+
display: flex;
|
|
2295
|
+
flex-direction: column;
|
|
2296
|
+
min-width: 0;
|
|
2297
|
+
}
|
|
2298
|
+
.wf-app-shell-brand-name {
|
|
2299
|
+
font-size: var(--wf-font-size-base);
|
|
2300
|
+
font-weight: var(--wf-font-weight-semibold);
|
|
2301
|
+
line-height: var(--wf-line-height-tight);
|
|
2302
|
+
white-space: nowrap;
|
|
2303
|
+
overflow: hidden;
|
|
2304
|
+
text-overflow: ellipsis;
|
|
2305
|
+
}
|
|
2306
|
+
.wf-app-shell-brand-sub {
|
|
2307
|
+
font-size: var(--wf-font-size-xs);
|
|
2308
|
+
letter-spacing: var(--wf-heading-tracking); /* CJK 默认 0,英文可覆盖 */
|
|
2309
|
+
text-transform: var(--wf-heading-case); /* CJK 默认 none,英文可覆盖 uppercase */
|
|
2310
|
+
color: var(--wf-color-text-tertiary);
|
|
2311
|
+
white-space: nowrap;
|
|
2312
|
+
overflow: hidden;
|
|
2313
|
+
text-overflow: ellipsis;
|
|
2314
|
+
}
|
|
2315
|
+
.wf-app-shell-user {
|
|
2316
|
+
display: flex;
|
|
2317
|
+
align-items: center;
|
|
2318
|
+
justify-content: space-between;
|
|
2319
|
+
gap: var(--wf-gap-sm);
|
|
2320
|
+
padding: var(--wf-space-sm);
|
|
2321
|
+
}
|
|
2322
|
+
.wf-app-shell-user-info {
|
|
2323
|
+
display: flex;
|
|
2324
|
+
align-items: center;
|
|
2325
|
+
gap: var(--wf-gap-sm);
|
|
2326
|
+
min-width: 0;
|
|
2327
|
+
flex: 1;
|
|
2328
|
+
}
|
|
2329
|
+
.wf-app-shell-user-meta {
|
|
2330
|
+
display: flex;
|
|
2331
|
+
flex-direction: column;
|
|
2332
|
+
min-width: 0;
|
|
2333
|
+
}
|
|
2334
|
+
.wf-app-shell-user-name {
|
|
2335
|
+
font-size: var(--wf-font-size-sm);
|
|
2336
|
+
font-weight: var(--wf-font-weight-semibold);
|
|
2337
|
+
white-space: nowrap;
|
|
2338
|
+
overflow: hidden;
|
|
2339
|
+
text-overflow: ellipsis;
|
|
2340
|
+
}
|
|
2341
|
+
.wf-app-shell-user-mail {
|
|
2342
|
+
font-size: var(--wf-font-size-xs);
|
|
2343
|
+
color: var(--wf-color-text-tertiary);
|
|
2344
|
+
white-space: nowrap;
|
|
2345
|
+
overflow: hidden;
|
|
2346
|
+
text-overflow: ellipsis;
|
|
2347
|
+
}
|
|
2348
|
+
.wf-app-shell-user-actions {
|
|
2349
|
+
display: flex;
|
|
2350
|
+
align-items: center;
|
|
2351
|
+
gap: var(--wf-gap-xs);
|
|
2352
|
+
flex-shrink: 0;
|
|
2353
|
+
}
|
|
2354
|
+
.wf-app-shell-skel {
|
|
2355
|
+
height: var(--wf-space-md);
|
|
2356
|
+
border-radius: var(--wf-radius-sm);
|
|
2357
|
+
background: var(--wf-color-fill);
|
|
2358
|
+
animation: wf-app-shell-pulse var(--wf-dur-pulse) var(--wf-ease-in-out) infinite;
|
|
2359
|
+
}
|
|
2360
|
+
.wf-app-shell-skel--sm {
|
|
2361
|
+
width: 60%;
|
|
2362
|
+
height: var(--wf-space-sm);
|
|
2363
|
+
margin-top: var(--wf-gap-xs);
|
|
2364
|
+
}
|
|
2365
|
+
@keyframes wf-app-shell-pulse {
|
|
2366
|
+
0%, 100% { opacity: 0.5 }
|
|
2367
|
+
50% { opacity: 1 }
|
|
2368
|
+
}
|
|
2369
|
+
|
|
2080
2370
|
/* weifuwu/components — ApprovalCard */
|
|
2081
2371
|
|
|
2082
2372
|
.wf-approval {
|
|
@@ -2410,6 +2700,11 @@ body.wf-dragging {
|
|
|
2410
2700
|
.wf-breadcrumb-link:hover {
|
|
2411
2701
|
text-decoration: underline;
|
|
2412
2702
|
}
|
|
2703
|
+
.wf-breadcrumb-link:focus-visible {
|
|
2704
|
+
outline: none;
|
|
2705
|
+
border-radius: var(--wf-radius-xs);
|
|
2706
|
+
box-shadow: var(--wf-focus-ring);
|
|
2707
|
+
}
|
|
2413
2708
|
|
|
2414
2709
|
.wf-breadcrumb-current {
|
|
2415
2710
|
color: var(--wf-color-text);
|
|
@@ -2476,7 +2771,7 @@ body.wf-dragging {
|
|
|
2476
2771
|
border: 2px solid currentColor;
|
|
2477
2772
|
border-top-color: transparent;
|
|
2478
2773
|
border-radius: 50%;
|
|
2479
|
-
animation: wf-btn-spin
|
|
2774
|
+
animation: wf-btn-spin var(--wf-dur-spin) linear infinite;
|
|
2480
2775
|
flex-shrink: 0;
|
|
2481
2776
|
}
|
|
2482
2777
|
|
|
@@ -2642,8 +2937,10 @@ body.wf-dragging {
|
|
|
2642
2937
|
font-family: var(--wf-font-sans);
|
|
2643
2938
|
}
|
|
2644
2939
|
|
|
2940
|
+
/* 默认卡片:1px 细边框是设计主角(微流明·边界即结构——阴影仅抬升语义,
|
|
2941
|
+
* 提升由 .wf-elevate / hover 承担)。旧阴影观感可用 --wf-card-shadow 覆盖 / 自加 box-shadow */
|
|
2645
2942
|
.wf-card--default {
|
|
2646
|
-
|
|
2943
|
+
border: var(--wf-border-width) solid var(--wf-color-border);
|
|
2647
2944
|
}
|
|
2648
2945
|
|
|
2649
2946
|
.wf-card--outlined {
|
|
@@ -2658,10 +2955,13 @@ body.wf-dragging {
|
|
|
2658
2955
|
cursor: pointer;
|
|
2659
2956
|
}
|
|
2660
2957
|
|
|
2661
|
-
|
|
2662
|
-
|
|
2958
|
+
.wf-card--clickable:focus-visible {
|
|
2959
|
+
outline: none;
|
|
2960
|
+
box-shadow: var(--wf-focus-ring);
|
|
2663
2961
|
}
|
|
2664
2962
|
|
|
2963
|
+
/* hover 抬升由 .wf-elevate(_surface.css)承担:wf-card--hover 仅语义标记类(配合 Card hover prop) */
|
|
2964
|
+
|
|
2665
2965
|
/* 选中态 — 选择卡片(类型选择/模板选择) */
|
|
2666
2966
|
.wf-card--active {
|
|
2667
2967
|
border: var(--wf-border-width) solid var(--wf-color-primary);
|
|
@@ -3094,7 +3394,7 @@ body.wf-dragging {
|
|
|
3094
3394
|
}
|
|
3095
3395
|
|
|
3096
3396
|
.wf-chat-input:hover:not(:disabled) {
|
|
3097
|
-
border-color: var(--wf-color-primary
|
|
3397
|
+
border-color: var(--wf-color-primary);
|
|
3098
3398
|
}
|
|
3099
3399
|
|
|
3100
3400
|
/* 多行 textarea:自适应高度(行数由内容撑开) */
|
|
@@ -3422,6 +3722,18 @@ body.wf-dragging {
|
|
|
3422
3722
|
.wf-hl-jsx-tag { color: var(--wf-color-error-text); }
|
|
3423
3723
|
.wf-hl-operator { color: var(--wf-color-text-tertiary); }
|
|
3424
3724
|
|
|
3725
|
+
.wf-codeeditor {
|
|
3726
|
+
width: 100%;
|
|
3727
|
+
}
|
|
3728
|
+
.wf-codeeditor-area {
|
|
3729
|
+
width: 100%;
|
|
3730
|
+
color: var(--wf-color-text);
|
|
3731
|
+
}
|
|
3732
|
+
.wf-codeeditor-gutter {
|
|
3733
|
+
border-right: 1px solid var(--wf-color-border);
|
|
3734
|
+
background: var(--wf-color-bg-secondary);
|
|
3735
|
+
}
|
|
3736
|
+
|
|
3425
3737
|
/* weifuwu/components — Collapse */
|
|
3426
3738
|
|
|
3427
3739
|
.wf-collapse {
|
|
@@ -3495,7 +3807,7 @@ body.wf-dragging {
|
|
|
3495
3807
|
align-items: center;
|
|
3496
3808
|
gap: var(--wf-gap-xs);
|
|
3497
3809
|
color: var(--wf-color-text-tertiary);
|
|
3498
|
-
animation: wf-collapse-spin
|
|
3810
|
+
animation: wf-collapse-spin var(--wf-dur-spin) linear infinite;
|
|
3499
3811
|
}
|
|
3500
3812
|
|
|
3501
3813
|
@keyframes wf-collapse-spin {
|
|
@@ -4226,7 +4538,7 @@ body.wf-dragging {
|
|
|
4226
4538
|
overflow: hidden;
|
|
4227
4539
|
background: var(--wf-color-bg);
|
|
4228
4540
|
font-family: var(--wf-font-mono);
|
|
4229
|
-
font-size: 13px
|
|
4541
|
+
font-size: var(--wf-font-size-sm); /* 13px 同值 token 化——compact 预设可缩放 */
|
|
4230
4542
|
line-height: 1.6;
|
|
4231
4543
|
min-width: 0;
|
|
4232
4544
|
}
|
|
@@ -4239,7 +4551,7 @@ body.wf-dragging {
|
|
|
4239
4551
|
padding: 8px 12px;
|
|
4240
4552
|
background: var(--wf-color-fill);
|
|
4241
4553
|
border-bottom: 1px solid var(--wf-color-border);
|
|
4242
|
-
font-size: 12px
|
|
4554
|
+
font-size: var(--wf-font-size-xs); /* 12px 同值 token 化——compact 预设可缩放 */
|
|
4243
4555
|
flex-shrink: 0;
|
|
4244
4556
|
}
|
|
4245
4557
|
.wf-diffview-title--old {
|
|
@@ -4299,7 +4611,7 @@ body.wf-dragging {
|
|
|
4299
4611
|
border: 1px dashed var(--wf-color-border);
|
|
4300
4612
|
border-radius: var(--wf-radius-sm);
|
|
4301
4613
|
color: var(--wf-color-text-secondary);
|
|
4302
|
-
font-size: 12px
|
|
4614
|
+
font-size: var(--wf-font-size-xs); /* 12px 同值 token 化——compact 预设可缩放 */
|
|
4303
4615
|
cursor: pointer;
|
|
4304
4616
|
background: var(--wf-color-bg-subtle);
|
|
4305
4617
|
user-select: none;
|
|
@@ -4312,7 +4624,7 @@ body.wf-dragging {
|
|
|
4312
4624
|
.wf-diffview-overflow {
|
|
4313
4625
|
padding: 8px 12px;
|
|
4314
4626
|
color: var(--wf-color-text-tertiary);
|
|
4315
|
-
font-size: 12px
|
|
4627
|
+
font-size: var(--wf-font-size-xs); /* 12px 同值 token 化——compact 预设可缩放 */
|
|
4316
4628
|
text-align: center;
|
|
4317
4629
|
}
|
|
4318
4630
|
|
|
@@ -4527,8 +4839,9 @@ body.wf-dragging {
|
|
|
4527
4839
|
box-shadow: var(--wf-shadow-md);
|
|
4528
4840
|
z-index: var(--wf-z-dropdown);
|
|
4529
4841
|
padding: var(--wf-space-xs) 0;
|
|
4530
|
-
|
|
4531
|
-
|
|
4842
|
+
/* **真实 bug**:JS 坐标定位(fixed top/left——usePopup 计算)——transform
|
|
4843
|
+
残留(旧 CSS 居中方案)把面板推移(-50% 宽度)——视口外不可见(下拉
|
|
4844
|
+
出现在左上角——agent-browser 实测:rect -70,0)——删除 */
|
|
4532
4845
|
}
|
|
4533
4846
|
|
|
4534
4847
|
.wf-dropdown--open {
|
|
@@ -4634,7 +4947,7 @@ body.wf-dragging {
|
|
|
4634
4947
|
font-size: var(--wf-font-size-sm);
|
|
4635
4948
|
font-weight: var(--wf-font-weight-semibold);
|
|
4636
4949
|
cursor: pointer;
|
|
4637
|
-
transition: background
|
|
4950
|
+
transition: background var(--wf-dur-fast) var(--wf-ease-out);
|
|
4638
4951
|
}
|
|
4639
4952
|
|
|
4640
4953
|
.wf-editor-tb-btn:hover {
|
|
@@ -4651,7 +4964,7 @@ body.wf-dragging {
|
|
|
4651
4964
|
}
|
|
4652
4965
|
|
|
4653
4966
|
.wf-editor-tb-btn--link {
|
|
4654
|
-
font-size: 14px
|
|
4967
|
+
font-size: var(--wf-font-size-base); /* 14px 同值 token 化——compact 预设可缩放 */
|
|
4655
4968
|
}
|
|
4656
4969
|
|
|
4657
4970
|
.wf-editor-tb-sep {
|
|
@@ -4905,7 +5218,7 @@ body.wf-dragging {
|
|
|
4905
5218
|
border-radius: var(--wf-radius-xs);
|
|
4906
5219
|
cursor: pointer;
|
|
4907
5220
|
background: var(--wf-color-bg);
|
|
4908
|
-
transition: background
|
|
5221
|
+
transition: background var(--wf-dur-fast) var(--wf-ease-out), border-color var(--wf-dur-fast) var(--wf-ease-out);
|
|
4909
5222
|
}
|
|
4910
5223
|
|
|
4911
5224
|
.wf-editor-table-grid-cell:hover,
|
|
@@ -5118,6 +5431,8 @@ body.wf-dragging {
|
|
|
5118
5431
|
margin-top: var(--wf-gap-sm);
|
|
5119
5432
|
}
|
|
5120
5433
|
|
|
5434
|
+
/* ExportCSV 复用 wf-btn 样式(按钮视觉由框架提供)——无独立样式 */
|
|
5435
|
+
|
|
5121
5436
|
/* weifuwu/components — Field */
|
|
5122
5437
|
|
|
5123
5438
|
.wf-field {
|
|
@@ -5236,16 +5551,16 @@ body.wf-dragging {
|
|
|
5236
5551
|
}
|
|
5237
5552
|
|
|
5238
5553
|
.wf-filepreview-md pre {
|
|
5239
|
-
background: var(--wf-color-bg-
|
|
5554
|
+
background: var(--wf-color-bg-secondary);
|
|
5240
5555
|
padding: var(--wf-space-sm) var(--wf-space-md);
|
|
5241
5556
|
border-radius: var(--wf-radius-sm);
|
|
5242
5557
|
overflow-x: auto;
|
|
5243
5558
|
}
|
|
5244
5559
|
|
|
5245
5560
|
.wf-filepreview-md code {
|
|
5246
|
-
background: var(--wf-color-bg-
|
|
5561
|
+
background: var(--wf-color-bg-secondary);
|
|
5247
5562
|
padding: 1px 4px;
|
|
5248
|
-
border-radius:
|
|
5563
|
+
border-radius: var(--wf-radius-sm);
|
|
5249
5564
|
}
|
|
5250
5565
|
|
|
5251
5566
|
.wf-filepreview-md pre code {
|
|
@@ -5313,39 +5628,195 @@ body.wf-dragging {
|
|
|
5313
5628
|
color: var(--wf-color-text-secondary);
|
|
5314
5629
|
}
|
|
5315
5630
|
|
|
5316
|
-
/* weifuwu/components —
|
|
5317
|
-
|
|
5318
|
-
|
|
5631
|
+
/* weifuwu/components — FileTree(文件树浏览器:面包屑 + 列表/编辑态)
|
|
5632
|
+
* 语义 token 化(design/style-professional-plan.md M1——旧 token 体系迁移):
|
|
5633
|
+
* 全部颜色/间距/字号/圆角/动效引用 layout --wf-*,暗色自动适配。
|
|
5634
|
+
*/
|
|
5635
|
+
.wf-filetree {
|
|
5636
|
+
border: var(--wf-border-width) solid var(--wf-color-border);
|
|
5637
|
+
border-radius: var(--wf-radius-md);
|
|
5638
|
+
overflow: hidden;
|
|
5639
|
+
font-size: var(--wf-font-size-base);
|
|
5640
|
+
background: var(--wf-color-bg);
|
|
5641
|
+
}
|
|
5642
|
+
.wf-filetree-toolbar {
|
|
5319
5643
|
display: flex;
|
|
5320
|
-
|
|
5644
|
+
align-items: center;
|
|
5645
|
+
justify-content: space-between;
|
|
5321
5646
|
gap: var(--wf-gap-sm);
|
|
5647
|
+
padding: var(--wf-space-sm) var(--wf-space);
|
|
5648
|
+
border-bottom: var(--wf-border-width) solid var(--wf-color-border);
|
|
5649
|
+
background: var(--wf-color-bg-secondary);
|
|
5322
5650
|
}
|
|
5323
|
-
|
|
5324
|
-
.wf-upload-zone {
|
|
5651
|
+
.wf-filetree-path {
|
|
5325
5652
|
display: flex;
|
|
5326
|
-
flex-direction: column;
|
|
5327
5653
|
align-items: center;
|
|
5328
|
-
justify-content: center;
|
|
5329
5654
|
gap: var(--wf-gap-xs);
|
|
5330
|
-
|
|
5331
|
-
|
|
5332
|
-
|
|
5333
|
-
background: var(--wf-color-bg-secondary);
|
|
5334
|
-
cursor: pointer;
|
|
5335
|
-
transition: border-color var(--wf-transition), box-shadow var(--wf-transition), background-color var(--wf-transition), color var(--wf-transition);
|
|
5336
|
-
min-height: 120px;
|
|
5337
|
-
}
|
|
5338
|
-
|
|
5339
|
-
.wf-upload-zone:hover {
|
|
5340
|
-
border-color: var(--wf-color-primary);
|
|
5341
|
-
background: var(--wf-color-bg);
|
|
5655
|
+
min-width: 0;
|
|
5656
|
+
overflow: hidden;
|
|
5657
|
+
white-space: nowrap;
|
|
5342
5658
|
}
|
|
5343
|
-
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
|
|
5659
|
+
.wf-filetree-crumb-wrap {
|
|
5660
|
+
display: inline-flex;
|
|
5661
|
+
align-items: center;
|
|
5662
|
+
gap: var(--wf-gap-xs);
|
|
5347
5663
|
}
|
|
5348
|
-
|
|
5664
|
+
.wf-filetree-crumb {
|
|
5665
|
+
border: none;
|
|
5666
|
+
background: none;
|
|
5667
|
+
padding: var(--wf-space-xs) var(--wf-gap-xs);
|
|
5668
|
+
font-size: var(--wf-font-size-sm);
|
|
5669
|
+
color: var(--wf-color-text-secondary);
|
|
5670
|
+
cursor: pointer;
|
|
5671
|
+
border-radius: var(--wf-radius-sm);
|
|
5672
|
+
transition: background-color var(--wf-dur-fast) var(--wf-ease-out), color var(--wf-dur-fast) var(--wf-ease-out);
|
|
5673
|
+
}
|
|
5674
|
+
.wf-filetree-crumb:hover {
|
|
5675
|
+
background: var(--wf-state-hover);
|
|
5676
|
+
color: var(--wf-color-text);
|
|
5677
|
+
}
|
|
5678
|
+
.wf-filetree-crumb:focus-visible {
|
|
5679
|
+
outline: none;
|
|
5680
|
+
box-shadow: var(--wf-focus-ring);
|
|
5681
|
+
}
|
|
5682
|
+
.wf-filetree-sep {
|
|
5683
|
+
color: var(--wf-color-text-tertiary);
|
|
5684
|
+
font-size: var(--wf-font-size-sm);
|
|
5685
|
+
}
|
|
5686
|
+
.wf-filetree-actions {
|
|
5687
|
+
display: flex;
|
|
5688
|
+
align-items: center;
|
|
5689
|
+
gap: var(--wf-gap-xs);
|
|
5690
|
+
flex-shrink: 0;
|
|
5691
|
+
}
|
|
5692
|
+
.wf-filetree-list {
|
|
5693
|
+
max-height: 320px;
|
|
5694
|
+
overflow: auto;
|
|
5695
|
+
padding: var(--wf-space-xs);
|
|
5696
|
+
}
|
|
5697
|
+
.wf-filetree-item {
|
|
5698
|
+
display: flex;
|
|
5699
|
+
align-items: center;
|
|
5700
|
+
gap: var(--wf-gap-sm);
|
|
5701
|
+
width: 100%;
|
|
5702
|
+
border: none;
|
|
5703
|
+
background: none;
|
|
5704
|
+
padding: var(--wf-space-sm);
|
|
5705
|
+
border-radius: var(--wf-radius);
|
|
5706
|
+
cursor: pointer;
|
|
5707
|
+
text-align: left;
|
|
5708
|
+
font-size: var(--wf-font-size-base);
|
|
5709
|
+
color: var(--wf-color-text);
|
|
5710
|
+
transition: background-color var(--wf-dur-fast) var(--wf-ease-out);
|
|
5711
|
+
}
|
|
5712
|
+
.wf-filetree-item:hover {
|
|
5713
|
+
background: var(--wf-state-hover);
|
|
5714
|
+
}
|
|
5715
|
+
.wf-filetree-item:focus-visible {
|
|
5716
|
+
outline: none;
|
|
5717
|
+
box-shadow: var(--wf-focus-ring);
|
|
5718
|
+
}
|
|
5719
|
+
.wf-filetree-dir {
|
|
5720
|
+
color: var(--wf-color-primary-text);
|
|
5721
|
+
}
|
|
5722
|
+
.wf-filetree-file {
|
|
5723
|
+
color: var(--wf-color-text-tertiary);
|
|
5724
|
+
}
|
|
5725
|
+
.wf-filetree-name {
|
|
5726
|
+
flex: 1;
|
|
5727
|
+
min-width: 0;
|
|
5728
|
+
overflow: hidden;
|
|
5729
|
+
text-overflow: ellipsis;
|
|
5730
|
+
white-space: nowrap;
|
|
5731
|
+
}
|
|
5732
|
+
.wf-filetree-meta {
|
|
5733
|
+
font-size: var(--wf-font-size-sm);
|
|
5734
|
+
color: var(--wf-color-text-tertiary);
|
|
5735
|
+
flex-shrink: 0;
|
|
5736
|
+
}
|
|
5737
|
+
.wf-filetree-empty {
|
|
5738
|
+
padding: var(--wf-space-xl) var(--wf-space);
|
|
5739
|
+
text-align: center;
|
|
5740
|
+
font-size: var(--wf-font-size-base);
|
|
5741
|
+
}
|
|
5742
|
+
.wf-filetree-editor {
|
|
5743
|
+
padding: var(--wf-space);
|
|
5744
|
+
}
|
|
5745
|
+
.wf-filetree-editor-head {
|
|
5746
|
+
display: flex;
|
|
5747
|
+
align-items: center;
|
|
5748
|
+
gap: var(--wf-gap-sm);
|
|
5749
|
+
margin-bottom: var(--wf-gap-sm);
|
|
5750
|
+
}
|
|
5751
|
+
.wf-filetree-filename {
|
|
5752
|
+
flex: 1;
|
|
5753
|
+
min-width: 0;
|
|
5754
|
+
overflow: hidden;
|
|
5755
|
+
text-overflow: ellipsis;
|
|
5756
|
+
white-space: nowrap;
|
|
5757
|
+
font-size: var(--wf-font-size-base);
|
|
5758
|
+
font-weight: var(--wf-font-weight-medium);
|
|
5759
|
+
}
|
|
5760
|
+
.wf-filetree-editor-area {
|
|
5761
|
+
width: 100%;
|
|
5762
|
+
box-sizing: border-box;
|
|
5763
|
+
border: var(--wf-border-width) solid var(--wf-color-border);
|
|
5764
|
+
border-radius: var(--wf-radius);
|
|
5765
|
+
padding: var(--wf-space-sm);
|
|
5766
|
+
font-family: var(--wf-font-mono);
|
|
5767
|
+
font-size: var(--wf-font-size-sm);
|
|
5768
|
+
line-height: 1.6;
|
|
5769
|
+
resize: vertical;
|
|
5770
|
+
background: var(--wf-color-bg);
|
|
5771
|
+
color: var(--wf-color-text);
|
|
5772
|
+
}
|
|
5773
|
+
.wf-filetree-preview {
|
|
5774
|
+
margin: 0;
|
|
5775
|
+
padding: var(--wf-space-sm);
|
|
5776
|
+
max-height: 280px;
|
|
5777
|
+
overflow: auto;
|
|
5778
|
+
font-family: var(--wf-font-mono);
|
|
5779
|
+
font-size: var(--wf-font-size-sm);
|
|
5780
|
+
line-height: 1.6;
|
|
5781
|
+
background: var(--wf-color-bg-secondary);
|
|
5782
|
+
border-radius: var(--wf-radius);
|
|
5783
|
+
white-space: pre-wrap;
|
|
5784
|
+
word-break: break-all;
|
|
5785
|
+
}
|
|
5786
|
+
|
|
5787
|
+
/* weifuwu/components — FileUpload */
|
|
5788
|
+
|
|
5789
|
+
.wf-upload {
|
|
5790
|
+
display: flex;
|
|
5791
|
+
flex-direction: column;
|
|
5792
|
+
gap: var(--wf-gap-sm);
|
|
5793
|
+
}
|
|
5794
|
+
|
|
5795
|
+
.wf-upload-zone {
|
|
5796
|
+
display: flex;
|
|
5797
|
+
flex-direction: column;
|
|
5798
|
+
align-items: center;
|
|
5799
|
+
justify-content: center;
|
|
5800
|
+
gap: var(--wf-gap-xs);
|
|
5801
|
+
padding: var(--wf-space-lg);
|
|
5802
|
+
border: 2px dashed var(--wf-color-border);
|
|
5803
|
+
border-radius: var(--wf-radius);
|
|
5804
|
+
background: var(--wf-color-bg-secondary);
|
|
5805
|
+
cursor: pointer;
|
|
5806
|
+
transition: border-color var(--wf-transition), box-shadow var(--wf-transition), background-color var(--wf-transition), color var(--wf-transition);
|
|
5807
|
+
min-height: 120px;
|
|
5808
|
+
}
|
|
5809
|
+
|
|
5810
|
+
.wf-upload-zone:hover {
|
|
5811
|
+
border-color: var(--wf-color-primary);
|
|
5812
|
+
background: var(--wf-color-bg);
|
|
5813
|
+
}
|
|
5814
|
+
|
|
5815
|
+
.wf-upload-zone--disabled {
|
|
5816
|
+
opacity: var(--wf-opacity-disabled);
|
|
5817
|
+
cursor: not-allowed;
|
|
5818
|
+
}
|
|
5819
|
+
|
|
5349
5820
|
.wf-upload-zone--err {
|
|
5350
5821
|
border-color: var(--wf-color-error);
|
|
5351
5822
|
}
|
|
@@ -5670,21 +6141,19 @@ body.wf-dragging {
|
|
|
5670
6141
|
pointer-events: none;
|
|
5671
6142
|
}
|
|
5672
6143
|
|
|
5673
|
-
/* placement
|
|
6144
|
+
/* placement 定位全权归 JS(usePopup computePos——fixed left/top 已含中心对齐/偏移)——
|
|
6145
|
+
* 旧 transform 残留(top/bottom/left/right 修正)与 JS 坐标叠加双倍偏移——
|
|
6146
|
+
* 同 Tooltip/Popover/Popconfirm 修复——已删 */
|
|
5674
6147
|
.wf-hover-card--top {
|
|
5675
|
-
transform: translateX(-50%) translateY(-100%);
|
|
5676
6148
|
}
|
|
5677
6149
|
|
|
5678
6150
|
.wf-hover-card--bottom {
|
|
5679
|
-
transform: translateX(-50%);
|
|
5680
6151
|
}
|
|
5681
6152
|
|
|
5682
6153
|
.wf-hover-card--left {
|
|
5683
|
-
transform: translateY(-50%) translateX(-100%);
|
|
5684
6154
|
}
|
|
5685
6155
|
|
|
5686
6156
|
.wf-hover-card--right {
|
|
5687
|
-
transform: translateY(-50%);
|
|
5688
6157
|
}
|
|
5689
6158
|
|
|
5690
6159
|
/* weifuwu/components — Icon(内联 SVG 基础样式) */
|
|
@@ -5695,6 +6164,10 @@ body.wf-dragging {
|
|
|
5695
6164
|
vertical-align: -0.125em; /* 与文字基线对齐 */
|
|
5696
6165
|
}
|
|
5697
6166
|
|
|
6167
|
+
.wf-imagecropper {
|
|
6168
|
+
display: inline-block;
|
|
6169
|
+
}
|
|
6170
|
+
|
|
5698
6171
|
/* weifuwu/components — Img */
|
|
5699
6172
|
|
|
5700
6173
|
.wf-image {
|
|
@@ -6256,10 +6729,10 @@ body.wf-dragging {
|
|
|
6256
6729
|
justify-content: space-between;
|
|
6257
6730
|
padding: var(--wf-space-sm) 12px;
|
|
6258
6731
|
font-weight: 600;
|
|
6259
|
-
font-size: 13px
|
|
6732
|
+
font-size: var(--wf-font-size-sm); /* 13px 同值 token 化——compact 预设可缩放 */
|
|
6260
6733
|
}
|
|
6261
6734
|
.wf-kanban-col-count {
|
|
6262
|
-
font-size: 12px
|
|
6735
|
+
font-size: var(--wf-font-size-xs); /* 12px 同值 token 化——compact 预设可缩放 */
|
|
6263
6736
|
color: var(--wf-color-text-tertiary);
|
|
6264
6737
|
background: var(--wf-color-fill);
|
|
6265
6738
|
border-radius: 50%;
|
|
@@ -6299,13 +6772,13 @@ body.wf-dragging {
|
|
|
6299
6772
|
}
|
|
6300
6773
|
|
|
6301
6774
|
.wf-kanban-card-title {
|
|
6302
|
-
font-size: 13px
|
|
6775
|
+
font-size: var(--wf-font-size-sm); /* 13px 同值 token 化——compact 预设可缩放 */
|
|
6303
6776
|
line-height: 1.5;
|
|
6304
6777
|
min-width: 0;
|
|
6305
6778
|
}
|
|
6306
6779
|
|
|
6307
6780
|
.wf-kanban-tag {
|
|
6308
|
-
font-size: 11px
|
|
6781
|
+
font-size: var(--wf-font-size-xs); /* 与 Tag 组件基准一致(10px 白名单复核——11px 偏小) */
|
|
6309
6782
|
color: var(--wf-color-primary-text);
|
|
6310
6783
|
background: var(--wf-color-primary-bg);
|
|
6311
6784
|
border-radius: var(--wf-radius-xs);
|
|
@@ -6386,7 +6859,7 @@ body.wf-dragging {
|
|
|
6386
6859
|
background: transparent;
|
|
6387
6860
|
color: var(--wf-color-text-secondary);
|
|
6388
6861
|
cursor: pointer;
|
|
6389
|
-
font-size: 12px
|
|
6862
|
+
font-size: var(--wf-font-size-xs); /* 12px 同值 token 化——compact 预设可缩放 */
|
|
6390
6863
|
transition: background var(--wf-dur-fast) var(--wf-ease-standard);
|
|
6391
6864
|
}
|
|
6392
6865
|
|
|
@@ -6550,7 +7023,7 @@ body.wf-dragging {
|
|
|
6550
7023
|
border: 3px solid var(--wf-color-border);
|
|
6551
7024
|
border-top-color: var(--wf-color-primary);
|
|
6552
7025
|
border-radius: 50%;
|
|
6553
|
-
animation: wf-spin
|
|
7026
|
+
animation: wf-spin var(--wf-dur-spin) linear infinite;
|
|
6554
7027
|
}
|
|
6555
7028
|
|
|
6556
7029
|
@keyframes wf-spin {
|
|
@@ -6768,6 +7241,26 @@ body.wf-dragging {
|
|
|
6768
7241
|
background: var(--wf-color-bg-secondary);
|
|
6769
7242
|
}
|
|
6770
7243
|
|
|
7244
|
+
.wf-md-editor {
|
|
7245
|
+
width: 100%;
|
|
7246
|
+
}
|
|
7247
|
+
.wf-md-editor-textarea {
|
|
7248
|
+
width: 100%;
|
|
7249
|
+
}
|
|
7250
|
+
|
|
7251
|
+
.wf-math-frac {
|
|
7252
|
+
display: inline-flex;
|
|
7253
|
+
flex-direction: column;
|
|
7254
|
+
vertical-align: middle;
|
|
7255
|
+
text-align: center;
|
|
7256
|
+
margin: 0 2px;
|
|
7257
|
+
}
|
|
7258
|
+
.wf-math-num { border-bottom: 1px solid currentColor; padding: 0 4px; }
|
|
7259
|
+
.wf-math-den { padding: 0 4px; }
|
|
7260
|
+
.wf-math-sqrt-radical { margin-right: 1px; }
|
|
7261
|
+
.wf-math-sup { font-size: 0.75em; vertical-align: super; }
|
|
7262
|
+
.wf-math-sub { font-size: 0.75em; vertical-align: sub; }
|
|
7263
|
+
|
|
6771
7264
|
/* weifuwu/components — Mentions */
|
|
6772
7265
|
|
|
6773
7266
|
.wf-mentions {
|
|
@@ -6859,7 +7352,7 @@ body.wf-dragging {
|
|
|
6859
7352
|
font-size: var(--wf-font-size-xs);
|
|
6860
7353
|
font-weight: var(--wf-font-weight-semibold);
|
|
6861
7354
|
color: var(--wf-color-text-tertiary);
|
|
6862
|
-
letter-spacing: 0
|
|
7355
|
+
letter-spacing: var(--wf-heading-tracking); /* CJK 默认 0,英文可覆盖 */
|
|
6863
7356
|
}
|
|
6864
7357
|
|
|
6865
7358
|
.wf-menu-item {
|
|
@@ -6880,6 +7373,10 @@ body.wf-dragging {
|
|
|
6880
7373
|
color: var(--wf-color-text);
|
|
6881
7374
|
}
|
|
6882
7375
|
|
|
7376
|
+
.wf-menu-item:active {
|
|
7377
|
+
background: var(--wf-state-pressed);
|
|
7378
|
+
}
|
|
7379
|
+
|
|
6883
7380
|
.wf-menu-item--active {
|
|
6884
7381
|
background: var(--wf-color-primary-bg);
|
|
6885
7382
|
color: var(--wf-color-primary-text);
|
|
@@ -7141,7 +7638,7 @@ body.wf-dragging {
|
|
|
7141
7638
|
border-right: 3px solid var(--wf-color-primary);
|
|
7142
7639
|
border-right-color: var(--wf-color-primary);
|
|
7143
7640
|
/* 1s 光标式平缓闪烁(≤1Hz,远低于 3Hz 光敏阈值);reduced-motion 下基线降为 0.01ms */
|
|
7144
|
-
animation: wf-bubble-blink
|
|
7641
|
+
animation: wf-bubble-blink var(--wf-dur-blink) var(--wf-ease-in-out) infinite;
|
|
7145
7642
|
}
|
|
7146
7643
|
|
|
7147
7644
|
@keyframes wf-bubble-blink {
|
|
@@ -7220,7 +7717,7 @@ body.wf-dragging {
|
|
|
7220
7717
|
|
|
7221
7718
|
.wf-modal-content {
|
|
7222
7719
|
background: var(--wf-color-bg-elevated);
|
|
7223
|
-
border-radius: var(--wf-modal-radius, var(--wf-radius-
|
|
7720
|
+
border-radius: var(--wf-modal-radius, var(--wf-radius-lg)); /* 浮层圆角矩阵:Modal 12(抬升语义) */
|
|
7224
7721
|
box-shadow: var(--wf-modal-shadow, var(--wf-shadow-lg));
|
|
7225
7722
|
min-width: var(--wf-modal-width, 400px);
|
|
7226
7723
|
max-width: 90vw;
|
|
@@ -7527,10 +8024,10 @@ body.wf-dragging {
|
|
|
7527
8024
|
line-height: var(--wf-line-height-tight);
|
|
7528
8025
|
}
|
|
7529
8026
|
|
|
7530
|
-
/* display
|
|
8027
|
+
/* display 档:顶级页面标题,配窄字距(token 可覆盖——CJK 长标题可归零) */
|
|
7531
8028
|
.wf-page-title--display {
|
|
7532
8029
|
font-size: var(--wf-font-size-display);
|
|
7533
|
-
letter-spacing: -
|
|
8030
|
+
letter-spacing: var(--wf-heading-display-tracking);
|
|
7534
8031
|
}
|
|
7535
8032
|
|
|
7536
8033
|
.wf-page-sub {
|
|
@@ -7581,6 +8078,15 @@ body.wf-dragging {
|
|
|
7581
8078
|
color: var(--wf-color-primary-text);
|
|
7582
8079
|
}
|
|
7583
8080
|
|
|
8081
|
+
.wf-page-btn:active:not(:disabled):not(.wf-page-btn--active) {
|
|
8082
|
+
background: var(--wf-state-pressed);
|
|
8083
|
+
}
|
|
8084
|
+
|
|
8085
|
+
.wf-page-btn:focus-visible {
|
|
8086
|
+
outline: none;
|
|
8087
|
+
box-shadow: var(--wf-focus-ring);
|
|
8088
|
+
}
|
|
8089
|
+
|
|
7584
8090
|
.wf-page-btn--active {
|
|
7585
8091
|
background: var(--wf-color-primary);
|
|
7586
8092
|
border-color: var(--wf-color-primary);
|
|
@@ -7710,7 +8216,7 @@ body.wf-dragging {
|
|
|
7710
8216
|
background: var(--wf-color-bg);
|
|
7711
8217
|
border: 1px solid var(--wf-color-border);
|
|
7712
8218
|
border-radius: var(--wf-radius-md);
|
|
7713
|
-
font-size: 13px
|
|
8219
|
+
font-size: var(--wf-font-size-sm); /* 13px 同值 token 化——compact 预设可缩放 */
|
|
7714
8220
|
font-weight: 500;
|
|
7715
8221
|
pointer-events: auto;
|
|
7716
8222
|
white-space: nowrap;
|
|
@@ -7744,7 +8250,7 @@ body.wf-dragging {
|
|
|
7744
8250
|
position: absolute;
|
|
7745
8251
|
bottom: -24px;
|
|
7746
8252
|
left: 0;
|
|
7747
|
-
font-size: 12px
|
|
8253
|
+
font-size: var(--wf-font-size-xs); /* 12px 同值 token 化——compact 预设可缩放 */
|
|
7748
8254
|
color: var(--wf-color-warning-text);
|
|
7749
8255
|
}
|
|
7750
8256
|
|
|
@@ -7769,10 +8275,10 @@ body.wf-dragging {
|
|
|
7769
8275
|
font-size: var(--wf-font-size-sm);
|
|
7770
8276
|
}
|
|
7771
8277
|
|
|
7772
|
-
.wf-popconfirm--bottom { transform
|
|
7773
|
-
.wf-popconfirm--top {
|
|
7774
|
-
.wf-popconfirm--left {
|
|
7775
|
-
.wf-popconfirm--right {
|
|
8278
|
+
.wf-popconfirm--bottom { /* transform 残留已删(同 Tooltip 修复) */ }
|
|
8279
|
+
.wf-popconfirm--top { /* 同上 */ }
|
|
8280
|
+
.wf-popconfirm--left { /* 同上 */ }
|
|
8281
|
+
.wf-popconfirm--right { /* 同上 */ }
|
|
7776
8282
|
|
|
7777
8283
|
.wf-popconfirm--enter {
|
|
7778
8284
|
animation: wf-popconfirm-in var(--wf-dur-md) var(--wf-ease-standard);
|
|
@@ -7843,19 +8349,19 @@ body.wf-dragging {
|
|
|
7843
8349
|
}
|
|
7844
8350
|
|
|
7845
8351
|
.wf-popover--bottom {
|
|
7846
|
-
transform
|
|
8352
|
+
/* transform 残留已删(旧 absolute 定位——JS 坐标叠加双倍偏移——同 Tooltip 修复) */
|
|
7847
8353
|
}
|
|
7848
8354
|
|
|
7849
8355
|
.wf-popover--top {
|
|
7850
|
-
transform
|
|
8356
|
+
/* 定位全权归 JS(同 Tooltip 修复——旧 transform 与 fixed 坐标叠加双倍偏移) */
|
|
7851
8357
|
}
|
|
7852
8358
|
|
|
7853
8359
|
.wf-popover--left {
|
|
7854
|
-
|
|
8360
|
+
/* 同上 */
|
|
7855
8361
|
}
|
|
7856
8362
|
|
|
7857
8363
|
.wf-popover--right {
|
|
7858
|
-
|
|
8364
|
+
/* 同上 */
|
|
7859
8365
|
}
|
|
7860
8366
|
|
|
7861
8367
|
.wf-popover-arrow {
|
|
@@ -7942,13 +8448,109 @@ body.wf-dragging {
|
|
|
7942
8448
|
/* indeterminate:不确定态(动画扫动) */
|
|
7943
8449
|
.wf-progress--indeterminate .wf-progress-fill {
|
|
7944
8450
|
width: 40%;
|
|
7945
|
-
animation: wf-progress-indeterminate
|
|
8451
|
+
animation: wf-progress-indeterminate var(--wf-dur-progress) var(--wf-ease-in-out) infinite;
|
|
7946
8452
|
}
|
|
7947
8453
|
@keyframes wf-progress-indeterminate {
|
|
7948
8454
|
0% { transform: translateX(-100%); }
|
|
7949
8455
|
100% { transform: translateX(350%); }
|
|
7950
8456
|
}
|
|
7951
8457
|
|
|
8458
|
+
/* weifuwu/components — PromptTemplate 提示词模板编辑器 */
|
|
8459
|
+
|
|
8460
|
+
.wf-prompt-template {
|
|
8461
|
+
display: flex;
|
|
8462
|
+
flex-direction: column;
|
|
8463
|
+
gap: var(--wf-gap-sm);
|
|
8464
|
+
}
|
|
8465
|
+
|
|
8466
|
+
.wf-prompt-label {
|
|
8467
|
+
font-size: var(--wf-font-size-sm);
|
|
8468
|
+
font-weight: var(--wf-font-weight-medium);
|
|
8469
|
+
color: var(--wf-color-text);
|
|
8470
|
+
}
|
|
8471
|
+
|
|
8472
|
+
/* 变量 chips 行 */
|
|
8473
|
+
.wf-prompt-chips {
|
|
8474
|
+
display: flex;
|
|
8475
|
+
align-items: center;
|
|
8476
|
+
flex-wrap: wrap;
|
|
8477
|
+
gap: var(--wf-gap-xs);
|
|
8478
|
+
}
|
|
8479
|
+
|
|
8480
|
+
.wf-prompt-chips-hint {
|
|
8481
|
+
font-size: var(--wf-font-size-xs);
|
|
8482
|
+
color: var(--wf-color-text-tertiary);
|
|
8483
|
+
}
|
|
8484
|
+
|
|
8485
|
+
.wf-prompt-chip {
|
|
8486
|
+
padding: 2px var(--wf-space-sm);
|
|
8487
|
+
border: 1px solid var(--wf-color-border);
|
|
8488
|
+
border-radius: var(--wf-radius-sm);
|
|
8489
|
+
background: var(--wf-color-bg-secondary);
|
|
8490
|
+
font-family: var(--wf-font-mono);
|
|
8491
|
+
font-size: var(--wf-font-size-xs);
|
|
8492
|
+
color: var(--wf-color-primary-text);
|
|
8493
|
+
cursor: pointer;
|
|
8494
|
+
transition: border-color var(--wf-dur-fast) var(--wf-ease-out),
|
|
8495
|
+
background-color var(--wf-dur-fast) var(--wf-ease-out);
|
|
8496
|
+
}
|
|
8497
|
+
|
|
8498
|
+
.wf-prompt-chip:hover:not(:disabled) {
|
|
8499
|
+
border-color: var(--wf-color-primary);
|
|
8500
|
+
background: var(--wf-color-primary-bg);
|
|
8501
|
+
}
|
|
8502
|
+
|
|
8503
|
+
.wf-prompt-chip:focus-visible {
|
|
8504
|
+
outline: none;
|
|
8505
|
+
box-shadow: var(--wf-focus-ring);
|
|
8506
|
+
}
|
|
8507
|
+
|
|
8508
|
+
.wf-prompt-chip:disabled {
|
|
8509
|
+
cursor: not-allowed;
|
|
8510
|
+
opacity: 0.6;
|
|
8511
|
+
}
|
|
8512
|
+
|
|
8513
|
+
/* 模板编辑区 */
|
|
8514
|
+
.wf-prompt-editor {
|
|
8515
|
+
width: 100%;
|
|
8516
|
+
min-height: 120px;
|
|
8517
|
+
padding: var(--wf-space-md);
|
|
8518
|
+
border: 1px solid var(--wf-color-border);
|
|
8519
|
+
border-radius: var(--wf-radius-md);
|
|
8520
|
+
background: var(--wf-color-bg-elevated);
|
|
8521
|
+
color: var(--wf-color-text);
|
|
8522
|
+
font-family: var(--wf-font-mono);
|
|
8523
|
+
font-size: var(--wf-font-size-sm);
|
|
8524
|
+
line-height: 1.6;
|
|
8525
|
+
resize: vertical;
|
|
8526
|
+
}
|
|
8527
|
+
|
|
8528
|
+
.wf-prompt-editor:focus-visible {
|
|
8529
|
+
outline: none;
|
|
8530
|
+
box-shadow: var(--wf-focus-ring);
|
|
8531
|
+
}
|
|
8532
|
+
|
|
8533
|
+
/* 预览区(填充结果) */
|
|
8534
|
+
.wf-prompt-preview {
|
|
8535
|
+
border: 1px dashed var(--wf-color-border);
|
|
8536
|
+
border-radius: var(--wf-radius-md);
|
|
8537
|
+
padding: var(--wf-space-md);
|
|
8538
|
+
background: var(--wf-color-bg-secondary);
|
|
8539
|
+
}
|
|
8540
|
+
|
|
8541
|
+
.wf-prompt-preview-title {
|
|
8542
|
+
font-size: var(--wf-font-size-xs);
|
|
8543
|
+
color: var(--wf-color-text-tertiary);
|
|
8544
|
+
margin-bottom: var(--wf-space-xs);
|
|
8545
|
+
}
|
|
8546
|
+
|
|
8547
|
+
.wf-prompt-preview-body {
|
|
8548
|
+
font-size: var(--wf-font-size-sm);
|
|
8549
|
+
color: var(--wf-color-text);
|
|
8550
|
+
white-space: pre-wrap;
|
|
8551
|
+
word-break: break-word;
|
|
8552
|
+
}
|
|
8553
|
+
|
|
7952
8554
|
/* weifuwu/components — RadioGroup */
|
|
7953
8555
|
|
|
7954
8556
|
.wf-radio-group {
|
|
@@ -8051,6 +8653,9 @@ body.wf-dragging {
|
|
|
8051
8653
|
.wf-rate-star:hover {
|
|
8052
8654
|
transform: scale(1.15);
|
|
8053
8655
|
}
|
|
8656
|
+
.wf-rate-star:active {
|
|
8657
|
+
transform: scale(0.95);
|
|
8658
|
+
}
|
|
8054
8659
|
|
|
8055
8660
|
.wf-rate-star:focus-visible {
|
|
8056
8661
|
outline: none;
|
|
@@ -8171,6 +8776,74 @@ body.wf-dragging {
|
|
|
8171
8776
|
word-break: break-word;
|
|
8172
8777
|
}
|
|
8173
8778
|
|
|
8779
|
+
/* weifuwu/components — RelationGraph(关系图谱:SVG 画布 + 图例)
|
|
8780
|
+
* 语义 token 化(M1——旧 token 体系迁移:--wf-border/--wf-text* → --wf-color-*)。
|
|
8781
|
+
*/
|
|
8782
|
+
.wf-rg {
|
|
8783
|
+
display: flex;
|
|
8784
|
+
flex-direction: column;
|
|
8785
|
+
gap: var(--wf-gap-sm);
|
|
8786
|
+
}
|
|
8787
|
+
.wf-rg-canvas {
|
|
8788
|
+
display: block;
|
|
8789
|
+
border: var(--wf-border-width) solid var(--wf-color-border);
|
|
8790
|
+
border-radius: var(--wf-radius-md);
|
|
8791
|
+
background:
|
|
8792
|
+
radial-gradient(circle at 1px 1px, var(--wf-color-border) 1px, transparent 0) 0 0 / 24px 24px;
|
|
8793
|
+
overflow: hidden;
|
|
8794
|
+
}
|
|
8795
|
+
.wf-rg-edge {
|
|
8796
|
+
transition: opacity var(--wf-dur-fast) var(--wf-ease-out);
|
|
8797
|
+
}
|
|
8798
|
+
.wf-rg-node {
|
|
8799
|
+
cursor: pointer;
|
|
8800
|
+
}
|
|
8801
|
+
.wf-rg-node circle {
|
|
8802
|
+
transition: stroke-width var(--wf-dur-fast) var(--wf-ease-out);
|
|
8803
|
+
}
|
|
8804
|
+
.wf-rg-node:hover circle {
|
|
8805
|
+
stroke-width: 3;
|
|
8806
|
+
}
|
|
8807
|
+
.wf-rg-node--selected circle {
|
|
8808
|
+
stroke-width: 3.5;
|
|
8809
|
+
stroke-dasharray: 4 3;
|
|
8810
|
+
}
|
|
8811
|
+
.wf-rg-label {
|
|
8812
|
+
font-size: var(--wf-font-size-base);
|
|
8813
|
+
font-weight: var(--wf-font-weight-semibold);
|
|
8814
|
+
fill: var(--wf-color-text);
|
|
8815
|
+
pointer-events: none;
|
|
8816
|
+
}
|
|
8817
|
+
.wf-rg-sublabel {
|
|
8818
|
+
font-size: var(--wf-font-size-xs);
|
|
8819
|
+
fill: var(--wf-color-text-tertiary);
|
|
8820
|
+
pointer-events: none;
|
|
8821
|
+
}
|
|
8822
|
+
.wf-rg-legend {
|
|
8823
|
+
display: flex;
|
|
8824
|
+
flex-wrap: wrap;
|
|
8825
|
+
gap: var(--wf-gap-xs) var(--wf-gap-md);
|
|
8826
|
+
font-size: var(--wf-font-size-sm);
|
|
8827
|
+
color: var(--wf-color-text-secondary);
|
|
8828
|
+
}
|
|
8829
|
+
.wf-rg-legend-item {
|
|
8830
|
+
display: inline-flex;
|
|
8831
|
+
align-items: center;
|
|
8832
|
+
gap: var(--wf-gap-xs);
|
|
8833
|
+
}
|
|
8834
|
+
.wf-rg-swatch {
|
|
8835
|
+
display: inline-block;
|
|
8836
|
+
width: 10px;
|
|
8837
|
+
height: 10px;
|
|
8838
|
+
border-radius: 50%;
|
|
8839
|
+
}
|
|
8840
|
+
.wf-rg-line {
|
|
8841
|
+
display: inline-block;
|
|
8842
|
+
width: 16px;
|
|
8843
|
+
height: 3px;
|
|
8844
|
+
border-radius: var(--wf-radius-xs);
|
|
8845
|
+
}
|
|
8846
|
+
|
|
8174
8847
|
/* weifuwu/components — Resizable */
|
|
8175
8848
|
|
|
8176
8849
|
.wf-resizable {
|
|
@@ -8340,7 +9013,7 @@ body.wf-dragging {
|
|
|
8340
9013
|
background: none;
|
|
8341
9014
|
border: none;
|
|
8342
9015
|
cursor: pointer;
|
|
8343
|
-
font-size: 12px
|
|
9016
|
+
font-size: var(--wf-font-size-xs); /* 12px 同值 token 化——compact 预设可缩放 */
|
|
8344
9017
|
color: var(--wf-color-text-tertiary);
|
|
8345
9018
|
padding: 2px;
|
|
8346
9019
|
line-height: 1;
|
|
@@ -8350,6 +9023,14 @@ body.wf-dragging {
|
|
|
8350
9023
|
.wf-search-clear:hover {
|
|
8351
9024
|
color: var(--wf-color-text);
|
|
8352
9025
|
}
|
|
9026
|
+
.wf-search-clear:active {
|
|
9027
|
+
opacity: 0.6;
|
|
9028
|
+
}
|
|
9029
|
+
.wf-search-clear:focus-visible {
|
|
9030
|
+
outline: none;
|
|
9031
|
+
box-shadow: var(--wf-focus-ring);
|
|
9032
|
+
border-radius: var(--wf-radius-sm);
|
|
9033
|
+
}
|
|
8353
9034
|
|
|
8354
9035
|
/* 受控 + 自定义清除按钮时隐藏原生 ×(type=search WebKit 双清除 UI——
|
|
8355
9036
|
自定义 wf-search-clear 是设计清除入口,原生 × 样式不统一且重复) */
|
|
@@ -8471,6 +9152,11 @@ body.wf-dragging {
|
|
|
8471
9152
|
box-shadow: var(--wf-focus-ring);
|
|
8472
9153
|
}
|
|
8473
9154
|
|
|
9155
|
+
/* hover 反馈(对齐 Input——可感知可交互;disabled 不反馈) */
|
|
9156
|
+
.wf-select:hover:not(:disabled) {
|
|
9157
|
+
border-color: var(--wf-color-border-dark);
|
|
9158
|
+
}
|
|
9159
|
+
|
|
8474
9160
|
.wf-select:disabled {
|
|
8475
9161
|
opacity: var(--wf-opacity-disabled);
|
|
8476
9162
|
cursor: not-allowed;
|
|
@@ -8494,6 +9180,9 @@ body.wf-dragging {
|
|
|
8494
9180
|
cursor: pointer;
|
|
8495
9181
|
transition: border-color var(--wf-transition), box-shadow var(--wf-transition), background-color var(--wf-transition), color var(--wf-transition);
|
|
8496
9182
|
}
|
|
9183
|
+
.wf-select-search-trigger:hover {
|
|
9184
|
+
border-color: var(--wf-color-border-dark);
|
|
9185
|
+
}
|
|
8497
9186
|
.wf-select-search-trigger:focus-within {
|
|
8498
9187
|
border-color: var(--wf-color-primary);
|
|
8499
9188
|
}
|
|
@@ -8695,6 +9384,7 @@ body.wf-dragging {
|
|
|
8695
9384
|
}
|
|
8696
9385
|
|
|
8697
9386
|
.wf-session-item:hover { background: var(--wf-color-bg-tertiary); }
|
|
9387
|
+
.wf-session-item:active { background: var(--wf-state-pressed); }
|
|
8698
9388
|
|
|
8699
9389
|
.wf-session-item--focus { background: var(--wf-color-bg-tertiary); }
|
|
8700
9390
|
|
|
@@ -9236,11 +9926,29 @@ body.wf-dragging {
|
|
|
9236
9926
|
.wf-slider-track {
|
|
9237
9927
|
flex: 1;
|
|
9238
9928
|
min-width: 0;
|
|
9929
|
+
/* **垂直基准变量(真实 bug——thumb/fill/mark 三线不齐)**:thumb 基于
|
|
9930
|
+
input 盒(margin 8 + 高 6)——fill/mark 曾基于 track 中线(inset:0/
|
|
9931
|
+
margin:auto)——但 track 是 flex item 被 value 文本拉伸(align-items
|
|
9932
|
+
stretch——行高 23px)→ 基准错位(常态 0.5px——字体加载后行高变
|
|
9933
|
+
22/24 → 差 1.5px——全量并发偶发失败)——统一三者基准 = input 盒 */
|
|
9934
|
+
--wf-slider-track-margin: 8px;
|
|
9935
|
+
--wf-slider-track-h: 6px;
|
|
9936
|
+
/* **absolute 定位基准(真实 bug——fill/marks 错位)**:fill/marks 都是
|
|
9937
|
+
absolute——track 无 position → 基准落到外层容器(wf-slider/页面)——
|
|
9938
|
+
fill 中心偏离轨道中线(价格区间 fill 在 thumb 下方 15px)——thumb/
|
|
9939
|
+
fill/mark 三线不齐——加 relative 使 fill/marks 相对轨道定位 */
|
|
9940
|
+
position: relative;
|
|
9239
9941
|
}
|
|
9240
9942
|
|
|
9241
9943
|
.wf-slider-input {
|
|
9242
9944
|
width: 100%;
|
|
9243
9945
|
height: 6px;
|
|
9946
|
+
/* **baseline 对齐消除(真实 bug——thumb/fill/mark 1px 偏差)**:input 是
|
|
9947
|
+
inline-block(默认)——行框内 baseline 对齐使 input 视觉下移(字体
|
|
9948
|
+
descent ~1px)——margin 8px 不是真实视觉顶——thumb 中心比 marks/fill
|
|
9949
|
+
低 1px(全量并发偶发失败根因)——vertical-align: top 使 input 顶对齐
|
|
9950
|
+
行框顶(margin 精确生效——三线同基准) */
|
|
9951
|
+
vertical-align: top;
|
|
9244
9952
|
appearance: none;
|
|
9245
9953
|
/* 清零 UA 默认 padding/border(Chrome range 默认 padding 9px + border 1px)——
|
|
9246
9954
|
否则 content 区被压缩,thumb 活动范围 ≠ 盒宽,marks/渐变偏移公式错位 */
|
|
@@ -9250,7 +9958,7 @@ body.wf-dragging {
|
|
|
9250
9958
|
border-radius: var(--wf-radius-xs);
|
|
9251
9959
|
outline: none;
|
|
9252
9960
|
cursor: pointer;
|
|
9253
|
-
margin:
|
|
9961
|
+
margin: var(--wf-slider-track-margin) 0; /* thumb 18px 超出轨道——留出 hover/拖拽空间 */
|
|
9254
9962
|
}
|
|
9255
9963
|
|
|
9256
9964
|
/* hover / 拖拽中(active):thumb 放大 + 加深(跨浏览器一致) */
|
|
@@ -9336,15 +10044,29 @@ body.wf-dragging {
|
|
|
9336
10044
|
|
|
9337
10045
|
/* ── 刻度标记(marks) ── */
|
|
9338
10046
|
.wf-slider-marks {
|
|
9339
|
-
position:
|
|
9340
|
-
|
|
9341
|
-
|
|
10047
|
+
position: absolute;
|
|
10048
|
+
left: 0;
|
|
10049
|
+
right: 0;
|
|
10050
|
+
/* 基准 = input 盒(与 thumb 一致——不受 track 拉伸影响) */
|
|
10051
|
+
top: var(--wf-slider-track-margin);
|
|
10052
|
+
bottom: auto;
|
|
10053
|
+
height: var(--wf-slider-track-h);
|
|
9342
10054
|
pointer-events: none;
|
|
9343
10055
|
}
|
|
9344
10056
|
|
|
10057
|
+
/* 区间模式:input absolute 撑满容器(36px)——marks 基准 = 容器中线
|
|
10058
|
+
(与 thumb/fill 一致——普通模式的 input 盒基准不适用) */
|
|
10059
|
+
.wf-slider-range .wf-slider-marks {
|
|
10060
|
+
top: 0;
|
|
10061
|
+
bottom: 0;
|
|
10062
|
+
height: auto;
|
|
10063
|
+
}
|
|
10064
|
+
|
|
9345
10065
|
.wf-slider-mark {
|
|
9346
10066
|
position: absolute;
|
|
9347
|
-
|
|
10067
|
+
/* dot 中心 = 轨道中线(dot 半高 4px——thumb/填充/刻度同一条直线——
|
|
10068
|
+
用户要求;label 在 dot 下方(溢出可见——刻度标签) */
|
|
10069
|
+
top: calc(50% - 4px);
|
|
9348
10070
|
transform: translateX(-50%);
|
|
9349
10071
|
display: flex;
|
|
9350
10072
|
flex-direction: column;
|
|
@@ -9373,6 +10095,76 @@ body.wf-dragging {
|
|
|
9373
10095
|
.wf-slider-input:disabled::-webkit-slider-thumb,
|
|
9374
10096
|
.wf-slider-input:disabled::-moz-range-thumb { cursor: not-allowed; }
|
|
9375
10097
|
|
|
10098
|
+
/* ── range 模式:双滑块(lo/hi input 叠加——轨道透明,填充分离绘制) ── */
|
|
10099
|
+
.wf-slider-range {
|
|
10100
|
+
position: relative;
|
|
10101
|
+
/* thumb 18px 超出轨道——容器高度容纳(原 margin:8px 0 语义移至容器) */
|
|
10102
|
+
min-height: 36px;
|
|
10103
|
+
display: flex;
|
|
10104
|
+
align-items: center;
|
|
10105
|
+
}
|
|
10106
|
+
|
|
10107
|
+
.wf-slider-range .wf-slider-input {
|
|
10108
|
+
position: absolute;
|
|
10109
|
+
inset: 0;
|
|
10110
|
+
margin: 0;
|
|
10111
|
+
background: transparent;
|
|
10112
|
+
/* **撑满轨道(真实 bug——thumb 与 fill 错位 15px)**:全局 .wf-slider-input
|
|
10113
|
+
height: 6px 与 inset: 0 冲突(absolute 时 top+height 决定尺寸——bottom 被
|
|
10114
|
+
忽略)→ input 6px 高在轨道顶部——thumb 中心 = 轨道顶 + 3——而 fill 中心 =
|
|
10115
|
+
轨道中线——thumb/fill 不同线——height auto 使 inset 0 生效(撑满轨道——
|
|
10116
|
+
thumb 中心 = 轨道中线 = fill 中心) */
|
|
10117
|
+
height: auto;
|
|
10118
|
+
pointer-events: none; /* 轨道不响应——点击/拖拽只走 thumb(双 thumb 互不抢事件) */
|
|
10119
|
+
/* 层级 = DOM 顺序(hi 后渲染天然在上——重叠时点最上层 = 上限)——audit 禁 z-index 数字 */
|
|
10120
|
+
}
|
|
10121
|
+
|
|
10122
|
+
/* thumb 可交互(pointer-events 只在 thumb 上——轨道命中不抢) */
|
|
10123
|
+
.wf-slider-range .wf-slider-input::-webkit-slider-thumb { pointer-events: auto; }
|
|
10124
|
+
.wf-slider-range .wf-slider-input::-moz-range-thumb { pointer-events: auto; }
|
|
10125
|
+
|
|
10126
|
+
/* range 模式轨道填充(双 thumb 之间) */
|
|
10127
|
+
.wf-slider-range-fill {
|
|
10128
|
+
position: absolute;
|
|
10129
|
+
/* 基准 = 容器中线(区间模式 input 撑满容器——thumb 中心 = 容器中线——
|
|
10130
|
+
与 marks 同基准——不受容器高度变化影响) */
|
|
10131
|
+
top: 0;
|
|
10132
|
+
bottom: 0;
|
|
10133
|
+
margin: auto;
|
|
10134
|
+
height: var(--wf-slider-track-h);
|
|
10135
|
+
background: var(--wf-color-primary);
|
|
10136
|
+
border-radius: var(--wf-radius-xs);
|
|
10137
|
+
pointer-events: none;
|
|
10138
|
+
}
|
|
10139
|
+
|
|
10140
|
+
.wf-sortable {
|
|
10141
|
+
list-style: none;
|
|
10142
|
+
}
|
|
10143
|
+
|
|
10144
|
+
.wf-sortable-item {
|
|
10145
|
+
cursor: grab;
|
|
10146
|
+
user-select: none;
|
|
10147
|
+
transition: transform var(--wf-dur-fast) var(--wf-ease-out), box-shadow var(--wf-dur-fast) var(--wf-ease-out);
|
|
10148
|
+
border-radius: var(--wf-radius-sm);
|
|
10149
|
+
}
|
|
10150
|
+
|
|
10151
|
+
.wf-sortable-item:active {
|
|
10152
|
+
cursor: grabbing;
|
|
10153
|
+
}
|
|
10154
|
+
|
|
10155
|
+
.wf-sortable-item.wf-sortable-dragging {
|
|
10156
|
+
opacity: 0.6;
|
|
10157
|
+
}
|
|
10158
|
+
|
|
10159
|
+
.wf-sortable-item.wf-sortable-over {
|
|
10160
|
+
transform: translateY(2px);
|
|
10161
|
+
box-shadow: 0 0 0 2px var(--wf-color-primary-bg), 0 0 0 1px var(--wf-color-primary);
|
|
10162
|
+
}
|
|
10163
|
+
|
|
10164
|
+
.wf-sortable-item:hover {
|
|
10165
|
+
background: var(--wf-color-bg-hover);
|
|
10166
|
+
}
|
|
10167
|
+
|
|
9376
10168
|
/* weifuwu/components — Space 间距容器 */
|
|
9377
10169
|
|
|
9378
10170
|
.wf-space {
|
|
@@ -9404,7 +10196,7 @@ body.wf-dragging {
|
|
|
9404
10196
|
padding: var(--wf-space-md);
|
|
9405
10197
|
border-radius: var(--wf-radius-md);
|
|
9406
10198
|
background: var(--wf-surface-bg);
|
|
9407
|
-
|
|
10199
|
+
border: var(--wf-border-width) solid var(--wf-color-border-light); /* 边界即结构:细边框——阴影仅抬升(hover) */
|
|
9408
10200
|
font-family: var(--wf-font-sans);
|
|
9409
10201
|
}
|
|
9410
10202
|
|
|
@@ -9451,6 +10243,10 @@ body.wf-dragging {
|
|
|
9451
10243
|
transform: translateY(-2px);
|
|
9452
10244
|
box-shadow: var(--wf-shadow-md);
|
|
9453
10245
|
}
|
|
10246
|
+
.wf-stat--clickable:focus-visible {
|
|
10247
|
+
outline: none;
|
|
10248
|
+
box-shadow: var(--wf-shadow-md), var(--wf-focus-ring);
|
|
10249
|
+
}
|
|
9454
10250
|
|
|
9455
10251
|
/* weifuwu/components — Steps */
|
|
9456
10252
|
|
|
@@ -9486,7 +10282,7 @@ body.wf-dragging {
|
|
|
9486
10282
|
.wf-step--done .wf-step-num {
|
|
9487
10283
|
background: var(--wf-color-primary);
|
|
9488
10284
|
color: var(--wf-color-on-brand);
|
|
9489
|
-
font-size: 14px
|
|
10285
|
+
font-size: var(--wf-font-size-base); /* 14px 同值 token 化——compact 预设可缩放 */
|
|
9490
10286
|
}
|
|
9491
10287
|
|
|
9492
10288
|
.wf-step--current .wf-step-num {
|
|
@@ -9589,6 +10385,105 @@ body.wf-dragging {
|
|
|
9589
10385
|
color: var(--wf-color-text);
|
|
9590
10386
|
}
|
|
9591
10387
|
|
|
10388
|
+
/* weifuwu/components — TabBar 底部标签栏 */
|
|
10389
|
+
|
|
10390
|
+
.wf-tab-bar {
|
|
10391
|
+
display: flex;
|
|
10392
|
+
align-items: stretch;
|
|
10393
|
+
background: var(--wf-color-bg-elevated);
|
|
10394
|
+
border-top: 1px solid var(--wf-color-border);
|
|
10395
|
+
/* 小按钮固定尺寸纪律(§5.6):防全局 button min-height:36px 撑高 tab */
|
|
10396
|
+
min-height: 56px;
|
|
10397
|
+
}
|
|
10398
|
+
|
|
10399
|
+
/* 底部固定:safe-area 避让手势条 + 浮层层级 */
|
|
10400
|
+
.wf-tab-bar--fixed {
|
|
10401
|
+
position: fixed;
|
|
10402
|
+
left: 0;
|
|
10403
|
+
right: 0;
|
|
10404
|
+
bottom: 0;
|
|
10405
|
+
z-index: var(--wf-z-popover);
|
|
10406
|
+
padding-bottom: env(safe-area-inset-bottom, 0px);
|
|
10407
|
+
}
|
|
10408
|
+
|
|
10409
|
+
.wf-tab-bar-item {
|
|
10410
|
+
flex: 1;
|
|
10411
|
+
display: flex;
|
|
10412
|
+
flex-direction: column;
|
|
10413
|
+
align-items: center;
|
|
10414
|
+
justify-content: center;
|
|
10415
|
+
gap: 4px;
|
|
10416
|
+
padding: 8px 4px;
|
|
10417
|
+
background: transparent;
|
|
10418
|
+
border: none;
|
|
10419
|
+
cursor: pointer;
|
|
10420
|
+
color: var(--wf-color-text-tertiary);
|
|
10421
|
+
transition: color var(--wf-dur-fast) var(--wf-ease-out),
|
|
10422
|
+
background-color var(--wf-dur-fast) var(--wf-ease-out);
|
|
10423
|
+
position: relative;
|
|
10424
|
+
}
|
|
10425
|
+
|
|
10426
|
+
.wf-tab-bar-item:hover:not(:disabled) {
|
|
10427
|
+
color: var(--wf-color-text-secondary);
|
|
10428
|
+
background: var(--wf-state-hover);
|
|
10429
|
+
}
|
|
10430
|
+
|
|
10431
|
+
.wf-tab-bar-item:active:not(:disabled) {
|
|
10432
|
+
background: var(--wf-state-pressed);
|
|
10433
|
+
}
|
|
10434
|
+
|
|
10435
|
+
.wf-tab-bar-item--active {
|
|
10436
|
+
color: var(--wf-color-primary-text);
|
|
10437
|
+
font-weight: var(--wf-font-weight-semibold);
|
|
10438
|
+
}
|
|
10439
|
+
|
|
10440
|
+
.wf-tab-bar-item--active::before {
|
|
10441
|
+
/* 激活指示条(细边框美学——层级用边界表达) */
|
|
10442
|
+
content: '';
|
|
10443
|
+
position: absolute;
|
|
10444
|
+
top: 0;
|
|
10445
|
+
left: 25%;
|
|
10446
|
+
right: 25%;
|
|
10447
|
+
height: 2px;
|
|
10448
|
+
border-radius: 0 0 2px 2px;
|
|
10449
|
+
background: var(--wf-color-primary);
|
|
10450
|
+
}
|
|
10451
|
+
|
|
10452
|
+
.wf-tab-bar-item:focus-visible {
|
|
10453
|
+
outline: none;
|
|
10454
|
+
box-shadow: var(--wf-focus-ring);
|
|
10455
|
+
}
|
|
10456
|
+
|
|
10457
|
+
.wf-tab-bar-icon-wrap {
|
|
10458
|
+
position: relative;
|
|
10459
|
+
display: inline-flex;
|
|
10460
|
+
line-height: 1;
|
|
10461
|
+
}
|
|
10462
|
+
|
|
10463
|
+
/* 角标(右上角小圆点——badge 数字) */
|
|
10464
|
+
.wf-tab-bar-badge {
|
|
10465
|
+
position: absolute;
|
|
10466
|
+
top: -4px;
|
|
10467
|
+
right: -8px;
|
|
10468
|
+
min-width: 16px;
|
|
10469
|
+
height: 16px;
|
|
10470
|
+
padding: 0 4px;
|
|
10471
|
+
border-radius: var(--wf-radius-xl);
|
|
10472
|
+
background: var(--wf-color-error);
|
|
10473
|
+
color: var(--wf-color-on-brand);
|
|
10474
|
+
font-size: 10px;
|
|
10475
|
+
line-height: 16px;
|
|
10476
|
+
text-align: center;
|
|
10477
|
+
font-weight: var(--wf-font-weight-semibold);
|
|
10478
|
+
pointer-events: none;
|
|
10479
|
+
}
|
|
10480
|
+
|
|
10481
|
+
.wf-tab-bar-label {
|
|
10482
|
+
font-size: var(--wf-font-size-xs);
|
|
10483
|
+
line-height: 1.2;
|
|
10484
|
+
white-space: nowrap;
|
|
10485
|
+
}
|
|
10486
|
+
|
|
9592
10487
|
/* weifuwu/components — Table */
|
|
9593
10488
|
|
|
9594
10489
|
.wf-table-wrap {
|
|
@@ -9612,8 +10507,8 @@ body.wf-dragging {
|
|
|
9612
10507
|
font-weight: var(--wf-font-weight-medium);
|
|
9613
10508
|
font-size: var(--wf-font-size-xs);
|
|
9614
10509
|
color: var(--wf-color-text-tertiary);
|
|
9615
|
-
text-transform: uppercase
|
|
9616
|
-
letter-spacing:
|
|
10510
|
+
text-transform: var(--wf-heading-case); /* CJK 默认 none,英文可覆盖 uppercase */
|
|
10511
|
+
letter-spacing: var(--wf-heading-tracking);
|
|
9617
10512
|
padding: var(--wf-space) var(--wf-space-sm);
|
|
9618
10513
|
background: var(--wf-color-bg-secondary);
|
|
9619
10514
|
white-space: nowrap;
|
|
@@ -9750,6 +10645,8 @@ body.wf-dragging {
|
|
|
9750
10645
|
}
|
|
9751
10646
|
|
|
9752
10647
|
.wf-tab {
|
|
10648
|
+
display: inline-flex;
|
|
10649
|
+
align-items: center;
|
|
9753
10650
|
padding: var(--wf-space) var(--wf-space-md);
|
|
9754
10651
|
border: none;
|
|
9755
10652
|
background: none;
|
|
@@ -9767,7 +10664,14 @@ body.wf-dragging {
|
|
|
9767
10664
|
.wf-tab:hover {
|
|
9768
10665
|
color: var(--wf-color-text);
|
|
9769
10666
|
}
|
|
9770
|
-
|
|
10667
|
+
.wf-tab:active {
|
|
10668
|
+
background: var(--wf-state-pressed);
|
|
10669
|
+
}
|
|
10670
|
+
.wf-tab:focus-visible {
|
|
10671
|
+
outline: none;
|
|
10672
|
+
box-shadow: var(--wf-focus-ring);
|
|
10673
|
+
border-radius: var(--wf-radius-xs);
|
|
10674
|
+
}
|
|
9771
10675
|
.wf-tab--active {
|
|
9772
10676
|
color: var(--wf-color-primary-text);
|
|
9773
10677
|
}
|
|
@@ -9790,6 +10694,50 @@ body.wf-dragging {
|
|
|
9790
10694
|
display: none;
|
|
9791
10695
|
}
|
|
9792
10696
|
|
|
10697
|
+
/* ── 可关闭 tab(closable) ── */
|
|
10698
|
+
.wf-tab-close {
|
|
10699
|
+
display: inline-flex;
|
|
10700
|
+
align-items: center;
|
|
10701
|
+
justify-content: center;
|
|
10702
|
+
width: 16px;
|
|
10703
|
+
height: 16px;
|
|
10704
|
+
margin-left: 6px;
|
|
10705
|
+
border-radius: var(--wf-radius-sm);
|
|
10706
|
+
color: var(--wf-color-text-tertiary);
|
|
10707
|
+
cursor: pointer;
|
|
10708
|
+
transition: background-color var(--wf-dur-fast) var(--wf-ease-out),
|
|
10709
|
+
color var(--wf-dur-fast) var(--wf-ease-out);
|
|
10710
|
+
}
|
|
10711
|
+
|
|
10712
|
+
.wf-tab-close:hover {
|
|
10713
|
+
background: var(--wf-state-hover);
|
|
10714
|
+
color: var(--wf-color-error-text);
|
|
10715
|
+
}
|
|
10716
|
+
|
|
10717
|
+
/* ── 新增 + 按钮(addable) ── */
|
|
10718
|
+
.wf-tab-add {
|
|
10719
|
+
display: inline-flex;
|
|
10720
|
+
align-items: center;
|
|
10721
|
+
justify-content: center;
|
|
10722
|
+
width: 24px;
|
|
10723
|
+
height: 24px;
|
|
10724
|
+
margin: auto 4px;
|
|
10725
|
+
padding: 0;
|
|
10726
|
+
border: none;
|
|
10727
|
+
background: transparent;
|
|
10728
|
+
border-radius: var(--wf-radius-sm);
|
|
10729
|
+
color: var(--wf-color-text-tertiary);
|
|
10730
|
+
cursor: pointer;
|
|
10731
|
+
flex-shrink: 0;
|
|
10732
|
+
transition: background-color var(--wf-dur-fast) var(--wf-ease-out),
|
|
10733
|
+
color var(--wf-dur-fast) var(--wf-ease-out);
|
|
10734
|
+
}
|
|
10735
|
+
|
|
10736
|
+
.wf-tab-add:hover {
|
|
10737
|
+
background: var(--wf-state-hover);
|
|
10738
|
+
color: var(--wf-color-primary-text);
|
|
10739
|
+
}
|
|
10740
|
+
|
|
9793
10741
|
/* weifuwu/components — Tag */
|
|
9794
10742
|
|
|
9795
10743
|
.wf-tag {
|
|
@@ -9830,6 +10778,12 @@ body.wf-dragging {
|
|
|
9830
10778
|
color: inherit;
|
|
9831
10779
|
}
|
|
9832
10780
|
.wf-tag-close:hover { opacity: 1; }
|
|
10781
|
+
.wf-tag-close:active { opacity: 0.5; }
|
|
10782
|
+
.wf-tag-close:focus-visible {
|
|
10783
|
+
outline: none;
|
|
10784
|
+
box-shadow: var(--wf-focus-ring);
|
|
10785
|
+
border-radius: var(--wf-radius-sm);
|
|
10786
|
+
}
|
|
9833
10787
|
|
|
9834
10788
|
/* weifuwu/components — TagsInput */
|
|
9835
10789
|
|
|
@@ -10432,19 +11386,20 @@ body.wf-dragging {
|
|
|
10432
11386
|
}
|
|
10433
11387
|
|
|
10434
11388
|
.wf-tooltip--bottom {
|
|
10435
|
-
|
|
11389
|
+
/* 定位全权归 JS(usePopup computePos——fixed left/top 已含中心对齐/偏移)——
|
|
11390
|
+
* CSS transform 残留(旧 absolute 定位)与 JS 坐标叠加双倍偏移——已删 */
|
|
10436
11391
|
}
|
|
10437
11392
|
|
|
10438
11393
|
.wf-tooltip--top {
|
|
10439
|
-
|
|
11394
|
+
/* 同上(旧 translateX(-50%) translateY(-100%) 与 JS 定位叠加——偏左上) */
|
|
10440
11395
|
}
|
|
10441
11396
|
|
|
10442
11397
|
.wf-tooltip--left {
|
|
10443
|
-
|
|
11398
|
+
/* 同上 */
|
|
10444
11399
|
}
|
|
10445
11400
|
|
|
10446
11401
|
.wf-tooltip--right {
|
|
10447
|
-
|
|
11402
|
+
/* 同上 */
|
|
10448
11403
|
}
|
|
10449
11404
|
|
|
10450
11405
|
.wf-tooltip-arrow {
|
|
@@ -10561,16 +11516,16 @@ body.wf-dragging {
|
|
|
10561
11516
|
}
|
|
10562
11517
|
.wf-tour-title {
|
|
10563
11518
|
font-weight: 600;
|
|
10564
|
-
font-size: 14px
|
|
11519
|
+
font-size: var(--wf-font-size-base); /* 14px 同值 token 化——compact 预设可缩放 */
|
|
10565
11520
|
}
|
|
10566
11521
|
.wf-tour-step {
|
|
10567
|
-
font-size: 12px
|
|
11522
|
+
font-size: var(--wf-font-size-xs); /* 12px 同值 token 化——compact 预设可缩放 */
|
|
10568
11523
|
color: var(--wf-color-text-tertiary);
|
|
10569
11524
|
flex-shrink: 0;
|
|
10570
11525
|
}
|
|
10571
11526
|
|
|
10572
11527
|
.wf-tour-content {
|
|
10573
|
-
font-size: 13px
|
|
11528
|
+
font-size: var(--wf-font-size-sm); /* 13px 同值 token 化——compact 预设可缩放 */
|
|
10574
11529
|
color: var(--wf-color-text-secondary);
|
|
10575
11530
|
line-height: 1.6;
|
|
10576
11531
|
}
|
|
@@ -10589,7 +11544,7 @@ body.wf-dragging {
|
|
|
10589
11544
|
border: 1px solid var(--wf-color-border);
|
|
10590
11545
|
background: var(--wf-color-bg);
|
|
10591
11546
|
color: var(--wf-color-text);
|
|
10592
|
-
font-size: 13px
|
|
11547
|
+
font-size: var(--wf-font-size-sm); /* 13px 同值 token 化——compact 预设可缩放 */
|
|
10593
11548
|
cursor: pointer;
|
|
10594
11549
|
display: inline-flex;
|
|
10595
11550
|
align-items: center;
|
|
@@ -10949,10 +11904,10 @@ body.wf-dragging {
|
|
|
10949
11904
|
|
|
10950
11905
|
.wf-treeselect-placeholder {
|
|
10951
11906
|
color: var(--wf-color-text-tertiary);
|
|
10952
|
-
font-size: 13px
|
|
11907
|
+
font-size: var(--wf-font-size-sm); /* 13px 同值 token 化——compact 预设可缩放 */
|
|
10953
11908
|
}
|
|
10954
11909
|
.wf-treeselect-label {
|
|
10955
|
-
font-size: 13px
|
|
11910
|
+
font-size: var(--wf-font-size-sm); /* 13px 同值 token 化——compact 预设可缩放 */
|
|
10956
11911
|
min-width: 0;
|
|
10957
11912
|
overflow: hidden;
|
|
10958
11913
|
text-overflow: ellipsis;
|
|
@@ -11058,6 +12013,10 @@ body.wf-dragging {
|
|
|
11058
12013
|
max-width: 100%; /* block 父级下约束在容器内截断 */
|
|
11059
12014
|
}
|
|
11060
12015
|
|
|
12016
|
+
.wf-videoplayer {
|
|
12017
|
+
width: 100%;
|
|
12018
|
+
}
|
|
12019
|
+
|
|
11061
12020
|
/* weifuwu/components — VirtualList */
|
|
11062
12021
|
|
|
11063
12022
|
.wf-virtual-list {
|
|
@@ -11265,4 +12224,28 @@ body.wf-dragging {
|
|
|
11265
12224
|
background-size: auto;
|
|
11266
12225
|
}
|
|
11267
12226
|
|
|
12227
|
+
.wf-wave {
|
|
12228
|
+
position: relative;
|
|
12229
|
+
display: inline-block;
|
|
12230
|
+
overflow: hidden;
|
|
12231
|
+
border-radius: inherit; /* 跟随子元素圆角(Button 波纹圆角一致) */
|
|
12232
|
+
-webkit-tap-highlight-color: transparent;
|
|
12233
|
+
}
|
|
12234
|
+
|
|
12235
|
+
.wf-wave-ripple {
|
|
12236
|
+
position: absolute;
|
|
12237
|
+
border-radius: 50%;
|
|
12238
|
+
pointer-events: none;
|
|
12239
|
+
background: color-mix(in srgb, currentColor 12%, transparent);
|
|
12240
|
+
transform: scale(0);
|
|
12241
|
+
animation: wf-wave-pop var(--wf-dur-base) var(--wf-ease-out) forwards;
|
|
12242
|
+
}
|
|
12243
|
+
|
|
12244
|
+
@keyframes wf-wave-pop {
|
|
12245
|
+
to {
|
|
12246
|
+
transform: scale(1);
|
|
12247
|
+
opacity: 0;
|
|
12248
|
+
}
|
|
12249
|
+
}
|
|
12250
|
+
|
|
11268
12251
|
}
|