Mobile UI sprint 1: actions-bar, version cards, meta line, safe area

- Add docs/СПРИНТЫ_МОБИЛЬНЫЙ_ДИЗАЙН.md and DOC/ШАГИ/ШАГ_2026-04-27_002.md
- cabinet-theme: .actions-bar, .version-card-list, .list-row__meta-tail,
  .inline-actions--block-mobile, btn--sm/ghost tweaks, safe-area main padding
- TestDetail: replace version table with cards; command panel uses actions-bar;
  assign list only when there are people; publication full-width on narrow
- TestsList: version suffix in non-breaking tail span

Made-with: Cursor
This commit is contained in:
Константин Лебединский
2026-04-27 19:35:08 +05:00
parent 2a05f41b65
commit 5db12c2348
5 changed files with 244 additions and 89 deletions
+121 -4
View File
@@ -248,7 +248,7 @@ code,
.btn-ghost {
background: transparent;
color: var(--primary);
border-color: color-mix(in srgb, var(--outline-variant) 50%, transparent);
border-color: color-mix(in srgb, var(--outline-variant) 70%, transparent);
}
.btn-ghost:hover {
@@ -264,8 +264,11 @@ code,
.btn--sm {
font-size: 0.8rem;
padding: 0.35rem 0.6rem;
padding: 0.5rem 0.75rem;
border-radius: 0.5rem;
min-height: 2.75rem;
min-width: 2.75rem;
box-sizing: border-box;
}
/* --- App shell (cabinet/base) --- */
@@ -378,7 +381,7 @@ code,
max-width: var(--max-content);
width: 100%;
margin: 0 auto;
padding: 1.25rem 1.25rem 2.5rem;
padding: 1.25rem 1.25rem calc(2.5rem + env(safe-area-inset-bottom, 0px));
}
/* Cards & lists */
@@ -431,6 +434,11 @@ code,
margin-top: 0.25rem;
}
/* «· v1» и хвост мета — не рвём посередине (мобайл) */
.list-row__meta-tail {
white-space: nowrap;
}
/* Вся плитка — одна ссылка */
.list-row--action {
padding: 0;
@@ -609,7 +617,8 @@ code,
}
.assign-list {
max-height: min(50vh, 22rem);
max-height: min(40vh, 18rem);
min-height: 0;
overflow: auto;
border: 1px solid color-mix(in srgb, var(--outline-variant) 30%, transparent);
border-radius: 0.75rem;
@@ -755,6 +764,57 @@ code,
color: var(--on-surface-variant);
}
/* История версий: карточки вместо таблицы (мобайл) */
.version-card-list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.version-card-list__item {
margin: 0;
}
.version-card-list__row {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
justify-content: space-between;
gap: 0.75rem;
}
.version-card-list__main {
min-width: 0;
flex: 1 1 12rem;
}
.version-card-list__title-line {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.5rem;
}
.version-card-list__action {
flex: 0 0 auto;
align-self: center;
}
@media (max-width: 520px) {
.version-card-list__row {
flex-direction: column;
align-items: stretch;
}
.version-card-list__action {
width: 100%;
align-self: stretch;
}
}
.draft-block {
margin-top: 1.25rem;
padding: 1rem;
@@ -783,3 +843,60 @@ code,
.inline-actions .btn {
width: auto;
}
/* Нижняя панель: полноширинные primary + secondary (без перебития .inline-actions .btn) */
.actions-bar {
display: flex;
flex-direction: column;
align-items: stretch;
gap: 0.5rem;
width: 100%;
box-sizing: border-box;
}
.actions-bar .btn-primary {
width: 100%;
margin-top: 0;
box-sizing: border-box;
}
.actions-bar a.btn,
.actions-bar .btn.btn-ghost {
display: block;
width: 100%;
text-align: center;
box-sizing: border-box;
}
@media (min-width: 480px) {
.actions-bar {
flex-direction: row;
flex-wrap: wrap;
align-items: center;
}
.actions-bar .btn-primary {
width: auto;
min-width: 12rem;
flex: 1 1 auto;
}
.actions-bar a.btn,
.actions-bar .btn.btn-ghost {
display: inline-block;
width: auto;
flex: 0 0 auto;
}
}
@media (max-width: 520px) {
.inline-actions--block-mobile {
flex-direction: column;
align-items: stretch;
}
.inline-actions--block-mobile .btn {
width: 100%;
box-sizing: border-box;
}
}