This commit is contained in:
Mateusz Gruszczyński committed 2026-11-10 00:15:50 +01:00
1 parent 2789991452
commit e260612ef9
60 files changed
+69 -339

No files matched your search

-45
View File
@@ -1,4 +1,3 @@
/* Overview metrics, charts, dashboard density, inline layout controls and presets */
html[data-theme=ultra_dark] :is(.card, .stat, dialog) {
box-shadow: 0 6px 24px rgba(0, 0, 0, .18);
@@ -326,7 +325,6 @@ html[data-theme=cream] :is(.card, .stat, dialog) {
.pool-table td:nth-child(n
/**/
+4) {
font-variant-numeric: tabular-nums;
text-align: right;
@@ -335,7 +333,6 @@ html[data-theme=cream] :is(.card, .stat, dialog) {
[dir=rtl] table,
.pool-table th:nth-child(n
/**/
+4),
.logging-builder-action .small-label {
text-align: right;
@@ -649,9 +646,6 @@ html[data-dashboard-density=ultra] #panel-overview .stat-cache-outcomes .cache-m
white-space: nowrap;
}
/* Sparkline tiles with a one-line detail (e.g. Backend retry attempts: recent rate,
successful retries): the detail sits on the right opposite the value, like a series
legend, and the chart spans the full width underneath. */
#panel-overview .stats-grid>.stat.stat-chart:has(>small:not([hidden], .stat-chart-legend, .backend-health-origins)):not(:has(>.stat-chart-legend)) {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
@@ -708,9 +702,6 @@ html[data-dashboard-density=ultra] #panel-overview .stat-cache-outcomes .cache-m
min-height: 26px;
}
/* Sparkline tiles with a series legend (HTTP / WebSocket protocol mix, backend
traffic): the legend sits on the right, opposite the main value, one series per
line, and the chart spans the full width below. */
#panel-overview .stats-grid>.stat.stat-chart:has(>.stat-chart-legend) {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
@@ -749,7 +740,6 @@ html[data-dashboard-density=ultra] #panel-overview .stat-cache-outcomes .cache-m
align-self: end;
}
/* Row-unit layout: the chart takes the remaining height of a taller tile. */
#panel-overview #dashboard-overview-grid.has-row-units>.stat.stat-chart:has(>.stat-chart-legend)>:is(svg:not(.ui-icon), .rp-chart-axis-host) {
align-self: stretch;
}
@@ -1366,15 +1356,10 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
outline-offset: -2px;
}
/* Legacy grouped layout: reserve room for the editing toolbar. With row units the
toolbar overlays the card header instead, so the unlocked grid has exactly the
geometry of the saved one (what you arrange is what you get). */
#panel-overview .dashboard-overview-grid.is-unlocked:not(.has-row-units)>[data-dashboard-widget] {
padding-top: 40px !important;
}
/* Row-unit editing toolbar: a slim opaque header (handle, card name, hide) that
expands to a second line with width / height / move controls on hover or focus. */
#panel-overview .dashboard-overview-grid.is-unlocked.has-row-units .overview-inline-toolbar {
top: 2px;
left: 2px;
@@ -1442,7 +1427,6 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
font-size: 10px;
}
/* "Fit to screen" switch in the unlocked layout toolbar. */
.overview-inline-autofit {
display: inline-flex;
align-items: center;
@@ -1461,15 +1445,12 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
margin: 0;
}
/* Width shown wider on this screen by Fit to screen. */
#panel-overview .overview-inline-width-value.is-fitted {
color: var(--accent);
text-decoration: underline dotted;
text-underline-offset: 3px;
}
/* Height value: readable between its − / + buttons. Automatic height (fits the
content) is slightly dimmed, a fixed height is shown in full colour. */
#panel-overview .dashboard-overview-grid.is-unlocked.has-row-units .overview-inline-width-value.overview-inline-height-value {
flex: 0 0 auto;
min-width: 34px;
@@ -1486,9 +1467,6 @@ html[data-chart-style] :is(#workspace, dialog) svg polyline {
opacity: .75;
}
/* Stat tiles taller than their content (a taller neighbour in the same row): keep
the label on top, centre the value in the free space, keep meters and legends at
the bottom and let sparklines grow, instead of leaving an empty band below. */
#panel-overview #dashboard-overview-grid.has-row-units>.stat:not([hidden], .stat-donut, .stat-chart) {
grid-template-rows: auto 1fr;
}
@@ -2256,9 +2234,6 @@ html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-sty
grid-column-start: auto;
}
/* Row units (custom layout): heights snap to the compact stat card height so tall
panels sit beside several rows of small cards with aligned edges.
overview-rows.js sets --overview-row-unit and each card's --overview-rows. */
#panel-overview .dashboard-overview-grid.is-aligned.has-row-units {
grid-auto-rows: var(--overview-row-unit, 84px);
}
@@ -2272,26 +2247,17 @@ html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-sty
min-height: 0 !important;
}
/* Auto-fit: overview-rows.js packs the cards and places them explicitly. While a
block is being dragged the normal flow is used, so the drop placeholder works. */
#panel-overview #dashboard-overview-grid.has-row-units.has-auto-placement:not(.is-overview-sorting)>[data-dashboard-widget]:not([hidden]) {
grid-column: var(--overview-col, auto)/span var(--overview-cols, 1);
grid-row: var(--overview-row, auto)/span var(--overview-rows, 1);
}
/* Until the account's layout is applied the cards stay invisible, so the page
never shows the factory arrangement first and then jumps (no browser storage).
Meanwhile the panel's startup screen is shown in their place (see below). */
#panel-overview .dashboard-overview-grid.is-layout-pending {
position: relative;
min-height: 280px;
visibility: hidden;
}
/* The panel's startup screen (logo, spinner, "Loading RustProxy…") is shown in
place of the cards while the layout is pending: a zero-height block right
before the grid whose content overlays the still invisible grid, so the cards'
order and first-child styles are unaffected. */
#panel-overview .overview-layout-loading {
height: 0;
margin-inline: auto;
@@ -2311,8 +2277,6 @@ html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-sty
align-self: start !important;
}
/* A card taller than its content gives the extra height to its charts instead of
leaving an empty band at the bottom. */
#panel-overview .dashboard-overview-grid.has-row-units>.card[data-dashboard-widget]:not([hidden]) {
display: flex;
flex-direction: column;
@@ -2333,7 +2297,6 @@ html:is([data-corner-style=square], [data-corner-style=subtle], [data-corner-sty
flex: 1 0 auto;
}
/* With chart scales enabled the SVG sits in an axis host: grow the host and its SVG. */
#panel-overview .dashboard-overview-grid.has-row-units>.card[data-dashboard-widget] :is(.rp-chart-axis-host, .mini-live-chart>.rp-chart-axis-host) {
display: flex;
flex: 1 0 auto;
@@ -2672,7 +2635,6 @@ html[data-dashboard-density] #panel-overview .stat :is(.stat-chart-legend, .over
text-overflow: ellipsis;
white-space: nowrap;
}
/* WebSocket tunnels: "Established" sits to the right of the main value instead of a third text line. */
#panel-overview .stat .stat-value-row {
display: flex;
align-items: baseline;
@@ -2703,8 +2665,6 @@ html[data-dashboard-density] #panel-overview .stat :is(.stat-chart-legend, .over
font-weight: 450;
}
/* Compact stat cards: a card made only of title, value and one secondary line shows that line
beside the value (right-aligned) instead of on a line of its own. */
#panel-overview .stats-grid>.stat:is(:not(.stat-donut, .stat-meter, .stat-with-action, .stat-chart):not(:has(>:not(span, strong, small, .overview-inline-toolbar))):has(>small)) {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
@@ -2730,7 +2690,6 @@ html[data-dashboard-density] #panel-overview .stat :is(.stat-chart-legend, .over
overflow-wrap: anywhere;
}
/* Backends overview card (0.36.7): follows table density (global table rules), corner style tokens and interface colours */
#panel-overview .backend-overview-card.is-no-proxy,
#panel-overview #backend-diagnostics-card.is-no-proxy { display: none !important; }
.bo-heading { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; min-width: 0; }
@@ -2811,7 +2770,6 @@ html[data-table-density=compact] .bo-spark-bars { width: 70px; }
html[data-table-density=compact] .bo-chip { padding: 5px 9px; }
html[data-table-density=compact] .bo-meter { margin-top: 3px; }
/* Process overview card (process_diagnostics) */
[data-dashboard-widget="process_diagnostics"] { display: flex; flex-direction: column; min-height: 560px; }
.pr-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 0; }
.pr-chip { display: inline-flex; align-items: baseline; gap: 7px; margin: 0; padding: 3px 9px; border: 1px solid var(--line); border-radius: var(--rp-radius-control, 0); font: 11px var(--mono); }
@@ -2842,7 +2800,6 @@ html[data-table-density=ultra] .pr-chip { padding: 1px 7px; }
.pr-cols, .pr-charts { grid-template-columns: 1fr; }
}
/* Memory breakdown card (memory_breakdown) */
.mb-card { display: flex; flex-direction: column; }
.mb-card .mb-chips { margin-bottom: 12px; }
.mb-bar { display: flex; height: 22px; overflow: hidden; background: var(--line); border-radius: var(--rp-progress-radius, 0); gap: 1px; }
@@ -2874,10 +2831,8 @@ html[data-table-density=compact] .mb-item { padding-top: 5px; padding-bottom: 5p
html[data-table-density=ultra] .mb-item { padding-top: 3px; padding-bottom: 3px; }
html[data-table-density=ultra] .mb-bar { height: 16px; }
/* initial width of the cache outcome segments (set from JS via CSSOM; inline style attributes are blocked by the CSP) */
.cache-mix-hit, .cache-mix-miss, .cache-mix-bypass, .cache-mix-other { width: 0; }
/* Backends overview: trend charts in the requests, latency and traffic cells */
.bo-chartcell { display: flex; align-items: center; justify-content: flex-end; gap: 10px; font: 12px var(--mono); font-variant-numeric: tabular-nums; }
.bo-requests .bo-chartcell>span { min-width: 44px; text-align: right; }
.bo-spark-bars rect { fill: var(--accent); opacity: .75; }