From 250acaf1c5b7a41350ceede1c5d38d9979ea31d1 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 8 Mar 2026 15:14:12 +0800 Subject: [PATCH] refine realtime canvas toolbar layout --- components/canvas/RealtimeCanvasDialog.tsx | 451 +++++++++++++++++++-- 1 file changed, 421 insertions(+), 30 deletions(-) diff --git a/components/canvas/RealtimeCanvasDialog.tsx b/components/canvas/RealtimeCanvasDialog.tsx index 29c1315b6..1c6ad0a37 100644 --- a/components/canvas/RealtimeCanvasDialog.tsx +++ b/components/canvas/RealtimeCanvasDialog.tsx @@ -18,7 +18,10 @@ import { } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; +import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { Slider } from "@/components/ui/slider"; +import { Textarea } from "@/components/ui/textarea"; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; import { buildImageProxyUrl } from "@/lib/image-delivery"; import { @@ -35,6 +38,7 @@ import { Upload, Sparkles, Save, + SlidersHorizontal, Undo2, Redo2, Send, @@ -2431,6 +2435,34 @@ export function RealtimeCanvasDialog({ setStatusMessage("新建空白项目"); }, [clearPreviewCanvas, resetCanvas]); + const compactToolButtonClass = + "h-10 w-10 rounded-[18px] text-zinc-600 transition hover:bg-zinc-100 hover:text-zinc-900"; + const compactToolButtonActiveClass = "bg-black text-white hover:bg-black hover:text-white"; + const currentModeLabel = + brushMode === "select" + ? "鼠标" + : brushMode === "brush" + ? "画笔" + : brushMode === "eraser" + ? "橡皮" + : brushMode === "rect" + ? "矩形" + : brushMode === "circle" + ? "圆形" + : "直线"; + const currentModeDescription = + brushMode === "select" + ? "选择图层并拖动位置" + : brushMode === "brush" + ? "在画布上自由绘制" + : brushMode === "eraser" + ? "擦除已有草图笔触" + : brushMode === "rect" + ? "绘制矩形轮廓" + : brushMode === "circle" + ? "绘制圆形轮廓" + : "绘制直线轮廓"; + const content = ( <> {standalone ? ( @@ -2444,7 +2476,7 @@ export function RealtimeCanvasDialog({ 左侧绘制草图,右侧实时预览。 )} -
+
@@ -3027,40 +3059,399 @@ export function RealtimeCanvasDialog({ className="hidden" onChange={handleSketchUpload} /> -
-
-
- +
+ +
+
+ + + + + +
鼠标
+
选择图层并拖动位置
+
+
+ + + + + +
画笔
+
在画布上自由绘制
+
+
+ + + + + +
橡皮
+
擦除当前草图笔触
+
+
+ + + + + + + + +
形状工具
+
+ + + +
+
+
+ +
形状
+
矩形、圆形与直线
+
+
+
+ +
+ + + + + + + + +
+
+
颜色
+ + setBrushColor(event.target.value)} + className="sr-only" + title="自定义颜色" + /> +
+
+
+ 粗细 + {brushSize} +
+ setBrushSize(val)} + className="w-full" + trackClassName="h-2.5 bg-zinc-200 shadow-inner" + rangeClassName="bg-black" + thumbClassName="h-5 w-5 border border-zinc-300 bg-white shadow-sm" + /> +
+
+
+
+ +
画笔设置
+
调整颜色和粗细
+
+
+
+ +
+ + + + + +
上传图片
+
添加新的图片图层
+
+
+ + + + + +
保存项目
+
保存当前画布状态
+
+
+ + + + + +
项目列表
+
打开已保存项目
+
+
+ + + + + +
新建空白
+
清空并开始新项目
+
+
+
+ +
+ + + + + +
撤销
+
回退上一步编辑
+
+
+ + + + + +
重做
+
恢复已撤销操作
+
+
+ {standalone ? ( + + + + + +
关闭页面
+
返回上一层画布
+
+
+ ) : null} +
- + +
+