feat(canvas): frame-based layer separation UI

Render and manage the separated layers produced by the edit-elements
action as a manual-frame container with attached image and text
children.

- canvasNodeOps: frame container/child helpers, render ordering,
  auto-attach nodes to containing frames, and layer reordering
- CanvasWorkspace wires frame-aware selection, drag, resize, hide/lock,
  and layer reorder through the new ops
- CanvasPanels: expandable layer tree with rename/reorder
- designGateway.submitGeneratorTask + GeneratorTaskSubmitResponse and
  bbox/generator_name artifact metadata in the domain
- ArtboardPreview shows a working state for generating frame layers
- i18n: expandLayer / renameLayer / layerTitlePlaceholder; styles

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-09 12:27:00 +08:00
parent 039d166972
commit a1503a1687
9 changed files with 613 additions and 94 deletions
+10
View File
@@ -148,7 +148,9 @@ export type GeneratorTaskArtifact = {
content: string;
metadata: {
artifact_id?: string;
bbox?: number[];
format?: string;
generator_name?: string;
height?: number;
label?: string;
node_id?: string;
@@ -177,6 +179,14 @@ export type GeneratorTaskResponse = {
};
};
export type GeneratorTaskSubmitResponse = {
code: number;
message: string;
data: {
generator_task_id: string;
};
};
export type DeleteProjectResponse = {
id: string;
deleted: boolean;