feat: operational panel UI - active-scope dashboard, drill-down cards, scoped Agents/Blockers/Jobs, PT-BR labels, responsive CSS
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -148,3 +148,63 @@ td a { text-decoration: none; }
|
||||
.cards, .cards.compact, .split, .bar-grid { grid-template-columns: 1fr; }
|
||||
.filters label, .filters input, .filters select, .filters button { width: 100%; }
|
||||
}
|
||||
|
||||
/* ---------- painel operacional: drill-down, filtros ativos, tabelas densas ---------- */
|
||||
a.metric-link { display: block; color: inherit; text-decoration: none; transition: border-color .15s, transform .15s; }
|
||||
a.metric-link:hover { border-color: var(--cor-acento); transform: translateY(-1px); }
|
||||
a.metric-link small { color: var(--cor-acento-texto); margin-top: 6px; font-weight: 600; }
|
||||
a.metric-link:focus-visible, .coverage-item:focus-visible, .bar-link:focus-visible, .row-primary-link:focus-visible, .list-row:focus-visible,
|
||||
.filter-clear:focus-visible, .navigable-row:focus-visible { outline: 3px solid var(--cor-acento); outline-offset: 2px; }
|
||||
.coverage-item { display: block; color: inherit; text-decoration: none; border-left: 3px solid var(--cor-acento); padding-left: 12px; border-radius: 4px; }
|
||||
.coverage-item:hover { background: var(--cor-superficie-alt); }
|
||||
.coverage-item strong { display: block; font-size: 1.4rem; }
|
||||
.coverage-item span { color: var(--cor-texto-secundario); font-size: 0.78rem; }
|
||||
.coverage-status.error { color: var(--cor-perigo); }
|
||||
.registry-summary { display: flex; flex-wrap: wrap; gap: 8px 20px; margin-top: 14px; font-size: 0.85rem; color: var(--cor-texto-secundario); }
|
||||
a.bar-link { color: inherit; text-decoration: none; }
|
||||
a.bar-link:hover { background: var(--cor-superficie-alt); }
|
||||
.bar-row.muted { opacity: .65; }
|
||||
.attention-row b, .list-row b { display: block; }
|
||||
.attention-row { border-left: 3px solid var(--cor-aviso); padding-left: 12px; }
|
||||
.filter-panel { padding: 14px 20px; }
|
||||
.active-filters { margin: 12px 0 0; font-size: 0.82rem; color: var(--cor-texto-secundario); display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
|
||||
.filter-chip { display: inline-flex; background: var(--cor-acento-suave); color: var(--cor-acento-texto); border-radius: 999px; padding: 2px 10px; font-weight: 600; }
|
||||
.filter-clear { align-self: end; font-size: 0.85rem; }
|
||||
.filter-search { flex: 1 1 260px; }
|
||||
.filter-search input { width: 100%; }
|
||||
.agents-table-wrap, .table-wrap { overflow-x: auto; }
|
||||
.agents-table { width: 100%; table-layout: auto; }
|
||||
.agents-table td small, .agents-table th small { display: block; }
|
||||
.agents-table td { vertical-align: top; }
|
||||
.navigable-row { cursor: pointer; }
|
||||
.navigable-row:hover { background: var(--cor-superficie-alt); }
|
||||
.historical-row { opacity: .7; }
|
||||
.row-primary-link { color: inherit; text-decoration: none; display: block; }
|
||||
.row-primary-link b { color: var(--cor-acento-texto); }
|
||||
.warning-text { color: var(--cor-aviso); font-weight: 600; }
|
||||
.compact-table td, .compact-table th { padding: 8px 10px; }
|
||||
.job-error-summary { max-width: 46ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
||||
@media (max-width: 1100px) { .agents-table th:nth-child(5), .agents-table td:nth-child(5) { display: none; } }
|
||||
@media (max-width: 640px) {
|
||||
.agents-table thead { position: absolute; left: -9999px; }
|
||||
.agents-table, .agents-table tbody, .agents-table tr, .agents-table td { display: block; width: 100%; }
|
||||
.agents-table tr { border: 1px solid var(--cor-borda); border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; }
|
||||
.agents-table td { display: flex; justify-content: space-between; gap: 12px; border: 0; padding: 4px 0; }
|
||||
.agents-table td::before { content: attr(data-label); color: var(--cor-texto-secundario); font-size: 0.75rem; font-weight: 600; }
|
||||
.agents-table td:nth-child(5) { display: flex; }
|
||||
.agents-table td:first-child { display: block; }
|
||||
.agents-table td:first-child::before { content: none; }
|
||||
.coverage { grid-template-columns: repeat(2, 1fr); }
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) { a.metric-link { transition: none; } a.metric-link:hover { transform: none; } }
|
||||
.job-failed-row td:first-child { border-left: 3px solid var(--cor-perigo); }
|
||||
.job-failed-row .badge { font-weight: 700; }
|
||||
/* grid children must be allowed to shrink, otherwise a wide table/link inside a panel widens the whole page */
|
||||
.split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
|
||||
.split > *, .cards > *, .coverage > * { min-width: 0; }
|
||||
.list-row > span { min-width: 0; overflow-wrap: anywhere; }
|
||||
code { overflow-wrap: anywhere; }
|
||||
@media (max-width: 900px) { .split { grid-template-columns: minmax(0, 1fr); } }
|
||||
@media (max-width: 768px) { .cards, .cards.compact { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
||||
@media (max-width: 520px) { .cards, .cards.compact, .bar-grid { grid-template-columns: minmax(0, 1fr); } }
|
||||
@media (max-width: 520px) { .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .cards .metric { padding: 12px; } .cards .metric strong { font-size: 1.5rem; } }
|
||||
|
||||
Reference in New Issue
Block a user