From b4c357a876eb4bf7b08c55fe3c616079de772a53 Mon Sep 17 00:00:00 2001 From: ddCat <2695092045@qq.com> Date: Fri, 14 Aug 2026 20:20:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(platform):=20=E5=B7=A5=E4=BD=9C=E5=8F=B0?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=20-=20=E7=BB=9F=E4=B8=80=E5=8D=A1=E7=89=87?= =?UTF-8?q?=E3=80=81=E6=8E=A7=E4=BB=B6=E4=B8=8E=E5=BC=B9=E7=AA=97=E8=A7=86?= =?UTF-8?q?=E8=A7=89=E5=B9=B6=E6=B8=85=E7=90=86=E9=87=8D=E5=A4=8D=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 11 +- .../assets/asset-library-picker-modal.tsx | 15 +- .../canvas-image-toolbar-settings-modal.tsx | 23 +- .../canvas/canvas-node-mask-edit-dialog.tsx | 10 +- .../components/canvas/canvas-node-toolbar.tsx | 5 +- web/src/lib/app-theme.ts | 194 +++--- web/src/pages/assets/index.tsx | 8 +- web/src/pages/projects/detail.tsx | 4 +- web/src/pages/projects/detail/assets.tsx | 20 +- web/src/pages/projects/detail/settings.tsx | 22 +- .../settings/prompt-preferences-pane.tsx | 8 +- web/src/pages/skills/index.tsx | 4 +- web/src/pages/wallet/index.tsx | 21 +- web/src/styles/globals.css | 553 ++++++++---------- 14 files changed, 408 insertions(+), 490 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index aa290545d..79710404b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -123,7 +123,16 @@ - 页面级分类导航至少 44px 高,并提供”图标 + 明确文字”入口和一致选中态;重要设置不能只藏在无文字图标中。 - 可编辑的工作区、画布和对象名称常显铅笔图标并支持单击编辑;双击和右键只能作为快捷方式,不能作为唯一发现路径。 - 不把页面大段说明文字当作”如何使用”的常驻教程;通过明确控件、空态、反馈和可发现的图标+文字表达功能。 -- **卡片、列表、交互动效遵循 [UI 设计系统规范](docs/ui-design-system.md)**:统一卡片表面色、边框、投影、hover状态(240ms/translateY -4px)、双主题均衡策略。改造卡片前必须先读该规范,确保新增样式符合设计token体系。 +- **卡片、列表、交互动效遵循 [UI 设计系统规范](docs/ui-design-system.md)**:统一卡片表面、状态描边和 hover(180ms/translateY -2px);普通卡片默认无边框、无 hairline、无投影。改造前先读规范并核对现有 token。 + +#### UI 修复防回归 + +- 主操作、普通选中、Checkbox/Radio 勾选和 Switch 是四种颜色角色;每种状态都必须为明暗主题成对定义背景与前景,禁止把 `primary` 实心色直接复用为普通选中态。 +- 持久切换按钮使用 `aria-pressed` 表达状态;`type="primary"` 只用于当前流程的主要命令,不用于表示“已选中”。 +- AntD Button、Switch、Checkbox、Radio、Segmented 的共性状态只在 `web/src/lib/app-theme.ts` 和全局兼容区维护;不得新增页面级 `.dark .ant-switch-*`、`.ant-checkbox-*` 或 Segmented 选中色补丁。组件级 CSS 只允许处理尺寸和布局。 +- 新增 CSS 前先搜索同名选择器和 token;回到唯一源规则修改,并删除被替代的末尾 override。新增 token 后必须确认定义真实存在且明暗主题均可解析,不能只在文档中声明。 +- 卡片层级通过 `--library-surface`、明度、间距和信息密度表达;禁止装饰性左侧竖条、默认 border、hairline、inset stroke、渐变光和卡片阴影。业务 selected、warning、error 等真实状态才可保留克制的语义描边或颜色。 +- 工作区 Modal 统一使用 `workspace-modal`,并按语义选择 `workspace-modal-compact`、默认 standard 或 `workspace-modal-wide`;素材选择统一复用 `AssetLibraryPickerModal`,页面不得复制按钮、弹窗宽度和素材网格样式。 ### 6.2 空间、响应式和动效 diff --git a/web/src/components/assets/asset-library-picker-modal.tsx b/web/src/components/assets/asset-library-picker-modal.tsx index d4ab0eb3d..31f89ff25 100644 --- a/web/src/components/assets/asset-library-picker-modal.tsx +++ b/web/src/components/assets/asset-library-picker-modal.tsx @@ -1,4 +1,4 @@ -import { Modal } from "antd"; +import { Button, Modal } from "antd"; import { Check, FileText, FolderOpen, Image as ImageIcon, LoaderCircle, Music2, Search, Upload, UserRound, Video } from "lucide-react"; import { useEffect, useMemo, useRef, useState, type ReactNode } from "react"; @@ -155,8 +155,7 @@ export function AssetLibraryPickerModal({ onCancel={() => { if (!working) onClose(); }} - width="min(1040px, calc(100vw - 24px))" - className="asset-library-picker-modal" + className="workspace-modal workspace-modal-wide asset-library-picker-modal" styles={{ container: { padding: 0 }, body: { padding: 0 } }} >
@@ -168,7 +167,7 @@ export function AssetLibraryPickerModal({
diff --git a/web/src/components/canvas/canvas-image-toolbar-settings-modal.tsx b/web/src/components/canvas/canvas-image-toolbar-settings-modal.tsx index e482281f1..30bf39de0 100644 --- a/web/src/components/canvas/canvas-image-toolbar-settings-modal.tsx +++ b/web/src/components/canvas/canvas-image-toolbar-settings-modal.tsx @@ -1,5 +1,5 @@ -import { useMemo, type CSSProperties, type ReactNode } from "react"; -import { Button, Checkbox, Modal, Space, Switch, Tag } from "antd"; +import { useMemo, type ReactNode } from "react"; +import { Button, Checkbox, Modal, Space, Switch } from "antd"; import { Ellipsis, Settings2, Type } from "lucide-react"; import { FloatingDock, type FloatingDockEntry } from "@/components/ui/aceternity/floating-dock"; @@ -46,35 +46,34 @@ export function ImageToolSettingsModal({ open, tools, selectedIds, showLabels, o return ( 自定义节点 Dock} open={open} centered - width={520} onCancel={onCancel} destroyOnHidden styles={{ body: { padding: 0 }, footer: { marginTop: 0 } }} - footer={} + footer={} > -
+
- + 显示功能名
-
-
+
-
快捷工具{selectedTools.length}/{maxSelected}
+
快捷工具{selectedTools.length}/{maxSelected}
updateSelectedTools(values as ImageQuickToolId[])}> {tools.map((tool) => ( -