feat: complete TASK-WP4-02 canvas element editing

This commit is contained in:
suyx
2026-08-03 10:58:17 +08:00
parent 8d8fbeb816
commit d16802c164
11 changed files with 1314 additions and 67 deletions
+125 -3
View File
@@ -155,20 +155,73 @@
.editor-thumb { width: 52px; height: 68px; flex: 0 0 auto; border: 1px solid #b9b9b3; background: #e8e8e5 center / cover no-repeat; }
.editor-muted { color: #62625d; font-size: 12px; }
.editor-workspace {
.editor-sticker-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.editor-sticker-grid button {
display: grid;
min-width: 0;
min-height: 132px;
place-items: center;
gap: 4px;
padding: 10px 6px;
border: 1px solid #85857f;
border-radius: 0;
background: #ffffff;
color: #111111;
}
.editor-sticker-grid button:disabled { color: #62625d; background: #e8e8e5; cursor: not-allowed; }
.editor-sticker-grid button > span:last-child { overflow-wrap: anywhere; font-size: 11px; }
.editor-sticker-preview { display: block; width: 58px; height: 58px; border: 3px solid #111111; background: #f2f400; }
.editor-sticker-preview.stk002 { border-radius: 50%; background: #1769aa; }
.editor-limit { margin: 12px 0 0; padding: 8px; border-left: 3px solid #c92a24; background: #ffffff; color: #8f1d14; font-size: 12px; }
.editor-workspace {
position: relative;
display: grid;
grid-template-rows: 40px minmax(0, 1fr);
min-width: 0;
min-height: 0;
place-items: center;
padding: 32px;
padding: 16px 32px 32px;
background: #e8e8e5;
overflow: auto;
}
.editor-canvas-tools {
display: flex;
min-width: 0;
min-height: 36px;
align-items: center;
gap: 4px;
align-self: start;
}
.editor-canvas-tools button {
min-width: 76px;
min-height: 32px;
padding: 5px 8px;
border: 1px solid #85857f;
border-radius: 0;
background: #ffffff;
color: #111111;
font: inherit;
font-size: 12px;
font-weight: 700;
}
.editor-canvas-tools button.active { border-color: #005fcc; background: #ffffff; box-shadow: inset 0 -3px #005fcc; }
.editor-canvas-tools button:disabled { color: #62625d; background: #d8d8d3; cursor: not-allowed; }
.editor-canvas-frame {
position: relative;
display: grid;
width: min(100%, 720px);
max-height: calc(100vh - 128px);
max-height: calc(100vh - 168px);
place-items: center;
border: 1px solid #62625d;
background: #ffffff;
@@ -178,9 +231,47 @@
.editor-canvas { display: block; width: 100%; height: 100%; outline: none; }
.editor-canvas:focus { outline: 3px solid #005fcc; outline-offset: 3px; }
.editor-candidates {
position: absolute;
z-index: 3;
display: grid;
width: min(260px, 80%);
max-height: 200px;
overflow: auto;
border: 2px solid #111111;
background: #ffffff;
box-shadow: 6px 6px 0 #111111;
transform: translate(10px, 10px);
}
.editor-candidates button {
min-height: 36px;
padding: 7px 9px;
border: 0;
border-bottom: 1px solid #b9b9b3;
background: #ffffff;
color: #111111;
text-align: left;
font: inherit;
font-size: 12px;
}
.editor-snap-status {
position: absolute;
align-self: end;
margin-bottom: 8px;
padding: 5px 9px;
border: 1px solid #005fcc;
background: #ffffff;
color: #005fcc;
font-size: 11px;
font-weight: 700;
}
.editor-inspector header { padding-bottom: 16px; border-bottom: 1px solid #b9b9b3; }
.editor-inspector header p { margin: 0 0 4px; }
.editor-inspector h2 { margin: 0; font-size: 20px; }
.editor-object-id { margin: 12px 0 0; font-family: Consolas, monospace; font-size: 12px; }
.editor-inspector > label { display: grid; gap: 6px; margin-top: 18px; font-size: 13px; font-weight: 700; }
.editor-inspector select,
.editor-inspector input[type="range"] { width: 100%; }
@@ -190,6 +281,37 @@
.editor-inspector-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 24px; }
.editor-primary { background: #f2f400 !important; }
.editor-object-moves,
.editor-object-tools,
.editor-layer-tools,
.editor-object-actions {
display: grid;
gap: 6px;
margin-top: 18px;
}
.editor-object-moves { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.editor-object-tools,
.editor-layer-tools { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.editor-object-actions { grid-template-columns: 1fr 1fr; padding-top: 18px; border-top: 1px solid #b9b9b3; }
.editor-object-moves button,
.editor-object-tools button,
.editor-layer-tools button,
.editor-object-actions button,
.editor-wide-command {
min-height: 36px;
padding: 6px;
border: 1px solid #85857f;
border-radius: 0;
background: #ffffff;
color: #111111;
font: inherit;
font-size: 12px;
font-weight: 700;
}
.editor-wide-command { width: 100%; margin-top: 18px; }
.editor-danger { border-color: #c92a24 !important; color: #8f1d14 !important; }
.editor-statusbar {
display: flex;
align-items: center;