fix(ui): single-row header + readable sidebar labels at narrow widths

At ≤1100px the header grid only declared 3 tracks for 4 children, so
the toolbar wrapped to a second row, doubling the header height. Add a
4th track, tighten the meta cluster, and hide non-essential toolbar
items (API link, tour-restart) so everything fits in one row. At
≤900px drop CPU/Mem cells (Uptime + Poll remain) so the toolbar still
fits beside the meta cluster.

Sidebar tab captions on the 56 px icon rail were ellipsis-truncated to
"DASHBO…" / "AUTOMA…" / "INTEGR…". Switch to a 2-line clamp with
tighter font/tracking so each label renders in full.
This commit is contained in:
2026-04-25 13:54:18 +03:00
parent dd415e2813
commit 2bae304107
2 changed files with 61 additions and 7 deletions
+47 -2
View File
@@ -1120,8 +1120,10 @@ h2 {
the sidebar hides entirely and mobile.css reverts .tab-bar to a fixed the sidebar hides entirely and mobile.css reverts .tab-bar to a fixed
bottom strip. */ bottom strip. */
@media (max-width: 1100px) { @media (max-width: 1100px) {
/* Keep all four header children (title | center | meta | toolbar) on one
row. Without an explicit 4th track they wrap, doubling the header. */
header { header {
grid-template-columns: var(--sidebar-width, 56px) 1fr auto; grid-template-columns: var(--sidebar-width, 56px) auto 1fr auto;
} }
.header-title { .header-title {
padding: 0 10px; padding: 0 10px;
@@ -1134,7 +1136,28 @@ h2 {
display: none; display: none;
} }
.transport-center { .transport-center {
padding: 0 12px; padding: 0 10px;
}
/* Tighter meta cluster — drop the trailing separator and shrink gaps */
.transport-meta {
gap: 10px;
padding: 0 4px 0 8px;
justify-content: flex-end;
}
.transport-meta .meta-sep:last-child {
display: none;
}
/* Tighter toolbar so it fits beside the meta cluster */
.header-toolbar {
gap: 2px;
}
.header-toolbar-sep {
margin: 0 2px;
}
/* Hide secondary header items at narrow widths to free room */
.header-link,
#tour-restart-btn {
display: none;
} }
.container { .container {
@@ -1142,6 +1165,23 @@ h2 {
} }
} }
/* Tablet/phone shoulder: the meta cluster still wants ~280px which collides
with the toolbar below 900px. Drop CPU + Mem cells (Uptime + Poll stay,
they're the most useful at-a-glance signals). */
@media (max-width: 900px) {
#transport-cpu,
#transport-mem {
display: none;
}
.transport-meta .meta-cell:has(#transport-cpu),
.transport-meta .meta-cell:has(#transport-mem) {
display: none;
}
.transport-meta > .meta-sep:nth-of-type(1) {
display: none;
}
}
@media (max-width: 600px) { @media (max-width: 600px) {
header { header {
grid-template-columns: auto 1fr auto; grid-template-columns: auto 1fr auto;
@@ -1154,6 +1194,11 @@ h2 {
.transport-center { .transport-center {
display: none; display: none;
} }
/* Below the phone breakpoint the sidebar vanishes and the bottom tab
bar takes over, so most of the meta cluster goes too. */
.transport-meta {
display: none;
}
.container { .container {
padding: 10px; padding: 10px;
} }
+14 -5
View File
@@ -243,19 +243,28 @@
.sidebar .tab-btn { .sidebar .tab-btn {
grid-template-columns: 1fr; grid-template-columns: 1fr;
padding: 10px 0; padding: 10px 2px;
justify-content: center; justify-content: center;
justify-items: center; justify-items: center;
gap: 2px; gap: 3px;
} }
/* Two-line caption with tight tracking — single-line ellipsis truncates
longer labels like "Automations"/"Integrations" to "AUTOMA…" which
isn't recoverable; two short lines are uglier per word but legible. */
.sidebar .tab-btn > span[data-i18n] { .sidebar .tab-btn > span[data-i18n] {
font-size: 0.55rem; font-size: 0.46rem;
letter-spacing: 0.05em; letter-spacing: 0.02em;
line-height: 1.1;
text-transform: uppercase; text-transform: uppercase;
color: inherit; color: inherit;
max-width: 100%; max-width: 100%;
white-space: normal;
overflow-wrap: anywhere;
text-align: center;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
} }
.sidebar .tab-btn .icon { .sidebar .tab-btn .icon {
width: 20px; width: 20px;