feat(grid): именованные шаблоны сетки кампании

Несколько шаблонов в проекте с ручным сохранением и применением (включает сетку); без автоподстановки.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-09-03 12:04:47 +08:00
parent 278eb78637
commit a4d7ab77e7
14 changed files with 681 additions and 6 deletions
@@ -526,3 +526,136 @@
.ctxItemDanger:hover {
background: rgba(255, 255, 255, 0.06);
}
.templatesBlock {
display: grid;
gap: 8px;
padding-top: 4px;
border-top: 1px solid var(--stroke, #2a2f3a);
}
.templatesTitle {
font-size: 12px;
font-weight: 700;
opacity: 0.8;
}
.templateSaveRow {
display: grid;
gap: 6px;
}
.templateSaveActions {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
align-items: stretch;
}
.templateSaveActions > * {
width: 100%;
max-width: none;
display: flex;
flex: unset;
align-items: stretch;
}
.templateSaveActions > * > * {
width: 100%;
display: flex;
align-items: stretch;
}
.templateSaveActions button {
width: 100%;
display: inline-flex;
align-items: center;
justify-content: center;
}
.templatesListSection {
display: grid;
gap: 8px;
margin-top: 2px;
padding-top: 10px;
border-top: 1px solid var(--stroke, #2a2f3a);
}
.templatesEmpty {
font-size: 12px;
opacity: 0.6;
line-height: 1.35;
}
.templatesList {
display: grid;
gap: 6px;
}
.templateRow {
display: grid;
grid-template-columns: 14px minmax(0, 1fr);
gap: 8px 8px;
align-items: start;
padding: 8px;
border-radius: 8px;
background: rgba(255, 255, 255, 0.03);
border: 1px solid var(--stroke, #2a2f3a);
}
.templateSwatch {
width: 14px;
height: 14px;
border-radius: 3px;
border: 1px solid rgba(255, 255, 255, 0.25);
margin-top: 2px;
}
.templateMeta {
display: grid;
gap: 2px;
min-width: 0;
}
.templateName {
font-size: 12px;
font-weight: 650;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.templateHint {
font-size: 11px;
opacity: 0.65;
}
.templateActions {
grid-column: 1 / -1;
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
align-items: stretch;
}
.templateActions > * {
width: 100%;
max-width: none;
display: flex;
flex: unset;
align-items: stretch;
}
.templateActions > * > * {
width: 100%;
display: flex;
align-items: stretch;
}
.templateActions button {
width: 100%;
min-width: 0;
display: inline-flex;
align-items: center;
justify-content: center;
}