UI/документация: крошки, метрики узлов в stats, правки навигации и подвала

- Документация: хлебные крошки; секции H2 в одной карточке; заголовок вкладки от H1
- Навигация: активна только текущая пилюля (Панель без постоянного home-стиля)
- GET /api/v1/stats: cluster_resources (docker stats CPU/RAM/I/O по узлам kind)
- Панель: блок ресурсов в карточке статистики; убраны строки подвала про api_routes/clusters
- Удалён app/docs/README.md; крошки app/docs → api_routes.md; README корня обновлён
This commit is contained in:
Sergey Antropoff
2026-04-04 06:37:36 +03:00
parent 710b360e4a
commit 6d4bc65c8a
12 changed files with 495 additions and 62 deletions
+121 -30
View File
@@ -128,36 +128,17 @@ body.modal-open {
outline-offset: 3px;
}
/* Текущее приложение — акцентная пилюля */
.nav-link.nav-pill--home {
background: linear-gradient(145deg, rgba(59, 130, 246, 0.28), rgba(59, 130, 246, 0.1));
border-color: rgba(59, 130, 246, 0.55);
color: #93c5fd;
}
@media (prefers-color-scheme: light) {
.nav-link.nav-pill--home {
color: #1d4ed8;
}
}
.nav-link.nav-pill--home:hover {
color: var(--accent);
background: linear-gradient(145deg, rgba(59, 130, 246, 0.35), rgba(59, 130, 246, 0.15));
}
/* Активный раздел (панель или документация) */
/* Активный раздел: «Панель» на дашборде или «Документация» на /documentation */
.nav-link.nav-pill.nav-pill--active:not(.nav-pill--ext) {
border-color: rgba(59, 130, 246, 0.85);
box-shadow: 0 0 0 1px rgba(59, 130, 246, 0.35), 0 2px 14px rgba(59, 130, 246, 0.18);
background: rgba(59, 130, 246, 0.16);
color: #93c5fd;
}
.nav-link.nav-pill.nav-pill--home.nav-pill--active {
background: linear-gradient(145deg, rgba(59, 130, 246, 0.42), rgba(59, 130, 246, 0.18));
}
@media (prefers-color-scheme: light) {
.nav-link.nav-pill.nav-pill--active:not(.nav-pill--ext) {
color: #1e40af;
background: rgba(59, 130, 246, 0.12);
}
}
@@ -232,18 +213,89 @@ body.modal-open {
.stats-side-card {
display: flex;
flex-direction: column;
max-height: min(85vh, 52rem);
overflow: hidden;
}
.stats-side-card h2 {
margin-bottom: 0.5rem;
flex-shrink: 0;
}
.stats-dl--compact {
flex: 1;
flex: 0 0 auto;
margin: 0;
font-size: 0.88rem;
}
/* Метрики узлов kind (docker stats) под сводкой */
.stats-resources {
margin-top: 0.75rem;
padding-top: 0.65rem;
border-top: 1px solid var(--border);
flex: 1 1 auto;
min-height: 0;
overflow-y: auto;
font-size: 0.78rem;
}
.stats-resources-heading {
margin: 0 0 0.45rem;
font-size: 0.8125rem;
font-weight: 650;
color: var(--muted);
text-transform: uppercase;
letter-spacing: 0.04em;
}
.stats-resources-msg {
margin: 0;
font-size: 0.8rem;
}
.stats-cluster-res {
margin-bottom: 0.65rem;
}
.stats-cluster-res:last-child {
margin-bottom: 0;
}
.stats-cluster-res__title {
margin: 0 0 0.35rem;
font-size: 0.85rem;
font-weight: 650;
}
.stats-cluster-res__note {
margin: 0;
font-size: 0.78rem;
}
.stats-node-res {
margin-bottom: 0.45rem;
padding: 0.35rem 0.45rem;
border-radius: 6px;
background: rgba(0, 0, 0, 0.12);
border: 1px solid var(--border);
}
.stats-node-res code {
display: block;
font-size: 0.76rem;
margin-bottom: 0.25rem;
word-break: break-all;
}
.stats-node-res__metrics {
margin: 0;
padding-left: 1rem;
list-style: disc;
}
.stats-node-res__metrics li {
margin: 0.1rem 0;
}
.stats-node-res__metrics strong {
font-weight: 600;
color: var(--muted);
}
@media (prefers-color-scheme: light) {
.stats-node-res {
background: rgba(0, 0, 0, 0.04);
}
}
.create-cluster-card {
margin-bottom: 1rem;
}
@@ -902,6 +954,48 @@ button.btn-danger:hover {
filter: brightness(1.12);
}
/* Хлебные крошки на странице документации */
.doc-breadcrumbs {
max-width: 52rem;
margin: 0 auto 0.65rem;
padding: 0 0.15rem;
}
.doc-breadcrumbs__list {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.35rem 0.15rem;
margin: 0;
padding: 0;
list-style: none;
font-size: 0.8125rem;
}
.doc-breadcrumbs__item {
display: inline-flex;
align-items: center;
gap: 0.35rem;
}
.doc-breadcrumbs__item:not(:last-child)::after {
content: "";
opacity: 0.45;
font-weight: 500;
margin-left: 0.2rem;
}
.doc-breadcrumbs__link {
color: var(--accent);
text-decoration: none;
}
.doc-breadcrumbs__link:hover {
text-decoration: underline;
text-underline-offset: 2px;
}
.doc-breadcrumbs__item--current {
color: var(--muted);
font-weight: 600;
max-width: 100%;
word-break: break-word;
}
/* Страница «Документация»: Markdown → карточки секций */
.readme-doc-shell {
max-width: 52rem;
@@ -925,10 +1019,10 @@ button.btn-danger:hover {
.readme-section-card {
margin: 0;
}
.readme-section-card--head h2 {
margin: 0;
padding: 0;
border-bottom: none;
/* Заголовок секции (h2) и содержимое — в одной карточке: без лишнего зазора сверху у первого заголовка */
.readme-section-card.markdown-body > h1:first-child,
.readme-section-card.markdown-body > h2:first-child {
margin-top: 0;
}
.readme-section-card.markdown-body {
font-size: 0.95rem;
@@ -952,9 +1046,6 @@ button.btn-danger:hover {
border-bottom: 1px solid var(--border);
padding-bottom: 0.25rem;
}
.readme-section-card--head.markdown-body h2 {
margin: 0;
}
.readme-section-card.markdown-body h3 {
font-size: 1.05rem;
}