fix(canvas): 画布创作交互 - 优化提示词面板并修复工具弹窗与节点缩放卡顿

This commit is contained in:
ddCat
2026-07-31 22:27:58 +08:00
parent 55b37df04c
commit 4def6d076f
13 changed files with 478 additions and 130 deletions

View File

@@ -1504,45 +1504,285 @@
display: none;
}
.canvas-composer-tools .canvas-composer-model-picker.ant-select {
.canvas-composer-tools .canvas-composer-model-picker {
width: 32px;
min-width: 32px;
}
.canvas-composer-tools .canvas-composer-model-picker .ant-select-content {
.canvas-composer-tools .canvas-composer-model-picker {
padding-inline: 7px !important;
}
.canvas-composer-tools .canvas-composer-model-picker .ant-select-content,
.canvas-composer-tools .canvas-model-picker-label {
min-width: 0;
}
.canvas-model-picker-popup .ant-select-item-option-content {
overflow: visible;
.canvas-composer-model-picker {
align-items: center;
appearance: none;
background: color-mix(in srgb, var(--workspace-surface-strong) 94%, var(--workspace-accent) 6%);
border: 0;
border-radius: 9px;
color: var(--foreground);
cursor: pointer;
display: flex;
font: inherit;
gap: 8px;
height: 32px;
justify-content: space-between;
line-height: 1;
max-width: 100%;
min-width: 0;
outline: none !important;
padding: 0 9px;
text-align: left;
transition: background-color var(--motion-instant) ease-out, color var(--motion-instant) ease-out;
}
.canvas-composer-model-picker.ant-select .ant-select-content {
background: var(--background) !important;
border-color: color-mix(in srgb, var(--foreground) 8%, transparent) !important;
box-shadow: none !important;
.canvas-composer-model-picker:hover {
background: color-mix(in srgb, var(--workspace-surface-strong) 88%, var(--workspace-accent) 12%);
}
.dark .canvas-composer-model-picker.ant-select,
.dark .canvas-composer-model-picker.ant-select .ant-select-content,
.dark .canvas-model-picker-popup.ant-select-dropdown {
background: #000 !important;
}
.canvas-composer-model-picker.ant-select-focused .ant-select-content {
border-color: color-mix(in srgb, var(--foreground) 8%, transparent) !important;
.canvas-composer-model-picker:focus,
.canvas-composer-model-picker:focus-visible,
.canvas-composer-model-picker[aria-expanded="true"] {
background: color-mix(in srgb, var(--workspace-surface-strong) 84%, var(--workspace-accent) 16%);
box-shadow: none !important;
outline: none !important;
}
.canvas-model-picker-popup .ant-select-item-option-active:not(.ant-select-item-option-disabled),
.canvas-model-picker-popup .ant-select-item-option-selected:not(.ant-select-item-option-disabled) {
background: color-mix(in srgb, var(--foreground) 6%, transparent) !important;
.canvas-model-picker-label {
flex: 1 1 auto;
overflow: hidden;
}
.canvas-model-picker-trigger-icon {
align-items: center;
border-radius: 6px;
display: inline-flex;
flex: 0 0 22px;
height: 22px;
justify-content: center;
width: 22px;
}
.canvas-model-picker-chevron {
color: color-mix(in srgb, var(--foreground) 52%, transparent);
flex: 0 0 14px;
height: 14px;
transition: transform var(--motion-instant) ease-out;
width: 14px;
}
.canvas-model-picker-chevron.is-open {
transform: rotate(180deg);
}
.canvas-model-picker-popover,
.canvas-preset-picker-popover {
filter: none !important;
}
.canvas-composer-popover-surface {
border: 0 !important;
border-radius: 10px !important;
background: var(--workspace-surface-strong) !important;
box-shadow: 0 14px 38px rgba(0, 0, 0, 0.22) !important;
overflow: hidden;
padding: 0 !important;
backdrop-filter: blur(22px) saturate(118%);
-webkit-backdrop-filter: blur(22px) saturate(118%);
}
.dark .canvas-composer-popover-surface {
box-shadow: 0 16px 40px rgba(0, 0, 0, 0.34) !important;
}
.canvas-composer-popover-content {
padding: 0 !important;
}
.canvas-model-picker-menu {
max-height: min(420px, calc(100vh - 32px));
overflow-y: auto;
padding: 4px;
}
.canvas-model-picker-group + .canvas-model-picker-group {
border-top: 1px solid var(--workspace-border);
margin-top: 5px;
padding-top: 5px;
}
.canvas-model-picker-group-label {
align-items: center;
display: flex;
font-size: 10px;
font-weight: 600;
gap: 6px;
letter-spacing: 0.02em;
padding: 5px 7px 4px;
}
.canvas-model-picker-option {
align-items: center;
border: 0;
border-radius: 7px;
cursor: pointer;
display: flex;
gap: 8px;
min-height: 44px;
outline: none;
padding: 6px 7px;
text-align: left;
transition: background-color var(--motion-instant) ease-out;
width: 100%;
}
.canvas-model-picker-option:hover {
background: color-mix(in srgb, var(--workspace-accent) 9%, transparent) !important;
}
.canvas-model-picker-option:focus-visible {
background: color-mix(in srgb, var(--workspace-accent) 13%, transparent) !important;
outline: none;
}
.canvas-model-picker-option > span:first-child {
flex: 1 1 auto;
min-width: 0;
}
.canvas-model-picker-option-check {
flex: 0 0 14px;
height: 14px;
width: 14px;
}
.canvas-model-picker-empty {
font-size: 11px;
padding: 22px 12px;
text-align: center;
}
.canvas-preset-picker-trigger:focus-visible,
.canvas-preset-picker-trigger[aria-expanded="true"] {
background: color-mix(in srgb, var(--workspace-accent) 18%, transparent) !important;
outline: none;
}
.canvas-preset-picker-trigger {
cursor: pointer;
transition: background-color var(--motion-instant) ease-out, color var(--motion-instant) ease-out, transform 90ms ease-out;
}
.canvas-preset-picker-trigger:active {
transform: scale(0.97);
}
.canvas-generation-settings-trigger.ant-btn {
background: color-mix(in srgb, var(--workspace-surface-strong) 94%, var(--workspace-accent) 6%) !important;
border: 0 !important;
color: var(--foreground) !important;
cursor: pointer;
transition: background-color var(--motion-instant) ease-out, color var(--motion-instant) ease-out, transform 90ms ease-out;
}
.canvas-generation-settings-trigger.ant-btn:hover,
.canvas-generation-settings-trigger.ant-btn:focus-visible,
.canvas-generation-settings-trigger.ant-btn[aria-expanded="true"] {
background: color-mix(in srgb, var(--workspace-surface-strong) 86%, var(--workspace-accent) 14%) !important;
box-shadow: none !important;
outline: none !important;
}
.canvas-generation-settings-trigger.ant-btn .ant-btn-icon {
color: color-mix(in srgb, var(--workspace-accent) 72%, var(--foreground));
}
html:not(.dark) .canvas-composer-model-picker,
html:not(.dark) .canvas-generation-settings-trigger.ant-btn {
background: rgba(15, 23, 42, 0.045) !important;
color: #1f2937 !important;
}
html:not(.dark) .canvas-composer-model-picker:hover,
html:not(.dark) .canvas-composer-model-picker[aria-expanded="true"],
html:not(.dark) .canvas-generation-settings-trigger.ant-btn:hover,
html:not(.dark) .canvas-generation-settings-trigger.ant-btn:focus-visible,
html:not(.dark) .canvas-generation-settings-trigger.ant-btn[aria-expanded="true"] {
background: rgba(15, 23, 42, 0.075) !important;
}
html:not(.dark) .canvas-generation-cost-badge {
background: rgba(79, 110, 232, 0.09) !important;
color: #4f6ee8 !important;
}
.canvas-preset-picker-menu {
padding: 6px;
}
.canvas-preset-picker-search.ant-input-affix-wrapper {
border: 0 !important;
border-radius: 8px;
background: color-mix(in srgb, var(--workspace-accent) 7%, transparent) !important;
box-shadow: none !important;
color: color-mix(in srgb, var(--foreground) 66%, transparent);
height: 32px;
padding-inline: 9px;
}
.canvas-preset-picker-search.ant-input-affix-wrapper:focus,
.canvas-preset-picker-search.ant-input-affix-wrapper:focus-within {
background: color-mix(in srgb, var(--workspace-accent) 11%, transparent) !important;
box-shadow: none !important;
}
.canvas-preset-picker-option {
align-items: center;
background: transparent;
border: 0;
border-radius: 7px;
cursor: pointer;
display: flex;
gap: 9px;
min-height: 48px;
outline: none;
padding: 6px 8px;
text-align: left;
transition: background-color var(--motion-instant) ease-out;
width: 100%;
}
.canvas-preset-picker-option:hover,
.canvas-preset-picker-option:focus-visible {
background: color-mix(in srgb, var(--workspace-accent) 9%, transparent);
outline: none;
}
.canvas-preset-picker-option-icon {
align-items: center;
border-radius: 7px;
display: inline-flex;
flex: 0 0 28px;
height: 28px;
justify-content: center;
width: 28px;
}
body.app-spatial-overlays .canvas-composer-popover-surface {
border: 0 !important;
background: var(--workspace-surface-strong) !important;
}
html:not(.dark) body.app-spatial-overlays .canvas-composer-popover-surface {
background: #ffffff !important;
box-shadow: 0 14px 34px rgba(15, 23, 42, 0.13) !important;
}
.dark body.app-spatial-overlays .canvas-composer-popover-surface {
box-shadow: 0 16px 40px rgba(0, 0, 0, 0.3) !important;
}
.agent-text-model-select .ant-select-content {
@@ -1576,12 +1816,12 @@
min-width: 0;
}
.canvas-composer-tools .canvas-composer-model-picker.ant-select {
.canvas-composer-tools .canvas-composer-model-picker {
width: auto;
min-width: 9rem;
}
.canvas-composer-tools .canvas-composer-model-picker .ant-select-content {
.canvas-composer-tools .canvas-composer-model-picker {
padding-inline: 10px !important;
}
@@ -1645,15 +1885,13 @@
content: "";
}
.canvas-floating-dock,
.canvas-node-toolbar {
.canvas-floating-dock {
box-shadow:
0 1px 2px rgba(15, 23, 42, 0.06),
0 10px 26px rgba(15, 23, 42, 0.08);
}
.dark .canvas-floating-dock,
.dark .canvas-node-toolbar {
.dark .canvas-floating-dock {
box-shadow:
0 1px 1px rgba(0, 0, 0, 0.28),
0 12px 28px rgba(0, 0, 0, 0.3);