新增图片画布编辑器
新增 /editor 图片画布入口与 Lovart 风格画布交互 新增图片画布工程和资源持久化的 SpacetimeDB 表、绑定与 api-server BFF 接入图片生成和修改的 VectorEngine gpt-image-2 后端通道 完善素材库文件夹、重命名、上传删除、图层和元数据交互 补充图片画布技术方案、领域词、执行跟踪和浏览器 smoke 截图
This commit is contained in:
905
src/index.css
905
src/index.css
@@ -3034,6 +3034,911 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock {
|
||||
color: var(--platform-text-strong);
|
||||
}
|
||||
|
||||
.image-editor-stage-shell {
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.image-canvas-editor {
|
||||
position: relative;
|
||||
display: flex;
|
||||
min-height: 0;
|
||||
min-width: 0;
|
||||
height: 100%;
|
||||
gap: 0;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
color: #1f2937;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.image-editor-creation-entry-stack {
|
||||
display: grid;
|
||||
min-width: 0;
|
||||
gap: 0.8rem;
|
||||
}
|
||||
|
||||
.image-editor-creation-entry {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
min-height: 4.4rem;
|
||||
width: 100%;
|
||||
border: 1px solid rgba(75, 181, 170, 0.22);
|
||||
border-radius: 0.5rem;
|
||||
background: linear-gradient(
|
||||
135deg,
|
||||
rgba(75, 181, 170, 0.16),
|
||||
rgba(223, 161, 94, 0.1)
|
||||
),
|
||||
var(--platform-subpanel-fill);
|
||||
padding: 0.7rem;
|
||||
color: var(--platform-text-strong);
|
||||
text-align: left;
|
||||
box-shadow: 0 16px 32px rgba(43, 68, 64, 0.12);
|
||||
transition:
|
||||
transform 180ms ease,
|
||||
border-color 180ms ease,
|
||||
box-shadow 180ms ease;
|
||||
}
|
||||
|
||||
.image-editor-creation-entry:hover {
|
||||
transform: translateY(-1px);
|
||||
border-color: rgba(75, 181, 170, 0.5);
|
||||
box-shadow: 0 20px 38px rgba(43, 68, 64, 0.16);
|
||||
}
|
||||
|
||||
.image-editor-creation-entry__icon {
|
||||
display: grid;
|
||||
width: 2.7rem;
|
||||
height: 2.7rem;
|
||||
flex-shrink: 0;
|
||||
place-items: center;
|
||||
border-radius: 0.45rem;
|
||||
background: rgba(75, 181, 170, 0.18);
|
||||
color: #238a82;
|
||||
}
|
||||
|
||||
.image-editor-creation-entry__body {
|
||||
display: grid;
|
||||
min-width: 0;
|
||||
gap: 0.15rem;
|
||||
}
|
||||
|
||||
.image-editor-creation-entry__body span:first-child {
|
||||
font-size: 0.98rem;
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.image-editor-creation-entry__body span + span {
|
||||
color: var(--platform-text-soft);
|
||||
font-size: 0.76rem;
|
||||
font-weight: 760;
|
||||
}
|
||||
|
||||
.image-canvas-editor__sidebar {
|
||||
display: flex;
|
||||
width: min(18.5rem, 34vw);
|
||||
min-width: 15.5rem;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
border-right: 1px solid #d9dee8;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.image-canvas-editor__sidebar-header {
|
||||
display: flex;
|
||||
min-height: 3.4rem;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 0.75rem;
|
||||
border-bottom: 1px solid #d9dee8;
|
||||
padding: 0.65rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__sidebar-title,
|
||||
.image-canvas-editor__title-block h1 {
|
||||
margin: 0;
|
||||
font-size: 0.9rem;
|
||||
font-weight: 850;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.image-canvas-editor__sidebar-count,
|
||||
.image-canvas-editor__title-block span {
|
||||
display: block;
|
||||
color: #64748b;
|
||||
font-size: 0.72rem;
|
||||
font-weight: 750;
|
||||
}
|
||||
|
||||
.image-canvas-editor__icon-button,
|
||||
.image-canvas-editor__zoom-trigger,
|
||||
.image-canvas-editor__zoom-menu button,
|
||||
.image-canvas-editor__floating-toolbar button,
|
||||
.image-canvas-editor__bottom-toolbar button,
|
||||
.image-canvas-editor__metadata-header button,
|
||||
.image-canvas-editor__reset-button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 1px solid #d9dee8;
|
||||
background: #ffffff;
|
||||
color: #334155;
|
||||
transition:
|
||||
transform 160ms ease,
|
||||
background-color 160ms ease,
|
||||
border-color 160ms ease,
|
||||
color 160ms ease;
|
||||
}
|
||||
|
||||
.image-canvas-editor__icon-button:hover,
|
||||
.image-canvas-editor__zoom-trigger:hover,
|
||||
.image-canvas-editor__zoom-menu button:hover,
|
||||
.image-canvas-editor__floating-toolbar button:hover,
|
||||
.image-canvas-editor__bottom-toolbar button:hover,
|
||||
.image-canvas-editor__metadata-header button:hover,
|
||||
.image-canvas-editor__reset-button:hover {
|
||||
transform: translateY(-1px);
|
||||
border-color: #8fb8ff;
|
||||
background: #eef5ff;
|
||||
color: #1d4ed8;
|
||||
}
|
||||
|
||||
.image-canvas-editor__icon-button {
|
||||
width: 2.2rem;
|
||||
height: 2.2rem;
|
||||
flex-shrink: 0;
|
||||
border-radius: 0.45rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-list {
|
||||
display: grid;
|
||||
min-height: 0;
|
||||
align-content: start;
|
||||
gap: 0.7rem;
|
||||
overflow-y: auto;
|
||||
padding: 0.65rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-folder {
|
||||
display: grid;
|
||||
gap: 0.45rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-folder-header {
|
||||
display: grid;
|
||||
grid-template-columns: auto auto minmax(0, 1fr) auto auto;
|
||||
align-items: center;
|
||||
gap: 0.35rem;
|
||||
color: #475569;
|
||||
font-size: 0.76rem;
|
||||
font-weight: 850;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-folder-header button {
|
||||
display: inline-flex;
|
||||
width: 1.8rem;
|
||||
height: 1.8rem;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 0.36rem;
|
||||
background: transparent;
|
||||
color: #64748b;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-folder-header button:hover {
|
||||
border-color: #d9dee8;
|
||||
background: #f8fafc;
|
||||
color: #1d4ed8;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-folder-header span {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-folder-header span + span {
|
||||
color: #94a3b8;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 820;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-folder-list {
|
||||
display: grid;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-row {
|
||||
display: grid;
|
||||
grid-template-columns: 4.4rem minmax(0, 1fr) auto;
|
||||
min-height: 5.1rem;
|
||||
gap: 0.55rem;
|
||||
align-items: center;
|
||||
border: 1px solid #e2e8f0;
|
||||
border-radius: 0.45rem;
|
||||
background: #f8fafc;
|
||||
padding: 0.45rem;
|
||||
color: #1f2937;
|
||||
transition:
|
||||
transform 160ms ease,
|
||||
border-color 160ms ease,
|
||||
background-color 160ms ease;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-row:hover {
|
||||
transform: translateY(-1px);
|
||||
border-color: #8fb8ff;
|
||||
background: #eef5ff;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-button {
|
||||
display: block;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-thumb {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
aspect-ratio: 1;
|
||||
border-radius: 0.35rem;
|
||||
background: linear-gradient(
|
||||
45deg,
|
||||
rgba(148, 163, 184, 0.18) 25%,
|
||||
transparent 25%
|
||||
),
|
||||
linear-gradient(-45deg, rgba(148, 163, 184, 0.18) 25%, transparent 25%),
|
||||
linear-gradient(45deg, transparent 75%, rgba(148, 163, 184, 0.18) 75%),
|
||||
linear-gradient(-45deg, transparent 75%, rgba(148, 163, 184, 0.18) 75%);
|
||||
background-position:
|
||||
0 0,
|
||||
0 0.5rem,
|
||||
0.5rem -0.5rem,
|
||||
-0.5rem 0;
|
||||
background-size: 1rem 1rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-thumb img,
|
||||
.image-canvas-editor__layer img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-meta {
|
||||
display: grid;
|
||||
min-width: 0;
|
||||
gap: 0.2rem;
|
||||
font-size: 0.84rem;
|
||||
font-weight: 820;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-meta span {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-meta input {
|
||||
min-width: 0;
|
||||
height: 1.8rem;
|
||||
border: 1px solid #8fb8ff;
|
||||
border-radius: 0.35rem;
|
||||
background: #ffffff;
|
||||
padding: 0 0.45rem;
|
||||
color: #1f2937;
|
||||
font: inherit;
|
||||
font-size: 0.78rem;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-actions {
|
||||
display: inline-flex;
|
||||
gap: 0.22rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-actions button,
|
||||
.image-canvas-editor__folder-create button {
|
||||
display: inline-flex;
|
||||
width: 1.9rem;
|
||||
height: 1.9rem;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 1px solid #d9dee8;
|
||||
border-radius: 0.42rem;
|
||||
background: #ffffff;
|
||||
color: #475569;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-actions button:hover,
|
||||
.image-canvas-editor__folder-create button:hover {
|
||||
border-color: #8fb8ff;
|
||||
background: #ffffff;
|
||||
color: #1d4ed8;
|
||||
}
|
||||
|
||||
.image-canvas-editor__folder-create {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto auto;
|
||||
align-items: center;
|
||||
gap: 0.35rem;
|
||||
border: 1px solid #d9dee8;
|
||||
border-radius: 0.45rem;
|
||||
background: #f8fafc;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__folder-create input {
|
||||
min-width: 0;
|
||||
height: 2rem;
|
||||
border: 1px solid #8fb8ff;
|
||||
border-radius: 0.35rem;
|
||||
background: #ffffff;
|
||||
padding: 0 0.5rem;
|
||||
color: #1f2937;
|
||||
font: inherit;
|
||||
font-size: 0.78rem;
|
||||
font-weight: 800;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-meta span + span {
|
||||
color: #64748b;
|
||||
font-size: 0.72rem;
|
||||
font-weight: 760;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layers-list {
|
||||
display: grid;
|
||||
min-height: 0;
|
||||
align-content: start;
|
||||
gap: 0.45rem;
|
||||
overflow-y: auto;
|
||||
padding: 0.65rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer-row {
|
||||
display: grid;
|
||||
grid-template-columns: 2.7rem minmax(0, 1fr);
|
||||
min-height: 3.45rem;
|
||||
align-items: center;
|
||||
gap: 0.55rem;
|
||||
border: 1px solid #e2e8f0;
|
||||
border-radius: 0.45rem;
|
||||
background: #f8fafc;
|
||||
padding: 0.38rem;
|
||||
color: #1f2937;
|
||||
text-align: left;
|
||||
transition:
|
||||
border-color 160ms ease,
|
||||
background-color 160ms ease;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer-row:hover,
|
||||
.image-canvas-editor__layer-row--selected {
|
||||
border-color: #8fb8ff;
|
||||
background: #eef5ff;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer-row-thumb {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
width: 2.7rem;
|
||||
height: 2.7rem;
|
||||
border-radius: 0.35rem;
|
||||
background: #e2e8f0;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer-row-thumb img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer-row-meta {
|
||||
display: grid;
|
||||
min-width: 0;
|
||||
gap: 0.18rem;
|
||||
font-size: 0.78rem;
|
||||
font-weight: 820;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer-row-meta span {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer-row-meta span + span {
|
||||
color: #64748b;
|
||||
font-size: 0.68rem;
|
||||
font-weight: 760;
|
||||
}
|
||||
|
||||
.image-canvas-editor__main {
|
||||
display: flex;
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.image-canvas-editor__topbar {
|
||||
display: flex;
|
||||
min-height: 3.4rem;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 0.75rem;
|
||||
border-bottom: 1px solid #d9dee8;
|
||||
background: #ffffff;
|
||||
padding: 0.55rem 0.7rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__zoom-menu-wrap {
|
||||
position: relative;
|
||||
z-index: 20;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.image-canvas-editor__zoom-trigger {
|
||||
min-width: 4.15rem;
|
||||
height: 2.25rem;
|
||||
border-radius: 0.45rem;
|
||||
padding: 0 0.65rem;
|
||||
font-size: 0.78rem;
|
||||
font-weight: 850;
|
||||
}
|
||||
|
||||
.image-canvas-editor__zoom-menu {
|
||||
position: absolute;
|
||||
top: calc(100% + 0.45rem);
|
||||
right: 0;
|
||||
display: grid;
|
||||
min-width: 12rem;
|
||||
gap: 0.2rem;
|
||||
border: 1px solid #d9dee8;
|
||||
border-radius: 0.5rem;
|
||||
background: #ffffff;
|
||||
padding: 0.35rem;
|
||||
box-shadow: 0 18px 38px rgba(15, 23, 42, 0.16);
|
||||
}
|
||||
|
||||
.image-canvas-editor__zoom-menu button {
|
||||
justify-content: flex-start;
|
||||
min-height: 2rem;
|
||||
width: 100%;
|
||||
border-radius: 0.38rem;
|
||||
padding: 0 0.65rem;
|
||||
font-size: 0.76rem;
|
||||
font-weight: 820;
|
||||
}
|
||||
|
||||
.image-canvas-editor__floating-toolbar button,
|
||||
.image-canvas-editor__bottom-toolbar button,
|
||||
.image-canvas-editor__metadata-header button,
|
||||
.image-canvas-editor__reset-button {
|
||||
width: 2.25rem;
|
||||
height: 2.25rem;
|
||||
border-radius: 0.45rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__viewport {
|
||||
position: relative;
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
cursor: default;
|
||||
background-color: #f8fafc;
|
||||
touch-action: none;
|
||||
}
|
||||
|
||||
.image-canvas-editor__viewport--panning {
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
.image-canvas-editor__viewport--tool-hand {
|
||||
cursor: grab;
|
||||
}
|
||||
|
||||
.image-canvas-editor__world {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
transform-origin: 0 0;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer {
|
||||
position: absolute;
|
||||
display: block;
|
||||
overflow: visible;
|
||||
border: 2px solid transparent;
|
||||
border-radius: 0.15rem;
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer img {
|
||||
display: block;
|
||||
border-radius: 0.1rem;
|
||||
box-shadow: 0 16px 38px rgba(15, 23, 42, 0.18);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer--hovered,
|
||||
.image-canvas-editor__layer--selected {
|
||||
border-color: #4bb5aa;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layer--selected {
|
||||
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.9);
|
||||
}
|
||||
|
||||
.image-canvas-editor__metadata-corner {
|
||||
position: absolute;
|
||||
right: 0.35rem;
|
||||
top: 0.35rem;
|
||||
z-index: 2;
|
||||
display: grid;
|
||||
width: 1.35rem;
|
||||
height: 1.35rem;
|
||||
place-items: center;
|
||||
border-radius: 999px;
|
||||
background: rgba(16, 15, 14, 0.78);
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.image-canvas-editor__metadata-corner:hover {
|
||||
background: rgba(3, 105, 161, 0.88);
|
||||
}
|
||||
|
||||
.image-canvas-editor__size-badge {
|
||||
position: absolute;
|
||||
left: 0.35rem;
|
||||
top: 0.35rem;
|
||||
z-index: 2;
|
||||
border-radius: 0.3rem;
|
||||
background: rgba(16, 15, 14, 0.82);
|
||||
padding: 0.18rem 0.35rem;
|
||||
color: #ffffff;
|
||||
font-size: 0.72rem;
|
||||
font-weight: 850;
|
||||
line-height: 1.2;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.image-canvas-editor__floating-toolbar {
|
||||
position: absolute;
|
||||
z-index: 8;
|
||||
display: inline-flex;
|
||||
gap: 0.3rem;
|
||||
border: 1px solid #d9dee8;
|
||||
border-radius: 0.5rem;
|
||||
background: #ffffff;
|
||||
padding: 0.28rem;
|
||||
box-shadow: 0 18px 34px rgba(15, 23, 42, 0.18);
|
||||
transform: translate(-50%, -100%);
|
||||
}
|
||||
|
||||
.image-canvas-editor__reset-button {
|
||||
position: absolute;
|
||||
right: 0.85rem;
|
||||
bottom: 0.85rem;
|
||||
z-index: 9;
|
||||
}
|
||||
|
||||
.image-canvas-editor__panel-dock {
|
||||
position: absolute;
|
||||
left: 0.85rem;
|
||||
bottom: 0.85rem;
|
||||
z-index: 11;
|
||||
display: inline-flex;
|
||||
gap: 0.35rem;
|
||||
border: 1px solid #d9dee8;
|
||||
border-radius: 0.5rem;
|
||||
background: #ffffff;
|
||||
padding: 0.35rem;
|
||||
box-shadow: 0 16px 34px rgba(15, 23, 42, 0.14);
|
||||
}
|
||||
|
||||
.image-canvas-editor__panel-dock button {
|
||||
display: inline-flex;
|
||||
width: 2.25rem;
|
||||
height: 2.25rem;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 1px solid #d9dee8;
|
||||
border-radius: 0.45rem;
|
||||
background: #ffffff;
|
||||
color: #334155;
|
||||
transition:
|
||||
transform 160ms ease,
|
||||
background-color 160ms ease,
|
||||
border-color 160ms ease,
|
||||
color 160ms ease;
|
||||
}
|
||||
|
||||
.image-canvas-editor__panel-dock button:hover,
|
||||
.image-canvas-editor__panel-dock button[aria-pressed='true'] {
|
||||
transform: translateY(-1px);
|
||||
border-color: #38bdf8;
|
||||
background: #e0f2fe;
|
||||
color: #0369a1;
|
||||
}
|
||||
|
||||
.image-canvas-editor__bottom-toolbar {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: 0.85rem;
|
||||
z-index: 10;
|
||||
display: inline-flex;
|
||||
gap: 0.35rem;
|
||||
max-width: min(calc(100% - 6.6rem), 34rem);
|
||||
overflow-x: auto;
|
||||
border: 1px solid #d9dee8;
|
||||
border-radius: 0.5rem;
|
||||
background: #ffffff;
|
||||
padding: 0.35rem;
|
||||
box-shadow: 0 18px 38px rgba(15, 23, 42, 0.16);
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
.image-canvas-editor__bottom-toolbar button[aria-pressed='true'] {
|
||||
border-color: #38bdf8;
|
||||
background: #e0f2fe;
|
||||
color: #0369a1;
|
||||
}
|
||||
|
||||
.image-canvas-editor__snap-guide {
|
||||
position: absolute;
|
||||
z-index: 7;
|
||||
pointer-events: none;
|
||||
background: #4bb5aa;
|
||||
box-shadow: 0 0 0 1px rgba(75, 181, 170, 0.28);
|
||||
}
|
||||
|
||||
.image-canvas-editor__snap-guide--vertical {
|
||||
top: 0;
|
||||
width: 2px;
|
||||
height: 100%;
|
||||
transform: translateX(-1px);
|
||||
}
|
||||
|
||||
.image-canvas-editor__snap-guide--horizontal {
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.image-canvas-editor__rulers {
|
||||
position: absolute;
|
||||
z-index: 4;
|
||||
pointer-events: none;
|
||||
background: rgba(241, 245, 249, 0.92);
|
||||
}
|
||||
|
||||
.image-canvas-editor__rulers--top {
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 0;
|
||||
height: 1.25rem;
|
||||
border-bottom: 1px solid #d9dee8;
|
||||
}
|
||||
|
||||
.image-canvas-editor__rulers--left {
|
||||
left: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 1.25rem;
|
||||
border-right: 1px solid #d9dee8;
|
||||
}
|
||||
|
||||
.image-canvas-editor__modal-backdrop {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 120;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
background: rgba(8, 7, 6, 0.58);
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__metadata-dialog {
|
||||
width: min(28rem, calc(100vw - 2rem));
|
||||
max-height: min(32rem, calc(100vh - 2rem));
|
||||
overflow: auto;
|
||||
border: 1px solid #d9dee8;
|
||||
border-radius: 0.5rem;
|
||||
background: #ffffff;
|
||||
color: #1f2937;
|
||||
box-shadow: 0 26px 70px rgba(15, 23, 42, 0.22);
|
||||
}
|
||||
|
||||
.image-canvas-editor__generate-dialog {
|
||||
width: min(30rem, calc(100vw - 2rem));
|
||||
overflow: hidden;
|
||||
border: 1px solid #d9dee8;
|
||||
border-radius: 0.5rem;
|
||||
background: #ffffff;
|
||||
color: #1f2937;
|
||||
box-shadow: 0 26px 70px rgba(15, 23, 42, 0.22);
|
||||
}
|
||||
|
||||
.image-canvas-editor__metadata-header {
|
||||
display: flex;
|
||||
min-height: 3rem;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 0.75rem;
|
||||
border-bottom: 1px solid #d9dee8;
|
||||
padding: 0.55rem 0.7rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__metadata-header h2 {
|
||||
margin: 0;
|
||||
font-size: 0.9rem;
|
||||
font-weight: 850;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.image-canvas-editor__generate-body {
|
||||
display: grid;
|
||||
gap: 0.7rem;
|
||||
padding: 0.85rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__generate-body textarea {
|
||||
min-height: 7rem;
|
||||
resize: vertical;
|
||||
border: 1px solid #d9dee8;
|
||||
border-radius: 0.45rem;
|
||||
background: #f8fafc;
|
||||
padding: 0.7rem;
|
||||
color: #1f2937;
|
||||
font: inherit;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 720;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.image-canvas-editor__generate-body textarea:focus {
|
||||
border-color: #38bdf8;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.18);
|
||||
}
|
||||
|
||||
.image-canvas-editor__generate-status {
|
||||
border-radius: 0.45rem;
|
||||
background: #eef5ff;
|
||||
padding: 0.55rem 0.65rem;
|
||||
color: #0369a1;
|
||||
font-size: 0.78rem;
|
||||
font-weight: 850;
|
||||
}
|
||||
|
||||
.image-canvas-editor__generate-status--error {
|
||||
background: #fee2e2;
|
||||
color: #b91c1c;
|
||||
}
|
||||
|
||||
.image-canvas-editor__generate-submit {
|
||||
justify-self: end;
|
||||
min-width: 5.5rem;
|
||||
min-height: 2.25rem;
|
||||
border: 1px solid #38bdf8;
|
||||
border-radius: 0.45rem;
|
||||
background: #0ea5e9;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 850;
|
||||
}
|
||||
|
||||
.image-canvas-editor__generate-submit:disabled {
|
||||
cursor: wait;
|
||||
opacity: 0.68;
|
||||
}
|
||||
|
||||
.image-canvas-editor__metadata-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 5.5rem minmax(0, 1fr);
|
||||
gap: 0.55rem 0.75rem;
|
||||
margin: 0;
|
||||
padding: 0.85rem;
|
||||
font-size: 0.78rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__metadata-grid dt {
|
||||
color: #64748b;
|
||||
font-weight: 820;
|
||||
}
|
||||
|
||||
.image-canvas-editor__metadata-grid dd {
|
||||
min-width: 0;
|
||||
margin: 0;
|
||||
overflow-wrap: anywhere;
|
||||
color: #1f2937;
|
||||
font-weight: 760;
|
||||
}
|
||||
|
||||
@media (max-width: 760px) {
|
||||
.image-canvas-editor {
|
||||
flex-direction: column;
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
.image-canvas-editor__sidebar {
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
max-height: 14rem;
|
||||
flex-shrink: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid #d9dee8;
|
||||
}
|
||||
|
||||
.image-canvas-editor__asset-list {
|
||||
grid-auto-flow: column;
|
||||
grid-auto-columns: minmax(15rem, 78vw);
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.image-canvas-editor__layers-list {
|
||||
grid-auto-flow: column;
|
||||
grid-auto-columns: minmax(12.5rem, 70vw);
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.image-canvas-editor__main {
|
||||
min-height: 0;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.image-canvas-editor__topbar {
|
||||
min-height: 3.2rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__title-block h1 {
|
||||
font-size: 0.84rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__floating-toolbar button,
|
||||
.image-canvas-editor__bottom-toolbar button,
|
||||
.image-canvas-editor__reset-button {
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
}
|
||||
|
||||
.image-canvas-editor__floating-toolbar {
|
||||
max-width: calc(100% - 1.5rem);
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.image-canvas-editor__bottom-toolbar {
|
||||
left: 0.75rem;
|
||||
right: 0.75rem;
|
||||
max-width: none;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
.image-canvas-editor__panel-dock {
|
||||
left: 0.75rem;
|
||||
bottom: 3.85rem;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
.platform-bottom-nav {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
|
||||
Reference in New Issue
Block a user