From e84fbb8a76ce62b2fee3af0bcb85cb4ff822e473 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=88=B1=E7=AC=91=E7=9A=84=E6=AF=9B=E6=AF=9B=E8=99=AB?= <315515767@qq.com> Date: Tue, 4 Aug 2026 21:20:53 +0800 Subject: [PATCH] =?UTF-8?q?refactor(canvas):=20=E7=A1=AC=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E5=AD=97=E5=8F=B7/=E5=9C=86=E8=A7=92=E6=B8=85=E7=90=86=20?= =?UTF-8?q?=E2=86=92=20=E8=AF=AD=E4=B9=89=20token=EF=BC=88=E5=AE=A1?= =?UTF-8?q?=E8=AE=A1=20D1/P1-3=EF=BC=89=20(#131)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 清理画布组件散落的硬编码字号与圆角,统一走 token 体系: 字号: - 新增 --fs-nano(7px) 覆盖原 text-[6px]/text-[7px] 子微型标注 (角标计数、节点预览、% 后缀) - text-[19px] → --fs-heading-lg(18px) 圆角(就近映射,±1~2px): - rounded-[3px] → --r-xs | rounded-[5px] → --r-sm - rounded-[6px] → --r-sm | rounded-[7px] → --r-md - rounded-[18px] → --r-2xl 涉及 11 个组件文件。rounded-[1px](minimap 视口指示框,刻意尖角)保留。 颜色项(bg-white/border-stone)经核实均带 dark: 变体,属标准 Tailwind 双主题模式非误用,不在本轮处理。 Co-authored-by: sikongyue <3155157671@qq.com> --- web/src/components/canvas/canvas-agent-chat-ui.tsx | 2 +- web/src/components/canvas/canvas-agent-panel-chrome.tsx | 4 ++-- web/src/components/canvas/canvas-asset-tray.tsx | 4 ++-- web/src/components/canvas/canvas-context-menu.tsx | 2 +- web/src/components/canvas/canvas-create-command-grid.tsx | 2 +- web/src/components/canvas/canvas-emotion-workspace.tsx | 4 ++-- web/src/components/canvas/canvas-frame-node.tsx | 6 +++--- .../canvas/canvas-image-toolbar-settings-modal.tsx | 4 ++-- web/src/components/canvas/canvas-node-emotion-panel.tsx | 2 +- web/src/components/canvas/canvas-zoom-controls.tsx | 2 +- web/src/styles/globals.css | 1 + 11 files changed, 17 insertions(+), 16 deletions(-) diff --git a/web/src/components/canvas/canvas-agent-chat-ui.tsx b/web/src/components/canvas/canvas-agent-chat-ui.tsx index e9f900912..212c77cf3 100644 --- a/web/src/components/canvas/canvas-agent-chat-ui.tsx +++ b/web/src/components/canvas/canvas-agent-chat-ui.tsx @@ -257,7 +257,7 @@ export function AgentPanelTabs({ value, items, theme, right, o
-

从当前画布开始

+

从当前画布开始

{visibleStarterActions.map(({ label, icon: Icon }) => ( diff --git a/web/src/components/canvas/canvas-create-command-grid.tsx b/web/src/components/canvas/canvas-create-command-grid.tsx index c145f3e23..a18cac9d3 100644 --- a/web/src/components/canvas/canvas-create-command-grid.tsx +++ b/web/src/components/canvas/canvas-create-command-grid.tsx @@ -37,7 +37,7 @@ export function CanvasCreateCommandGrid({ commands, variant = "node" }: { comman > {command.icon} {command.label} - {command.badge ? {command.badge} : null} + {command.badge ? {command.badge} : null} ))}
diff --git a/web/src/components/canvas/canvas-emotion-workspace.tsx b/web/src/components/canvas/canvas-emotion-workspace.tsx index dc5506647..304d68d14 100644 --- a/web/src/components/canvas/canvas-emotion-workspace.tsx +++ b/web/src/components/canvas/canvas-emotion-workspace.tsx @@ -255,7 +255,7 @@ function FaceSelectionOverlay({ node, viewport, containerRef, imageWidth, imageH key={face.id} type="button" aria-label={selected ? `选择${selected.name}` : "选择此人脸"} - className={`absolute rounded-[7px] border-2 ${interactive ? "pointer-events-auto" : "pointer-events-none"}`} + className={`absolute rounded-[var(--r-md)] border-2 ${interactive ? "pointer-events-auto" : "pointer-events-none"}`} style={{ left: `${(face.x / imageWidth) * 100}%`, top: `${(face.y / imageHeight) * 100}%`, width: `${(face.width / imageWidth) * 100}%`, height: `${(face.height / imageHeight) * 100}%`, borderColor: active ? theme.accent.primary : "rgba(255,255,255,.94)", boxShadow: active ? `0 0 0 3px ${theme.accent.primarySoft}, 0 8px 24px rgba(0,0,0,.24)` : "0 8px 20px rgba(0,0,0,.18)" }} whileHover={{ scale: 1.025 }} whileTap={{ scale: 0.985 }} @@ -267,7 +267,7 @@ function FaceSelectionOverlay({ node, viewport, containerRef, imageWidth, imageH ); })} - {manualDraft ?
: null} + {manualDraft ?
: null}
); } diff --git a/web/src/components/canvas/canvas-frame-node.tsx b/web/src/components/canvas/canvas-frame-node.tsx index 25309d2e1..41e35b16d 100644 --- a/web/src/components/canvas/canvas-frame-node.tsx +++ b/web/src/components/canvas/canvas-frame-node.tsx @@ -263,12 +263,12 @@ function FramePreview({ nodes, frame, theme }: { nodes: CanvasNodeData[]; frame:
{layout.length ? ( layout.map(({ node, ...style }) => ( -
+
{node.type === CanvasNodeType.Image && node.metadata?.content ? : null} {node.type === CanvasNodeType.Video && node.metadata?.content ?
)) ) : ( 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 f7b2e8bb5..b1d244db2 100644 --- a/web/src/components/canvas/canvas-image-toolbar-settings-modal.tsx +++ b/web/src/components/canvas/canvas-image-toolbar-settings-modal.tsx @@ -72,9 +72,9 @@ export function ImageToolSettingsModal({ open, tools, selectedIds, showLabels, o
快捷工具{selectedTools.length}/{maxSelected}
updateSelectedTools(values as ImageQuickToolId[])}> {tools.map((tool) => ( -