Lots of frontend changes

This commit is contained in:
Andras Schmelczer 2026-02-07 19:10:53 +00:00
parent ec29631c44
commit 555ba7cf53
38 changed files with 1508 additions and 648 deletions

View file

@ -10,6 +10,8 @@ interface Segment {
interface StackedBarChartProps {
segments: Segment[];
total: number;
/** Optional custom colors keyed by segment name. Falls back to SEGMENT_COLORS. */
colorMap?: Record<string, string>;
}
/** Strip common suffixes/prefixes to produce short legend labels */
@ -26,7 +28,7 @@ function shortenLabel(name: string): string {
.trim();
}
export default function StackedBarChart({ segments, total }: StackedBarChartProps) {
export default function StackedBarChart({ segments, total, colorMap }: StackedBarChartProps) {
const sortedSegments = useMemo(
() => [...segments].sort((a, b) => b.value - a.value),
[segments]
@ -51,7 +53,7 @@ export default function StackedBarChart({ segments, total }: StackedBarChartProp
className="h-full"
style={{
width: `${pct}%`,
backgroundColor: SEGMENT_COLORS[i % SEGMENT_COLORS.length],
backgroundColor: colorMap?.[segment.name] ?? SEGMENT_COLORS[i % SEGMENT_COLORS.length],
}}
title={`${shortenLabel(segment.name)}: ${formatValue(segment.value)} (${pct.toFixed(1)}%)`}
/>
@ -66,7 +68,7 @@ export default function StackedBarChart({ segments, total }: StackedBarChartProp
<span
className="w-2 h-2 rounded-sm shrink-0"
style={{
backgroundColor: SEGMENT_COLORS[i % SEGMENT_COLORS.length],
backgroundColor: colorMap?.[segment.name] ?? SEGMENT_COLORS[i % SEGMENT_COLORS.length],
}}
/>
<span className="text-[10px] text-warm-600 dark:text-warm-400">