This is an automated email from the ASF dual-hosted git repository.
hgruszecki pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git
The following commit(s) were added to refs/heads/master by this push:
new f8566c546 feat(web): update benchmark dashboard dark mode to Iggy
brand colors (#2738)
f8566c546 is described below
commit f8566c546e561aaf94625a855ae93f210067ab3a
Author: Vishakha Agrawal <[email protected]>
AuthorDate: Wed Feb 18 19:50:25 2026 +0530
feat(web): update benchmark dashboard dark mode to Iggy brand colors (#2738)
Closes #2733.
---
core/bench/dashboard/frontend/assets/style.css | 93 +++++++++++++---------
.../frontend/src/components/chart/plot_trend.rs | 45 +++++++----
core/bench/report/src/plotting/chart.rs | 2 +-
3 files changed, 86 insertions(+), 54 deletions(-)
diff --git a/core/bench/dashboard/frontend/assets/style.css
b/core/bench/dashboard/frontend/assets/style.css
index 34796f4ff..327765fca 100644
--- a/core/bench/dashboard/frontend/assets/style.css
+++ b/core/bench/dashboard/frontend/assets/style.css
@@ -31,20 +31,21 @@
--color-shadow-light: rgba(0, 0, 0, 0.05);
--color-shadow-medium: rgba(0, 0, 0, 0.15);
- /* Colors - Dark Theme */
- --color-dark-background: #242424;
- --color-dark-background-elevated: #1a1a1a;
- --color-dark-sidebar: #2d2d2d;
- --color-dark-border: #404040;
- --color-dark-text: #ffffff;
- --color-dark-text-secondary: #aaaaaa;
- --color-dark-hover: #333333;
- --color-dark-active: #1a1a1a;
- --color-dark-input: #2a2a2a;
+ /* Colors - Dark Theme - Iggy Brand */
+ --color-dark-background: #070C18; /* Navy */
+ --color-dark-background-elevated: #132F4C; /* Lighter Navy */
+ --color-dark-sidebar: #101318; /* Navy sidebar */
+ --color-dark-border: #2C323A; /* Darker border for
contrast */
+ --color-dark-text: #F5F5F5; /* Cream text */
+ --color-dark-text-secondary: #E0E0E0;
+ --color-dark-hover: #0b1428;
+ --color-dark-active: #FF9305;
+ --color-dark-input: #151b28;
+ --color-dark-accent: #FF9305;
/* Additional Dark Theme Variables */
- --color-dark-tooltip-background: #2a2a2a;
- --color-dark-select-arrow: #ffffff;
+ --color-dark-tooltip-background: #313338;
+ --color-dark-select-arrow: #F5F5F5;
/* Spacing */
--spacing-xs: 4px;
@@ -404,11 +405,13 @@ body.dark select option {
.dark .download-button:hover,
.dark .theme-toggle:hover {
background-color: var(--color-dark-hover);
+ border-color: var(--color-dark-accent);
}
.dark .icon-button.active {
- background-color: var(--color-dark-active);
- border-color: var(--color-dark-border);
+ background-color: var(--color-dark-hover);
+ border-color: var(--color-dark-accent);
+ color: var(--color-dark-accent);
}
.controls {
@@ -550,13 +553,15 @@ body.dark select option {
}
.dark .copy-button {
- background: var(--color-dark-active);
- color: var(--color-dark-text);
- border-color: var(--color-dark-border);
+ background: var(--color-dark-hover);
+ color: var(--color-dark-accent);
+ border-color: var(--color-dark-accent);
}
.dark .copy-button:hover {
- background: var(--color-dark-hover);
+ background: var(--color-dark-accent);
+ color: var(--color-dark-text);
+ border-color: var(--color-dark-accent);
}
.copy-notification {
@@ -708,8 +713,9 @@ body.dark .segment:hover:not(.active) {
}
body.dark .segment.active {
- background-color: var(--color-dark-active);
- color: var(--color-dark-text);
+ background-color: var(--color-dark-accent);
+ color: var(--color-dark-background);
+ font-weight: 500;
}
.chart-container {
@@ -931,12 +937,13 @@ body.dark .footer .gitref {
.dark .tab-button:hover {
background-color: var(--color-dark-hover);
- color: var(--color-dark-text);
+ color: var(--color-dark-accent);
}
.dark .tab-button.active {
- background-color: var(--color-dark-active);
- color: var(--color-dark-text);
+ background-color: transparent;
+ color: var(--color-dark-accent);
+ border-bottom: 2px solid var(--color-dark-accent);
}
.dark .tab-list {
@@ -1011,13 +1018,14 @@ body.dark .footer .gitref {
.dark .benchmark-option:hover:not(.inactive) {
background-color: var(--color-dark-hover);
- border-color: var(--color-dark-text-secondary);
+ border-color: var(--color-dark-accent);
}
.dark .benchmark-option.active {
- background-color: var(--color-dark-active);
- color: var(--color-dark-text);
- border-left: 4px solid var(--color-dark-text);
+ background-color: var(--color-dark-hover);
+ color: var(--color-dark-accent);
+ border: 1px solid var(--color-dark-accent);
+ border-left: 4px solid var(--color-dark-accent);
}
.benchmark-list-container {
@@ -1149,11 +1157,12 @@ span.benchmark-list-item-dot {
.dark .benchmark-list-item:hover {
background-color: var(--color-dark-hover);
+ border-left-color: var(--color-dark-accent);
}
.dark .benchmark-list-item.active {
- background-color: var(--color-dark-active);
- border-left: 4px solid var(--color-dark-text);
+ background-color: var(--color-dark-hover);
+ border-left: 4px solid var(--color-dark-accent);
padding-left: calc(var(--spacing-lg) - 4px);
}
@@ -1224,11 +1233,14 @@ span.benchmark-list-item-dot {
.dark .measurement-button:hover {
background-color: var(--color-dark-hover);
+ border-color: var(--color-dark-accent);
}
.dark .measurement-button.active {
- background-color: var(--color-dark-active);
- border-color: var(--color-dark-border);
+ background-color: var(--color-dark-accent);
+ color: var(--color-dark-background);
+ border-color: var(--color-dark-accent);
+ font-weight: 500;
}
.server-stats-button {
@@ -1264,7 +1276,7 @@ span.benchmark-list-item-dot {
.dark .server-stats-button:hover:not(:disabled) {
background-color: var(--color-dark-hover);
- border-color: var(--color-dark-text-secondary);
+ border-color: var(--color-dark-accent);
}
.dark .server-stats-button:disabled {
@@ -1583,8 +1595,8 @@ body.dark .benchmark-list-item-metric.message-throughput {
/* Dark theme adjustments for recent benchmarks */
.dark .recent-benchmark-item.active {
- border-left-color: var(--color-primary);
- background-color: var(--color-dark-active);
+ border-left-color: var(--color-dark-accent);
+ background-color: var(--color-dark-hover);
}
.dark .benchmark-list-item-title {
@@ -1643,6 +1655,7 @@ body.dark .benchmark-list-item-metric.message-throughput {
.dark .benchmark-card:hover {
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
+ border-color: var(--color-dark-accent);
}
.dark .card-header {
@@ -1666,19 +1679,21 @@ body.dark
.benchmark-list-item-metric.message-throughput {
}
.dark .view-details-button {
- background-color: var(--color-dark-sidebar);
+ background-color: var(--color-dark-hover);
border-color: var(--color-dark-border);
color: var(--color-dark-text);
}
.dark .view-details-button:hover {
- background-color: var(--color-dark-hover);
+ background-color: var(--color-dark-border);
+ border-color: var(--color-dark-accent);
+ color: var(--color-dark-accent);
}
.dark .error-message button {
- background-color: var(--color-dark-sidebar);
- border-color: var(--color-dark-border);
- color: var(--color-dark-text);
+ background-color: var(--color-dark-hover);
+ border-color: var(--color-dark-accent);
+ color: var(--color-dark-accent);
}
.dark .sidebar {
diff --git a/core/bench/dashboard/frontend/src/components/chart/plot_trend.rs
b/core/bench/dashboard/frontend/src/components/chart/plot_trend.rs
index dc51e171c..b8aea766a 100644
--- a/core/bench/dashboard/frontend/src/components/chart/plot_trend.rs
+++ b/core/bench/dashboard/frontend/src/components/chart/plot_trend.rs
@@ -98,6 +98,17 @@ fn create_latency_trend_chart(data: &[BenchmarkReportLight],
is_dark: bool) -> C
let mut producing_consumer_p99_latencies = Vec::new();
let mut producing_consumer_p999_latencies = Vec::new();
+ // Theme-aware palette: prefer Iggy orange first on dark theme
+ let palette: [&str; 8] = if is_dark {
+ [
+ "#FF9800", "#73c0de", "#91cc75", "#ee6666", "#5470c6", "#3ba272",
"#fac858", "#ea7ccc",
+ ]
+ } else {
+ [
+ "#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272",
"#fc8452", "#ea7ccc",
+ ]
+ };
+
let mut chart = IggyChart::new(&title, &subtext, is_dark, true)
.with_category_x_axis("Version", gitrefs)
.with_y_axis("Latency [ms]");
@@ -150,25 +161,25 @@ fn create_latency_trend_chart(data:
&[BenchmarkReportLight], is_dark: bool) -> C
"Producer Avg Latency",
producer_avg_latencies,
Symbol::Circle,
- "#5470c6",
+ palette[0],
)
.add_series(
"Producer P95 Latency",
producer_p95_latencies,
Symbol::Triangle,
- "#91cc75",
+ palette[1],
)
.add_series(
"Producer P99 Latency",
producer_p99_latencies,
Symbol::Diamond,
- "#fac858",
+ palette[2],
)
.add_series(
"Producer P999 Latency",
producer_p999_latencies,
Symbol::Rect,
- "#ee6666",
+ palette[3],
)
} else {
chart
@@ -180,25 +191,25 @@ fn create_latency_trend_chart(data:
&[BenchmarkReportLight], is_dark: bool) -> C
"Consumer Avg Latency",
consumer_avg_latencies,
Symbol::Circle,
- "#73c0de",
+ palette[4],
)
.add_series(
"Consumer P95 Latency",
consumer_p95_latencies,
Symbol::Triangle,
- "#3ba272",
+ palette[5],
)
.add_series(
"Consumer P99 Latency",
consumer_p99_latencies,
Symbol::Diamond,
- "#fc8452",
+ palette[6],
)
.add_series(
"Consumer P999 Latency",
consumer_p999_latencies,
Symbol::Rect,
- "#ea7ccc",
+ palette[7],
)
} else {
chart
@@ -210,25 +221,25 @@ fn create_latency_trend_chart(data:
&[BenchmarkReportLight], is_dark: bool) -> C
"Producing Consumers Avg Latency",
producing_consumer_avg_latencies,
Symbol::Circle,
- "#73c0de",
+ palette[4],
)
.add_series(
"Producing Consumers P95 Latency",
producing_consumer_p95_latencies,
Symbol::Triangle,
- "#3ba272",
+ palette[5],
)
.add_series(
"Producing Consumers P99 Latency",
producing_consumer_p99_latencies,
Symbol::Diamond,
- "#fc8452",
+ palette[6],
)
.add_series(
"Producing Consumers P999 Latency",
producing_consumer_p999_latencies,
Symbol::Rect,
- "#ea7ccc",
+ palette[7],
)
} else {
chart
@@ -262,6 +273,12 @@ fn create_throughput_trend_chart(data:
&[BenchmarkReportLight], is_dark: bool) -
.collect();
let title = trend_chart_title(&data[0].params, ChartKind::Throughput);
+ let palette_throughput: [&str; 2] = if is_dark {
+ ["#FF9800", "#73c0de"]
+ } else {
+ ["#5470c6", "#91cc75"]
+ };
+
IggyChart::new(&title, &subtext, is_dark, true)
.with_category_x_axis("Version", gitrefs)
.with_dual_y_axis("Throughput [MB/s]", "Throughput [msg/s]")
@@ -269,14 +286,14 @@ fn create_throughput_trend_chart(data:
&[BenchmarkReportLight], is_dark: bool) -
"Average Throughput [MB/s]",
throughput_mb,
Symbol::Circle,
- "#5470c6",
+ palette_throughput[0],
0,
)
.add_dual_series(
"Average Throughput [msg/s]",
throughput_msg,
Symbol::Triangle,
- "#91cc75",
+ palette_throughput[1],
1,
)
.inner
diff --git a/core/bench/report/src/plotting/chart.rs
b/core/bench/report/src/plotting/chart.rs
index a19651640..bb6e5ff7e 100644
--- a/core/bench/report/src/plotting/chart.rs
+++ b/core/bench/report/src/plotting/chart.rs
@@ -101,7 +101,7 @@ impl IggyChart {
);
let chart = if dark {
- chart.background_color("#242424")
+ chart.background_color("#070C18")
} else {
chart
};